From fee2c1c0d0d03c4ff0a6a207b0a5e0c22bb7b13a Mon Sep 17 00:00:00 2001 From: Yassine Doghri Date: Tue, 23 Nov 2021 11:54:34 +0000 Subject: [PATCH] feat(pwa): add service-worker + webmanifest for each podcasts to have them install on devices - configure service-worker using vite-plugin-pwa - refactor Image entity to generate images of different types based on size config - add requirement for webp library for php gd to generate webp images for instance - add action to regenerate all instance images for eventual Images config changes - enhance google lighthouse metrics for pwa --- Dockerfile | 3 +- INSTALL.md | 3 +- app/Config/Images.php | 103 +- app/Config/Routes.php | 4 + app/Controllers/EpisodeController.php | 8 +- app/Controllers/WebmanifestController.php | 75 +- app/Entities/Actor.php | 18 + app/Entities/Episode.php | 4 +- app/Entities/Image.php | 49 +- app/Entities/Person.php | 6 +- app/Entities/Podcast.php | 8 +- app/Helpers/seo_helper.php | 12 +- app/Models/PodcastModel.php | 4 +- app/Resources/icons/refresh.svg | 6 + composer.lock | 6 +- docs/setup-development.md | 4 +- modules/Admin/Config/Routes.php | 4 + .../Admin/Controllers/SettingsController.php | 63 +- modules/Admin/Language/en/Navigation.php | 1 + modules/Admin/Language/en/Settings.php | 12 +- modules/Admin/Language/fr/Navigation.php | 1 + modules/Admin/Language/fr/Settings.php | 13 +- package-lock.json | 4980 ++++++++++++++++- package.json | 7 +- .../media/castopod-avatar-default_medium.jpg | Bin 22945 -> 0 bytes .../media/castopod-avatar-default_medium.webp | Bin 0 -> 10163 bytes .../castopod-avatar-default_thumbnail.jpg | Bin 11117 -> 0 bytes .../castopod-avatar-default_thumbnail.webp | Bin 0 -> 4879 bytes .../media/castopod-avatar-default_tiny.webp | Bin 0 -> 1454 bytes public/media/castopod-banner-default.jpg | Bin 13020 -> 0 bytes ...=> castopod-banner-default_federation.jpg} | Bin .../media/castopod-banner-default_medium.jpg | Bin 6919 -> 0 bytes .../media/castopod-banner-default_medium.webp | Bin 0 -> 6967 bytes .../media/castopod-banner-default_small.jpg | Bin 1748 -> 0 bytes .../media/castopod-banner-default_small.webp | Bin 0 -> 1767 bytes tailwind.config.js | 1 + themes/cp_admin/_partials/_nav_header.php | 4 +- themes/cp_admin/episode/_card.php | 2 +- themes/cp_admin/episode/_sidebar.php | 4 +- themes/cp_admin/episode/list.php | 2 +- themes/cp_admin/episode/persons.php | 2 +- themes/cp_admin/episode/publish.php | 4 +- themes/cp_admin/episode/publish_edit.php | 4 +- themes/cp_admin/person/_card.php | 2 +- themes/cp_admin/person/view.php | 2 +- themes/cp_admin/podcast/_card.php | 2 +- themes/cp_admin/podcast/_sidebar.php | 2 +- themes/cp_admin/podcast/edit.php | 2 +- themes/cp_admin/podcast/persons.php | 2 +- themes/cp_admin/settings/general.php | 35 +- themes/cp_app/_admin_navbar.php | 2 +- themes/cp_app/_persons_modal.php | 2 +- themes/cp_app/embed.php | 4 +- themes/cp_app/episode/_layout.php | 16 +- themes/cp_app/episode/_partials/card.php | 2 +- themes/cp_app/episode/_partials/comment.php | 4 +- .../cp_app/episode/_partials/comment_card.php | 2 +- .../episode/_partials/comment_reply.php | 2 +- .../_partials/comment_with_replies.php | 2 +- .../cp_app/episode/_partials/navigation.php | 2 +- .../cp_app/episode/_partials/preview_card.php | 2 +- themes/cp_app/episode/activity.php | 2 +- themes/cp_app/episode/comments.php | 2 +- themes/cp_app/home.php | 12 +- themes/cp_app/pages/_layout.php | 10 + themes/cp_app/pages/credits.php | 2 +- themes/cp_app/pages/map.php | 10 + themes/cp_app/podcast/_layout.php | 14 +- .../cp_app/podcast/_partials/navigation.php | 2 +- themes/cp_app/podcast/about.php | 2 +- themes/cp_app/podcast/activity.php | 2 +- themes/cp_app/podcast/follow.php | 18 +- themes/cp_app/post/_partials/card.php | 2 +- .../post/_partials/post_with_replies.php | 2 +- themes/cp_app/post/_partials/preview_card.php | 4 +- themes/cp_app/post/_partials/reblog.php | 2 +- themes/cp_app/post/_partials/reply.php | 2 +- themes/cp_app/post/remote_action.php | 12 +- themes/cp_install/_layout.php | 1 - vite.config.ts | 9 +- 80 files changed, 5419 insertions(+), 195 deletions(-) create mode 100644 app/Resources/icons/refresh.svg delete mode 100644 public/media/castopod-avatar-default_medium.jpg create mode 100644 public/media/castopod-avatar-default_medium.webp delete mode 100644 public/media/castopod-avatar-default_thumbnail.jpg create mode 100644 public/media/castopod-avatar-default_thumbnail.webp create mode 100644 public/media/castopod-avatar-default_tiny.webp delete mode 100644 public/media/castopod-banner-default.jpg rename public/media/{castopod-banner-default_large.jpg => castopod-banner-default_federation.jpg} (100%) delete mode 100644 public/media/castopod-banner-default_medium.jpg create mode 100644 public/media/castopod-banner-default_medium.webp delete mode 100644 public/media/castopod-banner-default_small.jpg create mode 100644 public/media/castopod-banner-default_small.webp diff --git a/Dockerfile b/Dockerfile index 9eb3536d..21a0571b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,6 +37,7 @@ RUN apt-get update \ # https://github.com/mlocati/docker-php-extension-installer (included in php's docker image) libicu-dev \ libpng-dev \ + libwebp-dev \ libjpeg-dev \ zlib1g-dev \ libzip-dev \ @@ -44,7 +45,7 @@ RUN apt-get update \ && docker-php-ext-install intl \ && docker-php-ext-install zip \ # gd for image processing - && docker-php-ext-configure gd --with-jpeg \ + && docker-php-ext-configure gd --with-webp --with-jpeg \ && docker-php-ext-install gd \ # redis extension for cache && pecl install -o -f redis \ diff --git a/INSTALL.md b/INSTALL.md index 7ed17748..639961c4 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -69,7 +69,8 @@ PHP version 8.0 or higher is required, with the following extensions installed: - [intl](https://php.net/manual/en/intl.requirements.php) - [libcurl](https://php.net/manual/en/curl.requirements.php) - [mbstring](https://php.net/manual/en/mbstring.installation.php) -- [gd](https://www.php.net/manual/en/image.installation.php) +- [gd](https://www.php.net/manual/en/image.installation.php) with **JPEG**, + **PNG** and **WEBP** libraries. Additionally, make sure that the following extensions are enabled in your PHP: diff --git a/app/Config/Images.php b/app/Config/Images.php index 680a1950..cb8c4e59 100644 --- a/app/Config/Images.php +++ b/app/Config/Images.php @@ -47,15 +47,57 @@ class Images extends BaseConfig * * Array values are as follows: 'name' => [width, height] * - * @var array + * @var array> */ public array $podcastCoverSizes = [ - 'tiny' => [40, 40], - 'thumbnail' => [150, 150], - 'medium' => [320, 320], - 'large' => [1024, 1024], - 'feed' => [1400, 1400], - 'id3' => [500, 500], + 'tiny' => [ + 'width' => 40, + 'height' => 40, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'thumbnail' => [ + 'width' => 150, + 'height' => 150, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'medium' => [ + 'width' => 320, + 'height' => 320, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'large' => [ + 'width' => 1024, + 'height' => 1024, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'feed' => [ + 'width' => 1400, + 'height' => 1400, + ], + 'id3' => [ + 'width' => 500, + 'height' => 500, + ], + 'federation' => [ + 'width' => 400, + 'height' => 400, + ], + 'webmanifest192' => [ + 'width' => 192, + 'height' => 192, + 'mimetype' => 'image/png', + 'extension' => 'png', + ], + 'webmanifest512' => [ + 'width' => 512, + 'height' => 512, + 'mimetype' => 'image/png', + 'extension' => 'png', + ], ]; /** @@ -63,14 +105,25 @@ class Images extends BaseConfig * * Uploaded podcast header covers are of 3:1 ratio * - * Array values are as follows: 'name' => [width, height] - * - * @var array + * @var array> */ public array $podcastBannerSizes = [ - 'small' => [320, 128], - 'medium' => [960, 320], - 'large' => [1500, 500], + 'small' => [ + 'width' => 320, + 'height' => 128, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'medium' => [ + 'width' => 960, + 'height' => 320, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'federation' => [ + 'width' => 1500, + 'height' => 500, + ], ]; public string $podcastBannerDefaultPath = 'castopod-banner-default.jpg'; @@ -84,11 +137,27 @@ class Images extends BaseConfig * * Array values are as follows: 'name' => [width, height] * - * @var array + * @var array> */ public array $personAvatarSizes = [ - 'tiny' => [40, 40], - 'thumbnail' => [150, 150], - 'medium' => [320, 320], + 'tiny' => [ + 'width' => 40, + 'height' => 40, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'thumbnail' => [ + 'width' => 150, + 'height' => 150, + 'mimetype' => 'image/webp', + 'extension' => 'webp', + ], + 'medium' => [ + 'width' => 320, + 'height' => 320, + 'mimetype' => + 'image/webp', + 'extension' => 'webp', + ], ]; } diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 161c02fa..27fe9fa9 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -65,6 +65,10 @@ $routes->group('@(:podcastHandle)', function ($routes): void { $routes->get('/', 'PodcastController::activity/$1', [ 'as' => 'podcast-activity', ]); + $routes->get('manifest.webmanifest', 'WebmanifestController::podcastManifest/$1', [ + 'as' => 'podcast-webmanifest', + ]); + // override default Fediverse Library's actor route $routes->options('/', 'ActivityPubController::preflight'); $routes->get('/', 'PodcastController::activity/$1', [ diff --git a/app/Controllers/EpisodeController.php b/app/Controllers/EpisodeController.php index e79b9be5..fd09ffb6 100644 --- a/app/Controllers/EpisodeController.php +++ b/app/Controllers/EpisodeController.php @@ -204,9 +204,9 @@ class EpisodeController extends BaseController 'height' => 144, 'thumbnail_url' => $this->episode->cover->large_url, 'thumbnail_width' => config('Images') - ->podcastCoverSizes['large'][0], + ->podcastCoverSizes['large']['width'], 'thumbnail_height' => config('Images') - ->podcastCoverSizes['large'][1], + ->podcastCoverSizes['large']['height'], ]); } @@ -222,8 +222,8 @@ class EpisodeController extends BaseController $oembed->addChild('author_name', $this->podcast->title); $oembed->addChild('author_url', $this->podcast->link); $oembed->addChild('thumbnail', $this->episode->cover->large_url); - $oembed->addChild('thumbnail_width', (string) config('Images')->podcastCoverSizes['large'][0]); - $oembed->addChild('thumbnail_height', (string) config('Images')->podcastCoverSizes['large'][1]); + $oembed->addChild('thumbnail_width', (string) config('Images')->podcastCoverSizes['large']['width']); + $oembed->addChild('thumbnail_height', (string) config('Images')->podcastCoverSizes['large']['height']); $oembed->addChild( 'html', htmlentities( diff --git a/app/Controllers/WebmanifestController.php b/app/Controllers/WebmanifestController.php index dd320e44..4e98aecc 100644 --- a/app/Controllers/WebmanifestController.php +++ b/app/Controllers/WebmanifestController.php @@ -10,11 +10,44 @@ declare(strict_types=1); namespace App\Controllers; +use App\Models\PodcastModel; use CodeIgniter\Controller; +use CodeIgniter\Exceptions\PageNotFoundException; use CodeIgniter\HTTP\ResponseInterface; class WebmanifestController extends Controller { + /** + * @var array + */ + public const THEME_COLORS = [ + 'pine' => [ + 'theme' => '#009486', + 'background' => '#F0F9F8', + ], + 'lake' => [ + 'theme' => '#00ACE0', + 'background' => '#F0F7F9', + ], + 'jacaranda' => [ + 'theme' => '#562CDD', + 'background' => '#F2F0F9', + ], + 'crimson' => [ + 'theme' => '#F24562', + 'background' => '#F9F0F2', + ], + 'amber' => [ + 'theme' => '#FF6224', + 'background' => '#F9F3F0', + ], + 'onyx' => [ + 'theme' => + '#040406', + 'background' => '#F3F3F7', + ], + ]; + public function index(): ResponseInterface { $webmanifest = [ @@ -22,8 +55,13 @@ class WebmanifestController extends Controller ->get('App.siteName'), 'description' => service('settings') ->get('App.siteDescription'), + 'lang' => service('request') + ->getLocale(), + 'start_url' => base_url(), 'display' => 'minimal-ui', - 'theme_color' => '#009486', + 'orientation' => 'portrait', + 'theme_color' => self::THEME_COLORS[service('settings')->get('App.theme')]['theme'], + 'background_color' => self::THEME_COLORS[service('settings')->get('App.theme')]['background'], 'icons' => [ [ 'src' => service('settings') @@ -42,4 +80,39 @@ class WebmanifestController extends Controller return $this->response->setJSON($webmanifest); } + + public function podcastManifest(string $podcastHandle): ResponseInterface + { + if ( + ($podcast = (new PodcastModel())->getPodcastByHandle($podcastHandle)) === null + ) { + throw PageNotFoundException::forPageNotFound(); + } + + $webmanifest = [ + 'name' => $podcast->title, + 'short_name' => '@' . $podcast->handle, + 'description' => $podcast->description, + 'lang' => $podcast->language_code, + 'start_url' => $podcast->link, + 'display' => 'minimal-ui', + 'orientation' => 'portrait', + 'theme_color' => self::THEME_COLORS[service('settings')->get('App.theme')]['theme'], + 'background_color' => self::THEME_COLORS[service('settings')->get('App.theme')]['background'], + 'icons' => [ + [ + 'src' => $podcast->cover->webmanifest192_url, + 'type' => $podcast->cover->webmanifest192_mimetype, + 'sizes' => '192x192', + ], + [ + 'src' => $podcast->cover->webmanifest512_url, + 'type' => $podcast->cover->webmanifest512_mimetype, + 'sizes' => '512x512', + ], + ], + ]; + + return $this->response->setJSON($webmanifest); + } } diff --git a/app/Entities/Actor.php b/app/Entities/Actor.php index 7b76b509..c9117937 100644 --- a/app/Entities/Actor.php +++ b/app/Entities/Actor.php @@ -41,4 +41,22 @@ class Actor extends FediverseActor return $this->podcast; } + + public function getAvatarImageUrl(): string + { + if ($this->podcast !== null) { + return $this->podcast->cover->thumbnail_url; + } + + return $this->attributes['avatar_image_url']; + } + + public function getAvatarImageMimetype(): string + { + if ($this->podcast !== null) { + return $this->podcast->cover->thumbnail_mimetype; + } + + return $this->attributes['avatar_image_mimetype']; + } } diff --git a/app/Entities/Episode.php b/app/Entities/Episode.php index fdc16d04..711e2bc7 100644 --- a/app/Entities/Episode.php +++ b/app/Entities/Episode.php @@ -200,7 +200,9 @@ class Episode extends Entity public function getCover(): Image { if ($coverPath = $this->attributes['cover_path']) { - return new Image(null, $coverPath, $this->attributes['cover_mimetype']); + return new Image(null, $coverPath, $this->attributes['cover_mimetype'], config( + 'Images' + )->podcastCoverSizes); } return $this->getPodcast() diff --git a/app/Entities/Image.php b/app/Entities/Image.php index 78740d0c..be46133f 100644 --- a/app/Entities/Image.php +++ b/app/Entities/Image.php @@ -28,7 +28,7 @@ class Image extends Entity { protected Images $config; - protected ?File $file = null; + protected File $file; protected string $dirname; @@ -38,7 +38,16 @@ class Image extends Entity protected string $mimetype; - public function __construct(?File $file, string $path = '', string $mimetype = '') + /** + * @var array> + */ + protected array $sizes = []; + + /** + * @param array> $sizes + * @param File $file + */ + public function __construct(?File $file, string $path = '', string $mimetype = '', array $sizes = []) { if ($file === null && $path === '') { throw new RuntimeException('File or path must be set to create an Image.'); @@ -63,11 +72,17 @@ class Image extends Entity ] = pathinfo($path); } + if ($file === null) { + helper('media'); + $file = new File(media_path($path)); + } + $this->file = $file; $this->dirname = $dirname; $this->filename = $filename; $this->extension = $extension; $this->mimetype = $mimetype; + $this->sizes = $sizes; } public function __get($property) @@ -91,7 +106,24 @@ class Image extends Entity if ($this->dirname !== '.') { $path .= $this->dirname . '/'; } - $path .= $this->filename . $fileSuffix . '.' . $this->extension; + $path .= $this->filename . $fileSuffix; + + $extension = '.' . $this->extension; + $mimetype = $this->mimetype; + if ($fileSuffix !== '') { + $sizeName = substr($fileSuffix, 1); + if (array_key_exists('extension', $this->sizes[$sizeName])) { + $extension = '.' . $this->sizes[$sizeName]['extension']; + } + if (array_key_exists('mimetype', $this->sizes[$sizeName])) { + $mimetype = $this->sizes[$sizeName]['mimetype']; + } + } + $path .= $extension; + + if (str_ends_with($property, 'mimetype')) { + return $mimetype; + } if (str_ends_with($property, 'url')) { helper('media'); @@ -111,15 +143,11 @@ class Image extends Entity public function getFile(): File { - if ($this->file === null) { - $this->file = new File($this->path); - } - return $this->file; } /** - * @param array $sizes + * @param array> $sizes */ public function saveImage(array $sizes, string $dirname, string $filename): void { @@ -127,6 +155,7 @@ class Image extends Entity $this->dirname = $dirname; $this->filename = $filename; + $this->sizes = $sizes; save_media($this->file, $this->dirname, $this->filename); @@ -136,8 +165,8 @@ class Image extends Entity $pathProperty = $name . '_path'; $imageService ->withFile(media_path($this->path)) - ->resize($size[0], $size[1]) - ->save(media_path($this->{$pathProperty})); + ->resize($size['width'], $size['height']); + $imageService->save(media_path($this->{$pathProperty})); } } diff --git a/app/Entities/Person.php b/app/Entities/Person.php index f860ecec..3204053a 100644 --- a/app/Entities/Person.php +++ b/app/Entities/Person.php @@ -77,10 +77,12 @@ class Person extends Entity public function getAvatar(): Image { if ($this->attributes['avatar_path'] === null) { - return new Image(null, '/castopod-avatar-default.jpg', 'image/jpeg'); + return new Image(null, '/castopod-avatar-default.jpg', 'image/jpeg', config('Images')->personAvatarSizes); } - return new Image(null, $this->attributes['avatar_path'], $this->attributes['avatar_mimetype']); + return new Image(null, $this->attributes['avatar_path'], $this->attributes['avatar_mimetype'], config( + 'Images' + )->personAvatarSizes); } /** diff --git a/app/Entities/Podcast.php b/app/Entities/Podcast.php index 35c35093..16d00f64 100644 --- a/app/Entities/Podcast.php +++ b/app/Entities/Podcast.php @@ -211,7 +211,7 @@ class Podcast extends Entity public function getCover(): Image { - return new Image(null, $this->cover_path, $this->cover_mimetype); + return new Image(null, $this->cover_path, $this->cover_mimetype, config('Images')->podcastCoverSizes); } /** @@ -248,11 +248,13 @@ class Podcast extends Entity config('Images') ->podcastBannerDefaultPath, config('Images') - ->podcastBannerDefaultMimeType + ->podcastBannerDefaultMimeType, + config('Images') + ->podcastBannerSizes ); } - return new Image(null, $this->banner_path, $this->banner_mimetype); + return new Image(null, $this->banner_path, $this->banner_mimetype, config('Images') ->podcastBannerSizes); } public function getLink(): string diff --git a/app/Helpers/seo_helper.php b/app/Helpers/seo_helper.php index 36edf1cb..c392d0d5 100644 --- a/app/Helpers/seo_helper.php +++ b/app/Helpers/seo_helper.php @@ -24,7 +24,7 @@ if (! function_exists('get_podcast_metatags')) { $schema = new Schema( new Thing('PodcastSeries', [ 'name' => $podcast->title, - 'url' => url_to('podcast-activity', $podcast->handle), + 'url' => $podcast->link, 'image' => $podcast->cover->feed_url, 'description' => $podcast->description, 'webFeed' => $podcast->feed_url, @@ -41,8 +41,8 @@ if (! function_exists('get_podcast_metatags')) { ->description(htmlspecialchars($podcast->description)) ->image((string) $podcast->cover->large_url) ->canonical((string) current_url()) - ->og('image:width', (string) config('Images')->podcastCoverSizes['large'][0]) - ->og('image:height', (string) config('Images')->podcastCoverSizes['large'][1]) + ->og('image:width', (string) config('Images')->podcastCoverSizes['large']['width']) + ->og('image:height', (string) config('Images')->podcastCoverSizes['large']['height']) ->og('locale', $podcast->language_code) ->og('site_name', service('settings')->get('App.siteName')); @@ -70,7 +70,7 @@ if (! function_exists('get_episode_metatags')) { ]), 'partOfSeries' => new Thing('PodcastSeries', [ 'name' => $episode->podcast->title, - 'url' => url_to('podcast-activity', $episode->podcast->handle), + 'url' => $episode->podcast->link, ]), ]) ); @@ -83,8 +83,8 @@ if (! function_exists('get_episode_metatags')) { ->image((string) $episode->cover->large_url, 'player') ->canonical($episode->link) ->og('site_name', service('settings')->get('App.siteName')) - ->og('image:width', (string) config('Images')->podcastCoverSizes['large'][0]) - ->og('image:height', (string) config('Images')->podcastCoverSizes['large'][1]) + ->og('image:width', (string) config('Images')->podcastCoverSizes['large']['width']) + ->og('image:height', (string) config('Images')->podcastCoverSizes['large']['height']) ->og('locale', $episode->podcast->language_code) ->og('audio', $episode->audio_file_opengraph_url) ->og('audio:type', $episode->audio_file_mimetype) diff --git a/app/Models/PodcastModel.php b/app/Models/PodcastModel.php index a342a6f9..aef6207c 100644 --- a/app/Models/PodcastModel.php +++ b/app/Models/PodcastModel.php @@ -485,9 +485,9 @@ class PodcastModel extends Model // update values $actor->display_name = $podcast->title; $actor->summary = $podcast->description_html; - $actor->avatar_image_url = $podcast->cover->thumbnail_url; + $actor->avatar_image_url = $podcast->cover->federation_url; $actor->avatar_image_mimetype = $podcast->cover->mimetype; - $actor->cover_image_url = $podcast->banner->large_url; + $actor->cover_image_url = $podcast->banner->federation_url; $actor->cover_image_mimetype = $podcast->banner->mimetype; if ($actor->hasChanged()) { diff --git a/app/Resources/icons/refresh.svg b/app/Resources/icons/refresh.svg new file mode 100644 index 00000000..08b0dba0 --- /dev/null +++ b/app/Resources/icons/refresh.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/composer.lock b/composer.lock index fabdde83..3b821cb0 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c0a25c3d11c806b4bc62eafb22902bc8", + "content-hash": "afb6585b90ed08cc8a257f346ab1c416", "packages": [ { "name": "brick/math", @@ -603,8 +603,8 @@ "php": ">=5.4.0" }, "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.0", - "phpunit/phpunit": "^4.8 || ^5.0 || ^6.1 || ^7.5 || ^8.5" + "jakub-onderka/php-parallel-lint": "^0.9 || ^1.0", + "phpunit/phpunit": "^4.8|^5.0" }, "suggest": { "ext-SimpleXML": "SimpleXML extension is required to analyze RIFF/WAV/BWF audio files (also requires `ext-libxml`).", diff --git a/docs/setup-development.md b/docs/setup-development.md index e021a6a9..cfd21709 100644 --- a/docs/setup-development.md +++ b/docs/setup-development.md @@ -153,8 +153,8 @@ You do not wish to use the VSCode devcontainer? No problem! > The `docker-compose up -d` command will boot 4 containers in the > background: > - > - `castopod-host_app`: a php based container with CodeIgniter4 requirements - > installed + > - `castopod-host_app`: a php based container with Castopod Host + > requirements installed > - `castopod-host_redis`: a [redis](https://redis.io/) database to handle > queries and pages caching > - `castopod-host_mariadb`: a [mariadb](https://mariadb.org/) server for diff --git a/modules/Admin/Config/Routes.php b/modules/Admin/Config/Routes.php index 7f2435b0..8f6e0e40 100644 --- a/modules/Admin/Config/Routes.php +++ b/modules/Admin/Config/Routes.php @@ -31,6 +31,10 @@ $routes->group( 'as' => 'settings-instance-delete-icon', 'filter' => 'permission:settings-manage', ]); + $routes->post('instance-images-regenerate', 'SettingsController::regenerateImages', [ + 'as' => 'settings-images-regenerate', + 'filter' => 'permission:settings-manage', + ]); $routes->get('theme', 'SettingsController::theme', [ 'as' => 'settings-theme', 'filter' => 'permission:settings-manage', diff --git a/modules/Admin/Controllers/SettingsController.php b/modules/Admin/Controllers/SettingsController.php index d9e9a531..be84ea3d 100644 --- a/modules/Admin/Controllers/SettingsController.php +++ b/modules/Admin/Controllers/SettingsController.php @@ -10,6 +10,8 @@ declare(strict_types=1); namespace Modules\Admin\Controllers; +use App\Models\PersonModel; +use App\Models\PodcastModel; use CodeIgniter\HTTP\RedirectResponse; use PHP_ICO; @@ -75,20 +77,20 @@ class SettingsController extends BaseController service('image') ->withFile(ROOTPATH . 'public/media/site/icon.png') ->resize($size, $size) - ->save(ROOTPATH . "public/media/site/icon-{$size}.{$randomHash}.png"); + ->save(media_path("/site/icon-{$size}.{$randomHash}.png")); } service('settings') ->set('App.siteIcon', [ - 'ico' => "/media/site/favicon.{$randomHash}.ico", - '64' => "/media/site/icon-64.{$randomHash}.png", - '180' => "/media/site/icon-180.{$randomHash}.png", - '192' => "/media/site/icon-192.{$randomHash}.png", - '512' => "/media/site/icon-512.{$randomHash}.png", + 'ico' => media_path("/site/favicon.{$randomHash}.ico"), + '64' => media_path("/site/icon-64.{$randomHash}.png"), + '180' => media_path("/site/icon-180.{$randomHash}.png"), + '192' => media_path("/site/icon-192.{$randomHash}.png"), + '512' => media_path("/site/icon-512.{$randomHash}.png"), ]); } - return redirect('settings-general')->with('message', lang('Settings.general.instanceEditSuccess')); + return redirect('settings-general')->with('message', lang('Settings.instance.editSuccess')); } public function deleteIcon(): RedirectResponse @@ -100,7 +102,52 @@ class SettingsController extends BaseController service('settings') ->forget('App.siteIcon'); - return redirect('settings-general')->with('message', lang('Settings.general.deleteIconSuccess')); + return redirect('settings-general')->with('message', lang('Settings.instance.deleteIconSuccess')); + } + + public function regenerateImages(): RedirectResponse + { + $allPodcasts = (new PodcastModel())->findAll(); + + foreach ($allPodcasts as $podcast) { + $podcastImages = glob(ROOTPATH . "public/media/podcasts/{$podcast->handle}/*_*"); + + if ($podcastImages) { + foreach ($podcastImages as $podcastImage) { + if (is_file($podcastImage)) { + unlink($podcastImage); + } + } + } + $podcast->setCover($podcast->cover); + if ($podcast->banner_path !== null) { + $podcast->setBanner($podcast->banner); + } + + foreach ($podcast->episodes as $episode) { + if ($episode->cover_path !== null) { + $episode->setCover($episode->cover); + } + } + } + + $personsImages = glob(ROOTPATH . 'public/media/persons/*_*'); + if ($personsImages) { + foreach ($personsImages as $personsImage) { + if (is_file($personsImage)) { + unlink($personsImage); + } + } + } + + $persons = (new PersonModel())->findAll(); + foreach ($persons as $person) { + if ($person->avatar_path !== null) { + $person->setAvatar($person->avatar); + } + } + + return redirect('settings-general')->with('message', lang('Settings.images.regenerationSuccess')); } public function theme(): string diff --git a/modules/Admin/Language/en/Navigation.php b/modules/Admin/Language/en/Navigation.php index a51ceff8..716190e4 100644 --- a/modules/Admin/Language/en/Navigation.php +++ b/modules/Admin/Language/en/Navigation.php @@ -9,6 +9,7 @@ declare(strict_types=1); */ return [ + 'toggle_sidebar' => 'Toggle sidebar', 'go_to_website' => 'View site', 'go_to_admin' => 'Go to admin', 'dashboard' => 'Dashboard', diff --git a/modules/Admin/Language/en/Settings.php b/modules/Admin/Language/en/Settings.php index ed97dd4e..48580a5e 100644 --- a/modules/Admin/Language/en/Settings.php +++ b/modules/Admin/Language/en/Settings.php @@ -10,8 +10,8 @@ declare(strict_types=1); return [ 'title' => 'General settings', - 'general' => [ - 'site_section_title' => 'Instance', + 'instance' => [ + 'title' => 'Instance', 'site_icon' => 'Site icon', 'site_icon_delete' => 'Delete site icon', 'site_icon_hint' => 'Site icons are what you see on your browser tabs, bookmarks bar, and when you add a website as a shortcut on mobile devices.', @@ -19,9 +19,15 @@ return [ 'site_name' => 'Site name', 'site_description' => 'Site description', 'submit' => 'Save', - 'instanceEditSuccess' => 'Instance has been updated successfully!', + 'editSuccess' => 'Instance has been updated successfully!', 'deleteIconSuccess' => 'Site icon has been remove successfully!', ], + 'images' => [ + 'title' => 'Images', + 'subtitle' => 'Here you can regenerate all images based on the originals that were uploaded.', + 'regenerate' => 'Regenerate images', + 'regenerationSuccess' => 'All images have been regenerated successfully!', + ], 'theme' => [ 'title' => 'Theme', 'accent_section_title' => 'Accent color', diff --git a/modules/Admin/Language/fr/Navigation.php b/modules/Admin/Language/fr/Navigation.php index 469a43ed..40a44704 100644 --- a/modules/Admin/Language/fr/Navigation.php +++ b/modules/Admin/Language/fr/Navigation.php @@ -9,6 +9,7 @@ declare(strict_types=1); */ return [ + 'toggle_sidebar' => 'Afficher ou cacher la barre latérale', 'go_to_website' => 'Visiter le site', 'dashboard' => 'Tableau de bord', 'admin' => 'Accueil', diff --git a/modules/Admin/Language/fr/Settings.php b/modules/Admin/Language/fr/Settings.php index 35e603af..6c7dece2 100644 --- a/modules/Admin/Language/fr/Settings.php +++ b/modules/Admin/Language/fr/Settings.php @@ -10,8 +10,8 @@ declare(strict_types=1); return [ 'title' => 'Paramètres généraux', - 'general' => [ - 'site_section_title' => 'Instance', + 'instance' => [ + 'title' => 'Instance', 'site_icon' => 'Favicon du site', 'site_icon_delete' => 'Supprimer la favicon du site', 'site_icon_hint' => 'Les favicons sont ce que vous voyez sur les onglets de votre navigateur, dans votre barre de favoris, et lorsque vous ajoutez un site web en raccourci sur des appareils mobiles.', @@ -19,9 +19,15 @@ return [ 'site_name' => 'Titre du site', 'site_description' => 'Description du site', 'submit' => 'Sauvegarder', - 'instanceEditSuccess' => 'L’instance a bien été mise à jour !', + 'editSuccess' => 'L’instance a bien été mise à jour !', 'deleteIconSuccess' => 'La favicon du site a bien été retirée !', ], + 'images' => [ + 'title' => 'Images', + 'subtitle' => 'Vous pouvez ici regénérer toutes les images en se basant sur celles qui ont été téléversées à l’origine.', + 'regenerate' => 'Regénérer les images', + 'regenerationSuccess' => 'Toutes les images ont été regénérés avec succès !', + ], 'theme' => [ 'title' => 'Thème', 'accent_section_title' => 'Couleur d’accentuation', @@ -32,6 +38,7 @@ return [ 'lake' => 'Lac', 'jacaranda' => 'Jacaranda', 'onyx' => 'Onyx', + 'submit' => 'Sauvegarder', 'setInstanceThemeSuccess' => 'Le thème a bien été mis à jour !', ], ]; diff --git a/package-lock.json b/package-lock.json index c0a338fd..510769b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,12 @@ "svgo": "^2.8.0", "tailwindcss": "^3.0.0-alpha.1", "typescript": "^4.4.4", - "vite": "^2.6.13" + "vite": "^2.6.13", + "vite-plugin-pwa": "^0.11.5", + "workbox-build": "^6.4.0", + "workbox-core": "^6.4.0", + "workbox-routing": "^6.4.0", + "workbox-strategies": "^6.4.0" } }, "node_modules/@amcharts/amcharts4": { @@ -108,6 +113,350 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", + "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", + "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.5", + "@babel/helper-split-export-declaration": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", + "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "dependencies": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", + "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", + "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", + "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", + "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.5", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", + "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-validator-identifier": { "version": "7.15.7", "dev": true, @@ -116,6 +465,44 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", + "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", + "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/highlight": { "version": "7.16.0", "dev": true, @@ -142,6 +529,1093 @@ "node": ">=4" } }, + "node_modules/@babel/parser": { + "version": "7.16.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", + "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", + "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", + "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", + "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", + "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", + "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", + "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", + "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", + "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", + "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", + "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", + "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", + "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", + "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", + "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", + "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", + "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", + "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-remap-async-to-generator": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", + "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", + "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", + "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-replace-supers": "^7.16.5", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", + "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", + "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", + "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", + "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", + "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", + "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", + "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", + "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", + "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", + "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", + "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", + "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", + "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", + "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", + "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", + "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-replace-supers": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", + "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", + "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", + "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.14.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", + "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", + "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", + "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", + "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", + "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", + "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", + "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", + "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", + "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.5", + "@babel/plugin-proposal-class-properties": "^7.16.5", + "@babel/plugin-proposal-class-static-block": "^7.16.5", + "@babel/plugin-proposal-dynamic-import": "^7.16.5", + "@babel/plugin-proposal-export-namespace-from": "^7.16.5", + "@babel/plugin-proposal-json-strings": "^7.16.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", + "@babel/plugin-proposal-numeric-separator": "^7.16.5", + "@babel/plugin-proposal-object-rest-spread": "^7.16.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", + "@babel/plugin-proposal-optional-chaining": "^7.16.5", + "@babel/plugin-proposal-private-methods": "^7.16.5", + "@babel/plugin-proposal-private-property-in-object": "^7.16.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.5", + "@babel/plugin-transform-async-to-generator": "^7.16.5", + "@babel/plugin-transform-block-scoped-functions": "^7.16.5", + "@babel/plugin-transform-block-scoping": "^7.16.5", + "@babel/plugin-transform-classes": "^7.16.5", + "@babel/plugin-transform-computed-properties": "^7.16.5", + "@babel/plugin-transform-destructuring": "^7.16.5", + "@babel/plugin-transform-dotall-regex": "^7.16.5", + "@babel/plugin-transform-duplicate-keys": "^7.16.5", + "@babel/plugin-transform-exponentiation-operator": "^7.16.5", + "@babel/plugin-transform-for-of": "^7.16.5", + "@babel/plugin-transform-function-name": "^7.16.5", + "@babel/plugin-transform-literals": "^7.16.5", + "@babel/plugin-transform-member-expression-literals": "^7.16.5", + "@babel/plugin-transform-modules-amd": "^7.16.5", + "@babel/plugin-transform-modules-commonjs": "^7.16.5", + "@babel/plugin-transform-modules-systemjs": "^7.16.5", + "@babel/plugin-transform-modules-umd": "^7.16.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", + "@babel/plugin-transform-new-target": "^7.16.5", + "@babel/plugin-transform-object-super": "^7.16.5", + "@babel/plugin-transform-parameters": "^7.16.5", + "@babel/plugin-transform-property-literals": "^7.16.5", + "@babel/plugin-transform-regenerator": "^7.16.5", + "@babel/plugin-transform-reserved-words": "^7.16.5", + "@babel/plugin-transform-shorthand-properties": "^7.16.5", + "@babel/plugin-transform-spread": "^7.16.5", + "@babel/plugin-transform-sticky-regex": "^7.16.5", + "@babel/plugin-transform-template-literals": "^7.16.5", + "@babel/plugin-transform-typeof-symbol": "^7.16.5", + "@babel/plugin-transform-unicode-escapes": "^7.16.5", + "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { "version": "7.12.5", "license": "MIT", @@ -149,6 +1623,63 @@ "regenerator-runtime": "^0.13.4" } }, + "node_modules/@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@codemirror/autocomplete": { "version": "0.19.9", "license": "MIT", @@ -1195,6 +2726,88 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "@types/babel__core": "^7.1.9", + "rollup": "^1.20.0||^2.0.0" + }, + "peerDependenciesMeta": { + "@types/babel__core": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "peerDependencies": { + "rollup": "^1.20.0 || ^2.0.0" + } + }, + "node_modules/@rollup/plugin-replace/node_modules/magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.4" + } + }, + "node_modules/@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "dependencies": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0" + } + }, "node_modules/@semantic-release/changelog": { "version": "6.0.1", "dev": true, @@ -1648,6 +3261,18 @@ "npm": ">=6.0.0" } }, + "node_modules/@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "dependencies": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "dev": true, @@ -1736,6 +3361,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "node_modules/@types/fscreen": { "version": "1.0.1", "license": "MIT" @@ -1797,6 +3428,15 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/responselike": { "version": "1.0.0", "dev": true, @@ -2250,6 +3890,12 @@ "node": ">=8" } }, + "node_modules/async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, "node_modules/asynckit": { "version": "0.4.0", "license": "MIT" @@ -2289,6 +3935,54 @@ "postcss": "^8.1.0" } }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/babel-runtime": { "version": "6.26.0", "license": "MIT", @@ -2443,6 +4137,18 @@ "version": "1.1.2", "license": "MIT" }, + "node_modules/builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cacheable-lookup": { "version": "5.0.4", "dev": true, @@ -3121,6 +4827,15 @@ "dev": true, "license": "MIT" }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/compare-func": { "version": "2.0.0", "dev": true, @@ -3247,6 +4962,29 @@ "url": "https://opencollective.com/core-js" } }, + "node_modules/core-js-compat": { + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.1.tgz", + "integrity": "sha512-AVhKZNpqMV3Jz8hU0YEXXE06qoxtQGsAqU0u1neUngz5IusDJRX/ZJ6t3i7mS7QxNyEONbCo14GprkBrxPlTZA==", + "dev": true, + "dependencies": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "license": "MIT" @@ -4121,6 +5859,21 @@ "readable-stream": "^2.0.2" } }, + "node_modules/ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "dependencies": { + "jake": "^10.6.1" + }, + "bin": { + "ejs": "bin/cli.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/electron-to-chromium": { "version": "1.4.18", "dev": true, @@ -4184,6 +5937,57 @@ "dev": true, "license": "MIT" }, + "node_modules/es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es5-ext": { "version": "0.10.53", "license": "ISC", @@ -4667,6 +6471,12 @@ "version": "1.0.0", "license": "Apache-2.0" }, + "node_modules/estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "node_modules/esutils": { "version": "2.0.3", "license": "BSD-2-Clause", @@ -4864,6 +6674,15 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "dependencies": { + "minimatch": "^3.0.4" + } + }, "node_modules/fill-range": { "version": "7.0.1", "dev": true, @@ -5055,6 +6874,15 @@ "node": ">=6" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-assigned-identifiers": { "version": "1.2.0", "license": "Apache-2.0" @@ -5109,6 +6937,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/git-log-parser": { "version": "1.2.0", "dev": true, @@ -5352,6 +7196,15 @@ "node": ">= 0.4.0" } }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/has-flag": { "version": "3.0.0", "dev": true, @@ -5506,6 +7359,12 @@ "node": ">=0.10.0" } }, + "node_modules/idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", + "dev": true + }, "node_modules/ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -5643,6 +7502,20 @@ "node": ">=4" } }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/internmap": { "version": "1.0.1", "license": "ISC" @@ -5675,6 +7548,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-binary-path": { "version": "2.1.0", "dev": true, @@ -5686,6 +7571,34 @@ "node": ">=8" } }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-ci": { "version": "3.0.1", "dev": true, @@ -5699,7 +7612,6 @@ }, "node_modules/is-core-module": { "version": "2.2.0", - "dev": true, "license": "MIT", "dependencies": { "has": "^1.0.3" @@ -5745,6 +7657,24 @@ "node": ">=0.10.0" } }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-number": { "version": "7.0.0", "dev": true, @@ -5753,6 +7683,21 @@ "node": ">=0.12.0" } }, + "node_modules/is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-obj": { "version": "2.0.0", "dev": true, @@ -5824,6 +7769,15 @@ "dev": true, "license": "ISC" }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-ssh": { "version": "1.3.2", "dev": true, @@ -5840,6 +7794,36 @@ "node": ">=8" } }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-text-path": { "version": "1.0.1", "dev": true, @@ -5861,6 +7845,18 @@ "dev": true, "license": "MIT" }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-windows": { "version": "1.0.2", "dev": true, @@ -5893,6 +7889,38 @@ "node": ">=10.13" } }, + "node_modules/jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dev": true, + "dependencies": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/java-properties": { "version": "1.0.2", "dev": true, @@ -5901,6 +7929,41 @@ "node": ">= 0.6.0" } }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "license": "MIT" @@ -6048,6 +8111,18 @@ "node": ">= 0.8.0" } }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-buffer": { "version": "3.0.1", "dev": true, @@ -6063,6 +8138,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -6079,6 +8160,21 @@ "dev": true, "license": "ISC" }, + "node_modules/json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/jsonfile": { "version": "4.0.0", "dev": true, @@ -6095,6 +8191,15 @@ ], "license": "MIT" }, + "node_modules/jsonpointer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", + "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/JSONStream": { "version": "1.3.5", "dev": true, @@ -6143,6 +8248,15 @@ "leaflet": "^1.3.1" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "dev": true, @@ -6364,6 +8478,12 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "node_modules/lodash.escaperegexp": { "version": "4.1.2", "dev": true, @@ -6404,6 +8524,12 @@ "dev": true, "license": "MIT" }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "node_modules/lodash.truncate": { "version": "4.4.2", "dev": true, @@ -6913,18 +9039,6 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/resolve": { - "version": "1.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/normalize-package-data/node_modules/semver": { "version": "7.3.5", "dev": true, @@ -9946,6 +12060,24 @@ "node": ">= 0.4" } }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/once": { "version": "1.4.0", "dev": true, @@ -12255,6 +14387,18 @@ "typescript": ">=2.9" } }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/printj": { "version": "1.1.2", "license": "Apache-2.0", @@ -12373,6 +14517,15 @@ "performance-now": "^2.1.0" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/rc": { "version": "1.2.8", "dev": true, @@ -12542,10 +14695,37 @@ "symbol-observable": "^1.2.0" } }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regenerator-runtime": { "version": "0.13.7", "license": "MIT" }, + "node_modules/regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.3.1", "license": "MIT", @@ -12571,6 +14751,23 @@ "url": "https://github.com/sponsors/mysticatea" } }, + "node_modules/regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/registry-auth-token": { "version": "4.2.1", "dev": true, @@ -12582,6 +14779,33 @@ "node": ">=6.0.0" } }, + "node_modules/regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, "node_modules/regression": { "version": "2.0.1", "license": "MIT" @@ -12603,9 +14827,11 @@ } }, "node_modules/resolve": { - "version": "1.17.0", - "license": "MIT", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dependencies": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" }, "funding": { @@ -12732,6 +14958,75 @@ "fsevents": "~2.3.2" } }, + "node_modules/rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "peerDependencies": { + "rollup": "^2.0.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "optional": true, + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/rollup-plugin-terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/rollup-plugin-terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/rollup-plugin-terser/node_modules/terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "acorn": "^8.5.0" + }, + "peerDependenciesMeta": { + "acorn": { + "optional": true + } + } + }, "node_modules/run-async": { "version": "2.4.1", "dev": true, @@ -12958,6 +15253,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/shallow-copy": { "version": "0.0.1", "license": "MIT" @@ -12981,6 +15285,20 @@ "node": ">=8" } }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/signal-exit": { "version": "3.0.3", "dev": true, @@ -13105,6 +15423,12 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, "node_modules/sourcemap-codec": { "version": "1.4.8", "license": "MIT" @@ -13446,6 +15770,51 @@ "node": ">=4" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/stringify-object": { "version": "3.3.0", "dev": true, @@ -13494,6 +15863,15 @@ "node": ">=8" } }, + "node_modules/strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "dev": true, @@ -14040,18 +16418,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tailwindcss/node_modules/resolve": { - "version": "1.20.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tailwindcss/node_modules/tmp": { "version": "0.2.1", "dev": true, @@ -14167,6 +16533,15 @@ "node": ">=0.6.0" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "dev": true, @@ -14325,6 +16700,52 @@ "node": ">=0.8.0" } }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/unicode-properties": { "version": "1.3.1", "license": "MIT", @@ -14333,6 +16754,15 @@ "unicode-trie": "^2.0.0" } }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/unicode-trie": { "version": "2.0.0", "license": "MIT", @@ -14369,6 +16799,16 @@ "node": ">= 4.0.0" } }, + "node_modules/upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/uri-js": { "version": "4.4.1", "dev": true, @@ -14436,16 +16876,26 @@ } } }, - "node_modules/vite/node_modules/resolve": { - "version": "1.20.0", + "node_modules/vite-plugin-pwa": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.11.12.tgz", + "integrity": "sha512-XqFmA4y9C4RBb5osSsa26GVwOSwbzf2GNVcT5+06KYYdguqLpuI9FW7iV/akZqg0OUNUpH4tHfme8SnHA4PIXA==", "dev": true, - "license": "MIT", "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "debug": "^4.3.3", + "fast-glob": "^3.2.7", + "pretty-bytes": "^5.6.0", + "rollup": "^2.60.2", + "workbox-build": "^6.4.2", + "workbox-window": "^6.4.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "vite": "^2.0.0", + "workbox-build": "^6.4.0", + "workbox-window": "^6.4.0" } }, "node_modules/w3c-hr-time": { @@ -14510,6 +16960,22 @@ "which": "bin/which" } }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/wmf": { "version": "1.0.2", "license": "Apache-2.0", @@ -14540,6 +17006,341 @@ "dev": true, "license": "MIT" }, + "node_modules/workbox-background-sync": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.4.2.tgz", + "integrity": "sha512-P7c8uG5X2k+DMICH9xeSA9eUlCOjHHYoB42Rq+RtUpuwBxUOflAXR1zdsMWj81LopE4gjKXlTw7BFd1BDAHo7g==", + "dev": true, + "dependencies": { + "idb": "^6.1.4", + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-broadcast-update": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.4.2.tgz", + "integrity": "sha512-qnBwQyE0+PWFFc/n4ISXINE49m44gbEreJUYt2ldGH3+CNrLmJ1egJOOyUqqu9R4Eb7QrXcmB34ClXG7S37LbA==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-build": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.4.2.tgz", + "integrity": "sha512-WMdYLhDIsuzViOTXDH+tJ1GijkFp5khSYolnxR/11zmfhNDtuo7jof72xPGFy+KRpsz6tug39RhivCj77qqO0w==", + "dev": true, + "dependencies": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.4.2", + "workbox-broadcast-update": "6.4.2", + "workbox-cacheable-response": "6.4.2", + "workbox-core": "6.4.2", + "workbox-expiration": "6.4.2", + "workbox-google-analytics": "6.4.2", + "workbox-navigation-preload": "6.4.2", + "workbox-precaching": "6.4.2", + "workbox-range-requests": "6.4.2", + "workbox-recipes": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2", + "workbox-streams": "6.4.2", + "workbox-sw": "6.4.2", + "workbox-window": "6.4.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/workbox-build/node_modules/@apideck/better-ajv-errors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.2.tgz", + "integrity": "sha512-JdEazx7qiVqTBzzBl5rolRwl5cmhihjfIcpqRzIZjtT6b18liVmDn/VlWpqW4C/qP2hrFFMLRV1wlex8ZVBPTg==", + "dev": true, + "dependencies": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "ajv": ">=8" + } + }, + "node_modules/workbox-build/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/workbox-build/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/workbox-build/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/workbox-build/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/workbox-build/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/workbox-build/node_modules/tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "dependencies": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/workbox-build/node_modules/type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/workbox-build/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/workbox-build/node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "node_modules/workbox-build/node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "node_modules/workbox-cacheable-response": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.4.2.tgz", + "integrity": "sha512-9FE1W/cKffk1AJzImxgEN0ceWpyz1tqNjZVtA3/LAvYL3AC5SbIkhc7ZCO82WmO9IjTfu8Vut2X/C7ViMSF7TA==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.4.2.tgz", + "integrity": "sha512-1U6cdEYPcajRXiboSlpJx6U7TvhIKbxRRerfepAJu2hniKwJ3DHILjpU/zx3yvzSBCWcNJDoFalf7Vgd7ey/rw==", + "dev": true + }, + "node_modules/workbox-expiration": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.4.2.tgz", + "integrity": "sha512-0hbpBj0tDnW+DZOUmwZqntB/8xrXOgO34i7s00Si/VlFJvvpRKg1leXdHHU8ykoSBd6+F2KDcMP3swoCi5guLw==", + "dev": true, + "dependencies": { + "idb": "^6.1.4", + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-google-analytics": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.4.2.tgz", + "integrity": "sha512-u+gxs3jXovPb1oul4CTBOb+T9fS1oZG+ZE6AzS7l40vnyfJV79DaLBvlpEZfXGv3CjMdV1sT/ltdOrKzo7HcGw==", + "dev": true, + "dependencies": { + "workbox-background-sync": "6.4.2", + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "node_modules/workbox-navigation-preload": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.4.2.tgz", + "integrity": "sha512-viyejlCtlKsbJCBHwhSBbWc57MwPXvUrc8P7d+87AxBGPU+JuWkT6nvBANgVgFz6FUhCvRC8aYt+B1helo166g==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-precaching": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.4.2.tgz", + "integrity": "sha512-CZ6uwFN/2wb4noHVlALL7UqPFbLfez/9S2GAzGAb0Sk876ul9ukRKPJJ6gtsxfE2HSTwqwuyNVa6xWyeyJ1XSA==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "node_modules/workbox-range-requests": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.4.2.tgz", + "integrity": "sha512-SowF3z69hr3Po/w7+xarWfzxJX/3Fo0uSG72Zg4g5FWWnHpq2zPvgbWerBZIa81zpJVUdYpMa3akJJsv+LaO1Q==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-recipes": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.4.2.tgz", + "integrity": "sha512-/oVxlZFpAjFVbY+3PoGEXe8qyvtmqMrTdWhbOfbwokNFtUZ/JCtanDKgwDv9x3AebqGAoJRvQNSru0F4nG+gWA==", + "dev": true, + "dependencies": { + "workbox-cacheable-response": "6.4.2", + "workbox-core": "6.4.2", + "workbox-expiration": "6.4.2", + "workbox-precaching": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "node_modules/workbox-routing": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.4.2.tgz", + "integrity": "sha512-0ss/n9PAcHjTy4Ad7l2puuod4WtsnRYu9BrmHcu6Dk4PgWeJo1t5VnGufPxNtcuyPGQ3OdnMdlmhMJ57sSrrSw==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-strategies": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.4.2.tgz", + "integrity": "sha512-YXh9E9dZGEO1EiPC3jPe2CbztO5WT8Ruj8wiYZM56XqEJp5YlGTtqRjghV+JovWOqkWdR+amJpV31KPWQUvn1Q==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2" + } + }, + "node_modules/workbox-streams": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.4.2.tgz", + "integrity": "sha512-ROEGlZHGVEgpa5bOZefiJEVsi5PsFjJG9Xd+wnDbApsCO9xq9rYFopF+IRq9tChyYzhBnyk2hJxbQVWphz3sog==", + "dev": true, + "dependencies": { + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2" + } + }, + "node_modules/workbox-sw": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.4.2.tgz", + "integrity": "sha512-A2qdu9TLktfIM5NE/8+yYwfWu+JgDaCkbo5ikrky2c7r9v2X6DcJ+zSLphNHHLwM/0eVk5XVf1mC5HGhYpMhhg==", + "dev": true + }, + "node_modules/workbox-window": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.4.2.tgz", + "integrity": "sha512-KVyRKmrJg7iB+uym/B/CnEUEFG9CvnTU1Bq5xpXHbtgD9l+ShDekSl1wYpqw/O0JfeeQVOFb8CiNfvnwWwqnWQ==", + "dev": true, + "dependencies": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.4.2" + } + }, "node_modules/wrap-ansi": { "version": "7.0.0", "dev": true, @@ -14868,10 +17669,298 @@ "@babel/highlight": "^7.16.0" } }, + "@babel/compat-data": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", + "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", + "dev": true + }, + "@babel/core": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", + "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helpers": "^7.16.5", + "@babel/parser": "^7.16.5", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.1.2", + "semver": "^6.3.0", + "source-map": "^0.5.0" + } + }, + "@babel/generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", + "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.0.tgz", + "integrity": "sha512-ItmYF9vR4zA8cByDocY05o0LGUkp1zhbTQOH1NFyl5xXEqlTJQCEJjieriw+aFpxo16swMxUnUiKS7a/r4vtHg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.5.tgz", + "integrity": "sha512-3JEA9G5dmmnIWdzaT9d0NmFRgYnWUThLsDaL7982H0XqqWr56lRrsmwheXFMjR+TMl7QMBb6mzy9kvgr1lRLUA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.16.3", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", + "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.0", + "@babel/helper-validator-option": "^7.14.5", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.5.tgz", + "integrity": "sha512-NEohnYA7mkB8L5JhU7BLwcBdU3j83IziR9aseMueWGeAjblbul3zzb8UvJ3a1zuBiqCMObzCJHFqKIQE6hTVmg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-replace-supers": "^7.16.5", + "@babel/helper-split-export-declaration": "^7.16.0" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.0.tgz", + "integrity": "sha512-3DyG0zAFAZKcOp7aVr33ddwkxJ0Z0Jr5V99y3I690eYLpukJsJvAbzTy1ewoCqsML8SbIrjH14Jc/nSQ4TvNPA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "regexpu-core": "^4.7.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.0.tgz", + "integrity": "sha512-7hfT8lUljl/tM3h+izTX/pO3W3frz2ok6Pk+gzys8iJqDfZrZy2pXjRTZAvG2YmfHun1X4q8/UZRLatMfqc5Tg==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", + "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.0.tgz", + "integrity": "sha512-Hk2SLxC9ZbcOhLpg/yMznzJ11W++lg5GMbxt1ev6TXUiJB0N42KPC+7w8a+eWGuqDnUYuwStJoZHM7RgmIOaGQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-function-name": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", + "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", + "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", + "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.5.tgz", + "integrity": "sha512-7fecSXq7ZrLE+TWshbGT+HyCLkxloWNhTbU2QM1NTI/tDqyf0oZiMcEfYtDuUDCo528EOlt39G1rftea4bRZIw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", + "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-module-transforms": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", + "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-simple-access": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/helper-validator-identifier": "^7.15.7", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.0.tgz", + "integrity": "sha512-SuI467Gi2V8fkofm2JPnZzB/SUuXoJA5zXe/xzyPP2M04686RzFKFHPK6HDVN6JvWBIEW8tt9hPR7fXdn2Lgpw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", + "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.5.tgz", + "integrity": "sha512-X+aAJldyxrOmN9v3FKp+Hu1NO69VWgYgDGq6YDykwRPzxs5f2N+X988CBXS7EQahDU+Vpet5QYMqLk+nsp+Qxw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-wrap-function": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.5.tgz", + "integrity": "sha512-ao3seGVa/FZCMCCNDuBcqnBFSbdr8N2EW35mzojx3TwfIbdPmNK+JV6+2d5bR0Z71W5ocLnQp9en/cTF7pBJiQ==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-member-expression-to-functions": "^7.16.5", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", + "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", + "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, "@babel/helper-validator-identifier": { "version": "7.15.7", "dev": true }, + "@babel/helper-validator-option": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", + "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.5.tgz", + "integrity": "sha512-2J2pmLBqUqVdJw78U0KPNdeE2qeuIyKoG4mKV7wAq3mc4jJG282UgjZw4ZYDnqiWQuS3Y3IYdF/AQ6CpyBV3VA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, + "@babel/helpers": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", + "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", + "dev": true, + "requires": { + "@babel/template": "^7.16.0", + "@babel/traverse": "^7.16.5", + "@babel/types": "^7.16.0" + } + }, "@babel/highlight": { "version": "7.16.0", "dev": true, @@ -14892,12 +17981,785 @@ } } }, + "@babel/parser": { + "version": "7.16.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", + "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.2.tgz", + "integrity": "sha512-h37CvpLSf8gb2lIJ2CgC3t+EjFbi0t8qS7LCS1xcJIlEXE4czlofwaW7W1HA8zpgOCzI9C1nmoqNR1zWkk0pQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.0.tgz", + "integrity": "sha512-4tcFwwicpWTrpl9qjf7UsoosaArgImF85AxqCRZlgc3IQDvkUHjJpruXAL58Wmj+T6fypWTC/BakfEkwIL/pwA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.5.tgz", + "integrity": "sha512-C/FX+3HNLV6sz7AqbTQqEo1L9/kfrKjxcVtgyBCmvIgOjvuBVUWooDoi7trsLxOzCEo5FccjRvKHkfDsJFZlfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-remap-async-to-generator": "^7.16.5", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.5.tgz", + "integrity": "sha512-pJD3HjgRv83s5dv1sTnDbZOaTjghKEz8KUn1Kbh2eAIRhGuyQ1XSeI4xVXU3UlIEVA3DAyIdxqT1eRn7Wcn55A==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.5.tgz", + "integrity": "sha512-EEFzuLZcm/rNJ8Q5krK+FRKdVkd6FjfzT9tuSZql9sQn64K0hHA2KLJ0DqVot9/iV6+SsuadC5yI39zWnm+nmQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.5.tgz", + "integrity": "sha512-P05/SJZTTvHz79LNYTF8ff5xXge0kk5sIIWAypcWgX4BTRUgyHc8wRxJ/Hk+mU0KXldgOOslKaeqnhthcDJCJQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.5.tgz", + "integrity": "sha512-i+sltzEShH1vsVydvNaTRsgvq2vZsfyrd7K7vPLUU/KgS0D5yZMe6uipM0+izminnkKrEfdUnz7CxMRb6oHZWw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.5.tgz", + "integrity": "sha512-QQJueTFa0y9E4qHANqIvMsuxM/qcLQmKttBACtPCQzGUEizsXDACGonlPiSwynHfOa3vNw0FPMVvQzbuXwh4SQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.5.tgz", + "integrity": "sha512-xqibl7ISO2vjuQM+MzR3rkd0zfNWltk7n9QhaD8ghMmMceVguYrNDt7MikRyj4J4v3QehpnrU8RYLnC7z/gZLA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.5.tgz", + "integrity": "sha512-YwMsTp/oOviSBhrjwi0vzCUycseCYwoXnLiXIL3YNjHSMBHicGTz7GjVU/IGgz4DtOEXBdCNG72pvCX22ehfqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.5.tgz", + "integrity": "sha512-DvB9l/TcsCRvsIV9v4jxR/jVP45cslTVC0PMVHvaJhhNuhn2Y1SOhCSFlPK777qLB5wb8rVDaNoqMTyOqtY5Iw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.5.tgz", + "integrity": "sha512-UEd6KpChoyPhCoE840KRHOlGhEZFutdPDMGj+0I56yuTTOaT51GzmnEl/0uT41fB/vD2nT+Pci2KjezyE3HmUw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.5" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.5.tgz", + "integrity": "sha512-ihCMxY1Iljmx4bWy/PIMJGXN4NS4oUj1MKynwO07kiKms23pNvIn1DMB92DNB2R0EA882sw0VXIelYGdtF7xEQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.5.tgz", + "integrity": "sha512-kzdHgnaXRonttiTfKYnSVafbWngPPr2qKw9BWYBESl91W54e+9R5pP70LtWxV56g0f05f/SQrwHYkfvbwcdQ/A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.5.tgz", + "integrity": "sha512-+yFMO4BGT3sgzXo+lrq7orX5mAZt57DwUK6seqII6AcJnJOIhBJ8pzKH47/ql/d426uQ7YhN8DpUFirQzqYSUA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.5.tgz", + "integrity": "sha512-+YGh5Wbw0NH3y/E5YMu6ci5qTDmAEVNoZ3I54aB6nVEOZ5BQ7QJlwKq5pYVucQilMByGn/bvX0af+uNaPRCabA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-create-class-features-plugin": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.5.tgz", + "integrity": "sha512-s5sKtlKQyFSatt781HQwv1hoM5BQ9qRH30r+dK56OLDsHmV74mzwJNX7R1yMuE7VZKG5O6q/gmOGSAO6ikTudg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.5.tgz", + "integrity": "sha512-8bTHiiZyMOyfZFULjsCnYOWG059FVMes0iljEHSfARhNgFfpsqE92OrCffv3veSw9rwMkYcFe9bj0ZoXU2IGtQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.5.tgz", + "integrity": "sha512-TMXgfioJnkXU+XRoj7P2ED7rUm5jbnDWwlCuFVTpQboMfbSya5WrmubNBAMlk7KXvywpo8rd8WuYZkis1o2H8w==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-remap-async-to-generator": "^7.16.5" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.5.tgz", + "integrity": "sha512-BxmIyKLjUGksJ99+hJyL/HIxLIGnLKtw772zYDER7UuycDZ+Xvzs98ZQw6NGgM2ss4/hlFAaGiZmMNKvValEjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.5.tgz", + "integrity": "sha512-JxjSPNZSiOtmxjX7PBRBeRJTUKTyJ607YUYeT0QJCNdsedOe+/rXITjP08eG8xUpsLfPirgzdCFN+h0w6RI+pQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.5.tgz", + "integrity": "sha512-DzJ1vYf/7TaCYy57J3SJ9rV+JEuvmlnvvyvYKFbk5u46oQbBvuB9/0w+YsVsxkOv8zVWKpDmUoj4T5ILHoXevA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.0", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-optimise-call-expression": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-replace-supers": "^7.16.5", + "@babel/helper-split-export-declaration": "^7.16.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.5.tgz", + "integrity": "sha512-n1+O7xtU5lSLraRzX88CNcpl7vtGdPakKzww74bVwpAIRgz9JVLJJpOLb0uYqcOaXVM0TL6X0RVeIJGD2CnCkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.5.tgz", + "integrity": "sha512-GuRVAsjq+c9YPK6NeTkRLWyQskDC099XkBSVO+6QzbnOnH2d/4mBVXYStaPrZD3dFRfg00I6BFJ9Atsjfs8mlg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.5.tgz", + "integrity": "sha512-iQiEMt8Q4/5aRGHpGVK2Zc7a6mx7qEAO7qehgSug3SDImnuMzgmm/wtJALXaz25zUj1PmnNHtShjFgk4PDx4nw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.5.tgz", + "integrity": "sha512-81tijpDg2a6I1Yhj4aWY1l3O1J4Cg/Pd7LfvuaH2VVInAkXtzibz9+zSPdUM1WvuUi128ksstAP0hM5w48vQgg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.5.tgz", + "integrity": "sha512-12rba2HwemQPa7BLIKCzm1pT2/RuQHtSFHdNl41cFiC6oi4tcrp7gjB07pxQvFpcADojQywSjblQth6gJyE6CA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.5.tgz", + "integrity": "sha512-+DpCAJFPAvViR17PIMi9x2AE34dll5wNlXO43wagAX2YcRGgEVHCNFC4azG85b4YyyFarvkc/iD5NPrz4Oneqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.5.tgz", + "integrity": "sha512-Fuec/KPSpVLbGo6z1RPw4EE1X+z9gZk1uQmnYy7v4xr4TO9p41v1AoUuXEtyqAI7H+xNJYSICzRqZBhDEkd3kQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.5.tgz", + "integrity": "sha512-B1j9C/IfvshnPcklsc93AVLTrNVa69iSqztylZH6qnmiAsDDOmmjEYqOm3Ts2lGSgTSywnBNiqC949VdD0/gfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.5.tgz", + "integrity": "sha512-d57i3vPHWgIde/9Y8W/xSFUndhvhZN5Wu2TjRrN1MVz5KzdUihKnfDVlfP1U7mS5DNj/WHHhaE4/tTi4hIyHwQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.5.tgz", + "integrity": "sha512-oHI15S/hdJuSCfnwIz+4lm6wu/wBn7oJ8+QrkzPPwSFGXk8kgdI/AIKcbR/XnD1nQVMg/i6eNaXpszbGuwYDRQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.5.tgz", + "integrity": "sha512-ABhUkxvoQyqhCWyb8xXtfwqNMJD7tx+irIRnUh6lmyFud7Jln1WzONXKlax1fg/ey178EXbs4bSGNd6PngO+SQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-simple-access": "^7.16.0", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.5.tgz", + "integrity": "sha512-53gmLdScNN28XpjEVIm7LbWnD/b/TpbwKbLk6KV4KqC9WyU6rq1jnNmVG6UgAdQZVVGZVoik3DqHNxk4/EvrjA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-identifier": "^7.15.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.5.tgz", + "integrity": "sha512-qTFnpxHMoenNHkS3VoWRdwrcJ3FhX567GvDA3hRZKF0Dj8Fmg0UzySZp3AP2mShl/bzcywb/UWAMQIjA1bhXvw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.5", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.5.tgz", + "integrity": "sha512-/wqGDgvFUeKELW6ex6QB7dLVRkd5ehjw34tpXu1nhKC0sFfmaLabIswnpf8JgDyV2NeDmZiwoOb0rAmxciNfjA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.5.tgz", + "integrity": "sha512-ZaIrnXF08ZC8jnKR4/5g7YakGVL6go6V9ql6Jl3ecO8PQaQqFE74CuM384kezju7Z9nGCCA20BqZaR1tJ/WvHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.5.tgz", + "integrity": "sha512-tded+yZEXuxt9Jdtkc1RraW1zMF/GalVxaVVxh41IYwirdRgyAxxxCKZ9XB7LxZqmsjfjALxupNE1MIz9KH+Zg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-replace-supers": "^7.16.5" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.5.tgz", + "integrity": "sha512-B3O6AL5oPop1jAVg8CV+haeUte9oFuY85zu0jwnRNZZi3tVAbJriu5tag/oaO2kGaQM/7q7aGPBlTI5/sr9enA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.5.tgz", + "integrity": "sha512-+IRcVW71VdF9pEH/2R/Apab4a19LVvdVsr/gEeotH00vSDVlKD+XgfSIw+cgGWsjDB/ziqGv/pGoQZBIiQVXHg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.5.tgz", + "integrity": "sha512-2z+it2eVWU8TtQQRauvGUqZwLy4+7rTfo6wO4npr+fvvN1SW30ZF3O/ZRCNmTuu4F5MIP8OJhXAhRV5QMJOuYg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.5.tgz", + "integrity": "sha512-aIB16u8lNcf7drkhXJRoggOxSTUAuihTSTfAcpynowGJOZiGf+Yvi7RuTwFzVYSYPmWyARsPqUGoZWWWxLiknw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.5.tgz", + "integrity": "sha512-ZbuWVcY+MAXJuuW7qDoCwoxDUNClfZxoo7/4swVbOW1s/qYLOMHlm9YRWMsxMFuLs44eXsv4op1vAaBaBaDMVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.5.tgz", + "integrity": "sha512-5d6l/cnG7Lw4tGHEoga4xSkYp1euP7LAtrah1h1PgJ3JY7yNsjybsxQAnVK4JbtReZ/8z6ASVmd3QhYYKLaKZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.5.tgz", + "integrity": "sha512-usYsuO1ID2LXxzuUxifgWtJemP7wL2uZtyrTVM4PKqsmJycdS4U4mGovL5xXkfUheds10Dd2PjoQLXw6zCsCbg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.5.tgz", + "integrity": "sha512-gnyKy9RyFhkovex4BjKWL3BVYzUDG6zC0gba7VMLbQoDuqMfJ1SDXs8k/XK41Mmt1Hyp4qNAvGFb9hKzdCqBRQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.5.tgz", + "integrity": "sha512-ldxCkW180qbrvyCVDzAUZqB0TAeF8W/vGJoRcaf75awm6By+PxfJKvuqVAnq8N9wz5Xa6mSpM19OfVKKVmGHSQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.5.tgz", + "integrity": "sha512-shiCBHTIIChGLdyojsKQjoAyB8MBwat25lKM7MJjbe1hE0bgIppD+LX9afr41lLHOhqceqeWl4FkLp+Bgn9o1Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.5.tgz", + "integrity": "sha512-GTJ4IW012tiPEMMubd7sD07iU9O/LOo8Q/oU4xNhcaq0Xn8+6TcUQaHtC8YxySo1T+ErQ8RaWogIEeFhKGNPzw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.0", + "@babel/helper-plugin-utils": "^7.16.5" + } + }, + "@babel/preset-env": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.5.tgz", + "integrity": "sha512-MiJJW5pwsktG61NDxpZ4oJ1CKxM1ncam9bzRtx9g40/WkLRkxFP6mhpkYV0/DxcciqoiHicx291+eUQrXb/SfQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.4", + "@babel/helper-compilation-targets": "^7.16.3", + "@babel/helper-plugin-utils": "^7.16.5", + "@babel/helper-validator-option": "^7.14.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.2", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-async-generator-functions": "^7.16.5", + "@babel/plugin-proposal-class-properties": "^7.16.5", + "@babel/plugin-proposal-class-static-block": "^7.16.5", + "@babel/plugin-proposal-dynamic-import": "^7.16.5", + "@babel/plugin-proposal-export-namespace-from": "^7.16.5", + "@babel/plugin-proposal-json-strings": "^7.16.5", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.5", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", + "@babel/plugin-proposal-numeric-separator": "^7.16.5", + "@babel/plugin-proposal-object-rest-spread": "^7.16.5", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.5", + "@babel/plugin-proposal-optional-chaining": "^7.16.5", + "@babel/plugin-proposal-private-methods": "^7.16.5", + "@babel/plugin-proposal-private-property-in-object": "^7.16.5", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.5", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.5", + "@babel/plugin-transform-async-to-generator": "^7.16.5", + "@babel/plugin-transform-block-scoped-functions": "^7.16.5", + "@babel/plugin-transform-block-scoping": "^7.16.5", + "@babel/plugin-transform-classes": "^7.16.5", + "@babel/plugin-transform-computed-properties": "^7.16.5", + "@babel/plugin-transform-destructuring": "^7.16.5", + "@babel/plugin-transform-dotall-regex": "^7.16.5", + "@babel/plugin-transform-duplicate-keys": "^7.16.5", + "@babel/plugin-transform-exponentiation-operator": "^7.16.5", + "@babel/plugin-transform-for-of": "^7.16.5", + "@babel/plugin-transform-function-name": "^7.16.5", + "@babel/plugin-transform-literals": "^7.16.5", + "@babel/plugin-transform-member-expression-literals": "^7.16.5", + "@babel/plugin-transform-modules-amd": "^7.16.5", + "@babel/plugin-transform-modules-commonjs": "^7.16.5", + "@babel/plugin-transform-modules-systemjs": "^7.16.5", + "@babel/plugin-transform-modules-umd": "^7.16.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.5", + "@babel/plugin-transform-new-target": "^7.16.5", + "@babel/plugin-transform-object-super": "^7.16.5", + "@babel/plugin-transform-parameters": "^7.16.5", + "@babel/plugin-transform-property-literals": "^7.16.5", + "@babel/plugin-transform-regenerator": "^7.16.5", + "@babel/plugin-transform-reserved-words": "^7.16.5", + "@babel/plugin-transform-shorthand-properties": "^7.16.5", + "@babel/plugin-transform-spread": "^7.16.5", + "@babel/plugin-transform-sticky-regex": "^7.16.5", + "@babel/plugin-transform-template-literals": "^7.16.5", + "@babel/plugin-transform-typeof-symbol": "^7.16.5", + "@babel/plugin-transform-unicode-escapes": "^7.16.5", + "@babel/plugin-transform-unicode-regex": "^7.16.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.0", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.4.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.19.1", + "semver": "^6.3.0" + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, "@babel/runtime": { "version": "7.12.5", "requires": { "regenerator-runtime": "^0.13.4" } }, + "@babel/template": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", + "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/parser": "^7.16.0", + "@babel/types": "^7.16.0" + } + }, + "@babel/traverse": { + "version": "7.16.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", + "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.0", + "@babel/generator": "^7.16.5", + "@babel/helper-environment-visitor": "^7.16.5", + "@babel/helper-function-name": "^7.16.0", + "@babel/helper-hoist-variables": "^7.16.0", + "@babel/helper-split-export-declaration": "^7.16.0", + "@babel/parser": "^7.16.5", + "@babel/types": "^7.16.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", + "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.15.7", + "to-fast-properties": "^2.0.0" + } + }, "@codemirror/autocomplete": { "version": "0.19.9", "requires": { @@ -15689,6 +19551,62 @@ "@popperjs/core": { "version": "2.11.0" }, + "@rollup/plugin-babel": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.0.tgz", + "integrity": "sha512-9uIC8HZOnVLrLHxayq/PTzw+uS25E14KPUBh5ktF+18Mjo5yK0ToMMx6epY0uEgkjwJw0aBW4x2horYXh8juWw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.4", + "@rollup/pluginutils": "^3.1.0" + } + }, + "@rollup/plugin-node-resolve": { + "version": "11.2.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz", + "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "@types/resolve": "1.17.1", + "builtin-modules": "^3.1.0", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.19.0" + } + }, + "@rollup/plugin-replace": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", + "integrity": "sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==", + "dev": true, + "requires": { + "@rollup/pluginutils": "^3.1.0", + "magic-string": "^0.25.7" + }, + "dependencies": { + "magic-string": { + "version": "0.25.7", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", + "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.4" + } + } + } + }, + "@rollup/pluginutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz", + "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==", + "dev": true, + "requires": { + "@types/estree": "0.0.39", + "estree-walker": "^1.0.1", + "picomatch": "^2.2.2" + } + }, "@semantic-release/changelog": { "version": "6.0.1", "dev": true, @@ -15982,6 +19900,18 @@ "@stencil/core": { "version": "2.5.2" }, + "@surma/rollup-plugin-off-main-thread": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz", + "integrity": "sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==", + "dev": true, + "requires": { + "ejs": "^3.1.6", + "json5": "^2.2.0", + "magic-string": "^0.25.0", + "string.prototype.matchall": "^4.0.6" + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "dev": true, @@ -16044,6 +19974,12 @@ "version": "1.1.1", "dev": true }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, "@types/fscreen": { "version": "1.0.1" }, @@ -16095,6 +20031,15 @@ "version": "4.0.0", "dev": true }, + "@types/resolve": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz", + "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/responselike": { "version": "1.0.0", "dev": true, @@ -16374,6 +20319,12 @@ "version": "2.0.0", "dev": true }, + "async": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/async/-/async-0.9.2.tgz", + "integrity": "sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0=", + "dev": true + }, "asynckit": { "version": "0.4.0" }, @@ -16394,6 +20345,45 @@ "postcss-value-parser": "^4.1.0" } }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.0.tgz", + "integrity": "sha512-wMDoBJ6uG4u4PNFh72Ty6t3EgfA91puCuAwKIazbQlci+ENb/UU9A3xG5lutjUIiXCIn1CY5L15r9LimiJyrSA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.0", + "semver": "^6.1.1" + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.4.0.tgz", + "integrity": "sha512-YxFreYwUfglYKdLUGvIF2nJEsGwj+RhWSX/ije3D2vQPOXuyMLMtg/cCGMDpOA7Nd+MwlNdnGODbd2EwUZPlsw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0", + "core-js-compat": "^3.18.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.0.tgz", + "integrity": "sha512-dhAPTDLGoMW5/84wkgwiLRwMnio2i1fUe53EuvtKMv0pn2p3S8OCoV1xAzfJPl0KOX7IB89s2ib85vbYiea3jg==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.0" + } + }, "babel-runtime": { "version": "6.26.0", "requires": { @@ -16510,6 +20500,12 @@ "buffer-from": { "version": "1.1.2" }, + "builtin-modules": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz", + "integrity": "sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==", + "dev": true + }, "cacheable-lookup": { "version": "5.0.4", "dev": true @@ -16957,6 +20953,12 @@ } } }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, "compare-func": { "version": "2.0.0", "dev": true, @@ -17043,6 +21045,24 @@ "core-js": { "version": "3.6.5" }, + "core-js-compat": { + "version": "3.20.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.1.tgz", + "integrity": "sha512-AVhKZNpqMV3Jz8hU0YEXXE06qoxtQGsAqU0u1neUngz5IusDJRX/ZJ6t3i7mS7QxNyEONbCo14GprkBrxPlTZA==", + "dev": true, + "requires": { + "browserslist": "^4.19.1", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, "core-util-is": { "version": "1.0.2" }, @@ -17604,6 +21624,15 @@ "readable-stream": "^2.0.2" } }, + "ejs": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.6.tgz", + "integrity": "sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw==", + "dev": true, + "requires": { + "jake": "^10.6.1" + } + }, "electron-to-chromium": { "version": "1.4.18", "dev": true @@ -17652,6 +21681,45 @@ } } }, + "es-abstract": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, "es5-ext": { "version": "0.10.53", "requires": { @@ -17974,6 +22042,12 @@ "estree-is-function": { "version": "1.0.0" }, + "estree-walker": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz", + "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==", + "dev": true + }, "esutils": { "version": "2.0.3" }, @@ -18109,6 +22183,15 @@ "flat-cache": "^3.0.4" } }, + "filelist": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.2.tgz", + "integrity": "sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, "fill-range": { "version": "7.0.1", "dev": true, @@ -18233,6 +22316,12 @@ "fuse.js": { "version": "3.6.1" }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, "get-assigned-identifiers": { "version": "1.2.0" }, @@ -18263,6 +22352,16 @@ "pump": "^3.0.0" } }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "git-log-parser": { "version": "1.2.0", "dev": true, @@ -18430,6 +22529,12 @@ "function-bind": "^1.1.1" } }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, "has-flag": { "version": "3.0.0", "dev": true @@ -18514,6 +22619,12 @@ "safer-buffer": ">= 2.1.2 < 3" } }, + "idb": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/idb/-/idb-6.1.5.tgz", + "integrity": "sha512-IJtugpKkiVXQn5Y+LteyBCNk1N8xpGV3wWZk9EVtZWH8DYkjBn0bX1XnGP9RkyZF0sAcywa6unHqSWKe7q4LGw==", + "dev": true + }, "ignore": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", @@ -18609,6 +22720,17 @@ } } }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "internmap": { "version": "1.0.1" }, @@ -18626,6 +22748,15 @@ "call-bind": "^1.0.0" } }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, "is-binary-path": { "version": "2.1.0", "dev": true, @@ -18633,6 +22764,22 @@ "binary-extensions": "^2.0.0" } }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, "is-ci": { "version": "3.0.1", "dev": true, @@ -18642,7 +22789,6 @@ }, "is-core-module": { "version": "2.2.0", - "dev": true, "requires": { "has": "^1.0.3" } @@ -18665,10 +22811,31 @@ "is-extglob": "^2.1.1" } }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, "is-number": { "version": "7.0.0", "dev": true }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, "is-obj": { "version": "2.0.0", "dev": true @@ -18707,6 +22874,12 @@ "version": "1.1.0", "dev": true }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==", + "dev": true + }, "is-ssh": { "version": "1.3.2", "dev": true, @@ -18718,6 +22891,24 @@ "version": "2.0.0", "dev": true }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, "is-text-path": { "version": "1.0.1", "dev": true, @@ -18733,6 +22924,15 @@ "version": "0.2.1", "dev": true }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, "is-windows": { "version": "1.0.2", "dev": true @@ -18755,10 +22955,63 @@ "lodash.uniqby": "^4.7.0" } }, + "jake": { + "version": "10.8.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.8.2.tgz", + "integrity": "sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A==", + "dev": true, + "requires": { + "async": "0.9.x", + "chalk": "^2.4.2", + "filelist": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, "java-properties": { "version": "1.0.2", "dev": true }, + "jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "js-tokens": { "version": "4.0.0" }, @@ -18852,6 +23105,12 @@ } } }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, "json-buffer": { "version": "3.0.1", "dev": true @@ -18864,6 +23123,12 @@ "version": "2.3.0", "dev": true }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -18878,6 +23143,15 @@ "version": "5.0.1", "dev": true }, + "json5": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "jsonfile": { "version": "4.0.0", "dev": true, @@ -18889,6 +23163,12 @@ "version": "1.3.1", "dev": true }, + "jsonpointer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.0.tgz", + "integrity": "sha512-PNYZIdMjVIvVgDSYKTT63Y+KZ6IZvGRNNWcxwD+GNnUz1MKPfv30J8ueCjdwcN0nDx2SlshgyB7Oy0epAzVRRg==", + "dev": true + }, "JSONStream": { "version": "1.3.5", "dev": true, @@ -18921,6 +23201,12 @@ "version": "1.5.3", "requires": {} }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, "levn": { "version": "0.4.1", "dev": true, @@ -19080,6 +23366,12 @@ "version": "4.4.0", "dev": true }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, "lodash.escaperegexp": { "version": "4.1.2", "dev": true @@ -19112,6 +23404,12 @@ "version": "4.6.2", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "dev": true @@ -19431,14 +23729,6 @@ "validate-npm-package-license": "^3.0.1" }, "dependencies": { - "resolve": { - "version": "1.20.0", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "semver": { "version": "7.3.5", "dev": true, @@ -21585,6 +25875,18 @@ "object-keys": { "version": "1.1.1" }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, "once": { "version": "1.4.0", "dev": true, @@ -23002,6 +27304,12 @@ "dev": true, "requires": {} }, + "pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true + }, "printj": { "version": "1.1.2" }, @@ -23074,6 +27382,15 @@ "performance-now": "^2.1.0" } }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, "rc": { "version": "1.2.8", "dev": true, @@ -23197,9 +27514,33 @@ "symbol-observable": "^1.2.0" } }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", + "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, "regenerator-runtime": { "version": "0.13.7" }, + "regenerator-transform": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", + "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, "regexp.prototype.flags": { "version": "1.3.1", "requires": { @@ -23211,6 +27552,20 @@ "version": "3.2.0", "dev": true }, + "regexpu-core": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", + "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^9.0.0", + "regjsgen": "^0.5.2", + "regjsparser": "^0.7.0", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, "registry-auth-token": { "version": "4.2.1", "dev": true, @@ -23218,6 +27573,29 @@ "rc": "^1.2.8" } }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", + "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, "regression": { "version": "2.0.1" }, @@ -23230,8 +27608,11 @@ "dev": true }, "resolve": { - "version": "1.17.0", + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "requires": { + "is-core-module": "^2.2.0", "path-parse": "^1.0.6" } }, @@ -23308,6 +27689,51 @@ "fsevents": "~2.3.2" } }, + "rollup-plugin-terser": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz", + "integrity": "sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "jest-worker": "^26.2.1", + "serialize-javascript": "^4.0.0", + "terser": "^5.0.0" + }, + "dependencies": { + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "dev": true, + "optional": true, + "peer": true + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + }, + "terser": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.10.0.tgz", + "integrity": "sha512-AMmF99DMfEDiRJfxfY5jj5wNH/bYO09cniSqhfoyxc8sFoYIgkJy86G04UoZU5VjlpnplVu0K6Tx6E9b5+DlHA==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + } + } + } + }, "run-async": { "version": "2.4.1", "dev": true @@ -23450,6 +27876,15 @@ "version": "3.1.3", "dev": true }, + "serialize-javascript": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", + "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, "shallow-copy": { "version": "0.0.1" }, @@ -23464,6 +27899,17 @@ "version": "3.0.0", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.3", "dev": true @@ -23545,6 +27991,12 @@ } } }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, "sourcemap-codec": { "version": "1.4.8" }, @@ -23782,6 +28234,42 @@ } } }, + "string.prototype.matchall": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.6.tgz", + "integrity": "sha512-6WgDX8HmQqvEd7J+G6VtAahhsQIssiZ8zl7zKh1VDMFyL3hRTJP4FTNA3RbIp2TOQ9AYNDcc7e3fH0Qbup+DBg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1", + "get-intrinsic": "^1.1.1", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "regexp.prototype.flags": "^1.3.1", + "side-channel": "^1.0.4" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, "stringify-object": { "version": "3.3.0", "dev": true, @@ -23814,6 +28302,12 @@ "version": "4.0.0", "dev": true }, + "strip-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz", + "integrity": "sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==", + "dev": true + }, "strip-final-newline": { "version": "2.0.0", "dev": true @@ -24182,14 +28676,6 @@ "version": "5.1.1", "dev": true }, - "resolve": { - "version": "1.20.0", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "tmp": { "version": "0.2.1", "dev": true, @@ -24270,6 +28756,12 @@ "os-tmpdir": "~1.0.2" } }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, "to-regex-range": { "version": "5.0.1", "dev": true, @@ -24363,6 +28855,40 @@ "dev": true, "optional": true }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, "unicode-properties": { "version": "1.3.1", "requires": { @@ -24370,6 +28896,12 @@ "unicode-trie": "^2.0.0" } }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, "unicode-trie": { "version": "2.0.0", "requires": { @@ -24395,6 +28927,12 @@ "universalify": { "version": "0.1.2" }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, "uri-js": { "version": "4.4.1", "dev": true, @@ -24430,16 +28968,20 @@ "postcss": "^8.3.11", "resolve": "^1.20.0", "rollup": "^2.59.0" - }, - "dependencies": { - "resolve": { - "version": "1.20.0", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - } + } + }, + "vite-plugin-pwa": { + "version": "0.11.12", + "resolved": "https://registry.npmjs.org/vite-plugin-pwa/-/vite-plugin-pwa-0.11.12.tgz", + "integrity": "sha512-XqFmA4y9C4RBb5osSsa26GVwOSwbzf2GNVcT5+06KYYdguqLpuI9FW7iV/akZqg0OUNUpH4tHfme8SnHA4PIXA==", + "dev": true, + "requires": { + "debug": "^4.3.3", + "fast-glob": "^3.2.7", + "pretty-bytes": "^5.6.0", + "rollup": "^2.60.2", + "workbox-build": "^6.4.2", + "workbox-window": "^6.4.2" } }, "w3c-hr-time": { @@ -24484,6 +29026,19 @@ "isexe": "^2.0.0" } }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, "wmf": { "version": "1.0.2" }, @@ -24501,6 +29056,307 @@ "version": "1.0.0", "dev": true }, + "workbox-background-sync": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.4.2.tgz", + "integrity": "sha512-P7c8uG5X2k+DMICH9xeSA9eUlCOjHHYoB42Rq+RtUpuwBxUOflAXR1zdsMWj81LopE4gjKXlTw7BFd1BDAHo7g==", + "dev": true, + "requires": { + "idb": "^6.1.4", + "workbox-core": "6.4.2" + } + }, + "workbox-broadcast-update": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.4.2.tgz", + "integrity": "sha512-qnBwQyE0+PWFFc/n4ISXINE49m44gbEreJUYt2ldGH3+CNrLmJ1egJOOyUqqu9R4Eb7QrXcmB34ClXG7S37LbA==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-build": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-6.4.2.tgz", + "integrity": "sha512-WMdYLhDIsuzViOTXDH+tJ1GijkFp5khSYolnxR/11zmfhNDtuo7jof72xPGFy+KRpsz6tug39RhivCj77qqO0w==", + "dev": true, + "requires": { + "@apideck/better-ajv-errors": "^0.3.1", + "@babel/core": "^7.11.1", + "@babel/preset-env": "^7.11.0", + "@babel/runtime": "^7.11.2", + "@rollup/plugin-babel": "^5.2.0", + "@rollup/plugin-node-resolve": "^11.2.1", + "@rollup/plugin-replace": "^2.4.1", + "@surma/rollup-plugin-off-main-thread": "^2.2.3", + "ajv": "^8.6.0", + "common-tags": "^1.8.0", + "fast-json-stable-stringify": "^2.1.0", + "fs-extra": "^9.0.1", + "glob": "^7.1.6", + "lodash": "^4.17.20", + "pretty-bytes": "^5.3.0", + "rollup": "^2.43.1", + "rollup-plugin-terser": "^7.0.0", + "source-map": "^0.8.0-beta.0", + "source-map-url": "^0.4.0", + "stringify-object": "^3.3.0", + "strip-comments": "^2.0.1", + "tempy": "^0.6.0", + "upath": "^1.2.0", + "workbox-background-sync": "6.4.2", + "workbox-broadcast-update": "6.4.2", + "workbox-cacheable-response": "6.4.2", + "workbox-core": "6.4.2", + "workbox-expiration": "6.4.2", + "workbox-google-analytics": "6.4.2", + "workbox-navigation-preload": "6.4.2", + "workbox-precaching": "6.4.2", + "workbox-range-requests": "6.4.2", + "workbox-recipes": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2", + "workbox-streams": "6.4.2", + "workbox-sw": "6.4.2", + "workbox-window": "6.4.2" + }, + "dependencies": { + "@apideck/better-ajv-errors": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.2.tgz", + "integrity": "sha512-JdEazx7qiVqTBzzBl5rolRwl5cmhihjfIcpqRzIZjtT6b18liVmDn/VlWpqW4C/qP2hrFFMLRV1wlex8ZVBPTg==", + "dev": true, + "requires": { + "json-schema": "^0.4.0", + "jsonpointer": "^5.0.0", + "leven": "^3.1.0" + } + }, + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "requires": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } + }, + "tempy": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz", + "integrity": "sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==", + "dev": true, + "requires": { + "is-stream": "^2.0.0", + "temp-dir": "^2.0.0", + "type-fest": "^0.16.0", + "unique-string": "^2.0.0" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "type-fest": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", + "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", + "dev": true + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "workbox-cacheable-response": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.4.2.tgz", + "integrity": "sha512-9FE1W/cKffk1AJzImxgEN0ceWpyz1tqNjZVtA3/LAvYL3AC5SbIkhc7ZCO82WmO9IjTfu8Vut2X/C7ViMSF7TA==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-core": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-6.4.2.tgz", + "integrity": "sha512-1U6cdEYPcajRXiboSlpJx6U7TvhIKbxRRerfepAJu2hniKwJ3DHILjpU/zx3yvzSBCWcNJDoFalf7Vgd7ey/rw==", + "dev": true + }, + "workbox-expiration": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.4.2.tgz", + "integrity": "sha512-0hbpBj0tDnW+DZOUmwZqntB/8xrXOgO34i7s00Si/VlFJvvpRKg1leXdHHU8ykoSBd6+F2KDcMP3swoCi5guLw==", + "dev": true, + "requires": { + "idb": "^6.1.4", + "workbox-core": "6.4.2" + } + }, + "workbox-google-analytics": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.4.2.tgz", + "integrity": "sha512-u+gxs3jXovPb1oul4CTBOb+T9fS1oZG+ZE6AzS7l40vnyfJV79DaLBvlpEZfXGv3CjMdV1sT/ltdOrKzo7HcGw==", + "dev": true, + "requires": { + "workbox-background-sync": "6.4.2", + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "workbox-navigation-preload": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.4.2.tgz", + "integrity": "sha512-viyejlCtlKsbJCBHwhSBbWc57MwPXvUrc8P7d+87AxBGPU+JuWkT6nvBANgVgFz6FUhCvRC8aYt+B1helo166g==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-precaching": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.4.2.tgz", + "integrity": "sha512-CZ6uwFN/2wb4noHVlALL7UqPFbLfez/9S2GAzGAb0Sk876ul9ukRKPJJ6gtsxfE2HSTwqwuyNVa6xWyeyJ1XSA==", + "dev": true, + "requires": { + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "workbox-range-requests": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.4.2.tgz", + "integrity": "sha512-SowF3z69hr3Po/w7+xarWfzxJX/3Fo0uSG72Zg4g5FWWnHpq2zPvgbWerBZIa81zpJVUdYpMa3akJJsv+LaO1Q==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-recipes": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.4.2.tgz", + "integrity": "sha512-/oVxlZFpAjFVbY+3PoGEXe8qyvtmqMrTdWhbOfbwokNFtUZ/JCtanDKgwDv9x3AebqGAoJRvQNSru0F4nG+gWA==", + "dev": true, + "requires": { + "workbox-cacheable-response": "6.4.2", + "workbox-core": "6.4.2", + "workbox-expiration": "6.4.2", + "workbox-precaching": "6.4.2", + "workbox-routing": "6.4.2", + "workbox-strategies": "6.4.2" + } + }, + "workbox-routing": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.4.2.tgz", + "integrity": "sha512-0ss/n9PAcHjTy4Ad7l2puuod4WtsnRYu9BrmHcu6Dk4PgWeJo1t5VnGufPxNtcuyPGQ3OdnMdlmhMJ57sSrrSw==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-strategies": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.4.2.tgz", + "integrity": "sha512-YXh9E9dZGEO1EiPC3jPe2CbztO5WT8Ruj8wiYZM56XqEJp5YlGTtqRjghV+JovWOqkWdR+amJpV31KPWQUvn1Q==", + "dev": true, + "requires": { + "workbox-core": "6.4.2" + } + }, + "workbox-streams": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.4.2.tgz", + "integrity": "sha512-ROEGlZHGVEgpa5bOZefiJEVsi5PsFjJG9Xd+wnDbApsCO9xq9rYFopF+IRq9tChyYzhBnyk2hJxbQVWphz3sog==", + "dev": true, + "requires": { + "workbox-core": "6.4.2", + "workbox-routing": "6.4.2" + } + }, + "workbox-sw": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.4.2.tgz", + "integrity": "sha512-A2qdu9TLktfIM5NE/8+yYwfWu+JgDaCkbo5ikrky2c7r9v2X6DcJ+zSLphNHHLwM/0eVk5XVf1mC5HGhYpMhhg==", + "dev": true + }, + "workbox-window": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-6.4.2.tgz", + "integrity": "sha512-KVyRKmrJg7iB+uym/B/CnEUEFG9CvnTU1Bq5xpXHbtgD9l+ShDekSl1wYpqw/O0JfeeQVOFb8CiNfvnwWwqnWQ==", + "dev": true, + "requires": { + "@types/trusted-types": "^2.0.2", + "workbox-core": "6.4.2" + } + }, "wrap-ansi": { "version": "7.0.0", "dev": true, diff --git a/package.json b/package.json index c5f273e2..d0ecd6a0 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,12 @@ "svgo": "^2.8.0", "tailwindcss": "^3.0.0-alpha.1", "typescript": "^4.4.4", - "vite": "^2.6.13" + "vite": "^2.6.13", + "vite-plugin-pwa": "^0.11.5", + "workbox-build": "^6.4.0", + "workbox-core": "^6.4.0", + "workbox-routing": "^6.4.0", + "workbox-strategies": "^6.4.0" }, "lint-staged": { "*.{js,ts,css,md,json}": "prettier --write", diff --git a/public/media/castopod-avatar-default_medium.jpg b/public/media/castopod-avatar-default_medium.jpg deleted file mode 100644 index 4b5d9d8f806601565224bdc948a97e083b85da62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22945 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 diff --git a/public/media/castopod-avatar-default_medium.webp b/public/media/castopod-avatar-default_medium.webp new file mode 100644 index 0000000000000000000000000000000000000000..910a2b35897be74bd0033302f526ee8ed077802e GIT binary patch literal 10163 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 Vg=_AN??}4bI;960J2uw${|01N^XC8n literal 0 HcmV?d00001 diff --git a/public/media/castopod-avatar-default_thumbnail.jpg b/public/media/castopod-avatar-default_thumbnail.jpg deleted file mode 100644 index 833befdd4093a516f4626c1e279fa4d6eb5bb07b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11117 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 CfS@D* diff --git a/public/media/castopod-avatar-default_thumbnail.webp b/public/media/castopod-avatar-default_thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..b0625dc01a1ecf4bb7cfc5668943ae4edee9cf61 GIT binary patch literal 4879 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 Z=T(lC@dL5CkE{E*s)4_x24unRe*us(Ie-8F diff --git a/public/media/castopod-banner-default_medium.webp b/public/media/castopod-banner-default_medium.webp new file mode 100644 index 0000000000000000000000000000000000000000..d0acadd7666269711fccc31a7164c96e038c0a51 GIT binary patch literal 6967 zcmeH~dpK0x9>@2Xalg%EP*TRNcPNTPNJGvLy<)~hFHxwNa>+G1G%jUcb6j#wlH0fx z(JPk{4F*0Ki}{-~x03ARExuC*t);rbI1_<3*(_*Dg6?d{mSVVX)qwWLHOwk+C7h*bHxo z@ljV*IDm2YwsR(X`C)W0nuqwnen209b8u`{s34%q$-~KsKydPLb93R8&A%e5V+C=MJC#-^^+7We) zqncX!f596Vo-{HxC!MjdJo}54!^KON9i7NmJiWYquKW7k2)T7Tl=^EJEhaWDKH+ZS zy`&6!W>$92!$-MKi;7E1pFJ;oQBzx2|GJ^^&D)O7uHU?Ybbvi}Y&`2QmN1MJ^ieSiQQ1}z>O1>k_yy)^8T z3meC<88l#9+wWl81KS?h_Q19Wesm8g;N`KyGysrWXgQcL@bO6HRi}j6pg`-gM>C46 zr!{^xdM|r#u75pej^5-pmHPIDGtoX3^Qvgr)7F~e#U}Z=usT;QO=v2Hm;lE{hJPu0 zY~$g#_=5Xr`$*lj*68Nd%^1SSvt`o}8+B~GWYA*jpT;E6G~vwShKIk!7(&y)#e4PA z;T_-gC!!+hqMbu&FN#kkHe$FYx{?hgPq?;7E}}1l&=iHLGH6)fM^Kh+MogT~TBokp zXg)e8U*0teJ?_xq)hgUu>z+rqv1u;vXxZ&_X5wtOL1BR1Uq|jM;U*3ouHZcty1+E) zD9&p|+U8flvSKC6Q&0h|SvQp9X9i4)@EUec*nbLM61oSwLX zz%5Hd5J>Z`WX+!RSD;5nO)zg#dg)C5-zb+!?2Eq91;I_V30j$itdz&8E|<6`=3kpL z76ffxJ(?Lk^)e#jMM?7W!8;=qE_qKh>#HX<%y$tJV z5fdG9YgebK)u>Kj22CN5fJXycUBt)%D`P@G(*)MFw>T~*ACupTT$1AW`X2 z2bf&MKuXA5zLJ}DNt<&^eG{^*CU>qmfYXTnwur3mn(Cc?0w;a$Ze7H_W%K){Vs|Q- z^U7TlzQa98lOXC)78MQh>I;u&wH)yw6nR0|Dtt=;)=kKwZ~liY*30QQCMcxl8FF^|FhmT{|! z`9j$={i?^4!sn^(`^-j3Ja){8#^=FcH;!i!}Y151~pWN-TcP*O4vm#Bz3C~l6-PB*&A zo$2dVSNch=lq}7qDH0~*n#Y!*&qjtPy`ySPHn+p&Tq5=MR7#8<-|M6m8lU?~=Yuc@ zPq6=oP|e2bX%OfsU`&xhyU9{hiek=d_C@h@oYz?Ph%I&6A}7cUn`W8qAFFwHoSc)d zxt2s`o@*#Z6Yz)luo;0{UXT-wjI{&EX<8xOF>#BTkQ*1yQ*E)~{RQzJgK|XwP=~{xF9lY0?Wu1<>2|m)my0O7jTbnwB%XjahU-wPrs^~ z*S%?RJkwGe1o&-D*SHU|HgJQ68%ln-uacF^GtfxH9D=jsFRgB{iK9Nhq>tObn{Mto(EP4GF~Q!$=vY$U1Fi?d*M{83-G{T5!*nx(Y^b+94{qi$ z&qcM)?y@Ln=qPgmvJkN4MSljl2Kq+AAL@{?I!=&#{^KbPP0*EW+T>4eh&9oJ7DfLKGNF)_Kt@6@z)XFp2P2hg}19dV#CnC0r zQITSR)=xZxlJv*9+qn?9h$iEuRFNXsEs+P z<=-zc!rOgt4nnVUmY`!niavXdzU~A9t8Qcd;t_v_l*PQ3bC-sOk;^XmAlI5Q)+Fo8 x$nF_ZHQZjqZ4Yb-4^Y7Oe+Ntw(b50_ literal 0 HcmV?d00001 diff --git a/public/media/castopod-banner-default_small.jpg b/public/media/castopod-banner-default_small.jpg deleted file mode 100644 index dd98b87d3883e724477ef000e2c78774d21ae0f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmex=_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8Gg!jX{=B9W23RCi(yFP#Ue=!TpC9u7BF>b zP>#2ilrr7eW~oz@Ew$}S|Bo;K85*T_yem$!V=n)#YBo`1xu z|3`V&`oGM1{~6w&u5YbUTU>A7vSqE+b?*)4sZ*wDwe&C;`B_h@y6%}-vt6ug^Nvrx zhgNd@byT+abxm)}q+RYI1tw4K#H_jYw_p4}LrZb!e})CQ_y7LP|FGh|$Ifk2g+6KO zg#HkUaXYp1&+6NG`eEAHGXpBuGEF+Mw@BRL*Ox!9XI;u)R}-1IBJ$O(`kQVC0=tZQ zWFGvvd(3#2Xxi1c3zj!57hAOC-M`1jx8C3}++_90<9_Bh+t+;CzSe{N#&u-v(w%49 ze*nX7g_RQ}0SFJRBWvf%9^9&|tk~xoQ*OCYp7Eue{Evy>xFz1M&%Ku{)ase6tispO z{O8r*<44wNy%QF>CVW!z$?Dwy3{syx(>%h9H-x^N)&AS<_P?tB6IXTx>^;g8r|3R4 zYcGG`wjYz1MjlaW_Mc~R(js6$-RHter|+D}hBABByS@m$`k&$P<$o;NLfcB)nXd4Bibx1E4cRUy X|A0$l(Snyi0+^mgF(?e||K9`v_1P|rX?qqI0P zFI~aY%U!`Mz|~!$%*;qrN1?DZF(6Oj-S5fuR$!pIEN!@|nR z%E~Fi%grl7GWdUhL6C!?fzg4PQHg;`kdaxC@&6G9c?JeXR-jiwzJ&rtCZHSH*f}`4 zxPc0`3NSD+GBY!=FoRqTR9y>{XJ8Rz6;d>GWD^cdWLGK_F>0K+kVDyN<3Z7&iyu^s zlZu)+xx~aJB&Af<)HO7@(s#)lOnKGb1qam<1W^8Gg!jX{=B9W23RCi(%;Ep0oxo&9eEHfpG-WB)HKh#zC+j{8@@5L0= zu7!yWY@Wx9=WV@s>%Pvnvdt%KCR?rK`0J=_@#`AjmPvcJSS@Z`uJ-8Zs^9%${~21c zL;o`@NWK5}Xa0v3_uY4Fn=154ePj3o&q8Uf=bzT+?bs8MyDru7xe1rI($^C)k6&N@ zye`{w|IUx8Z41*^XZ~kMm1cBHNtLiX_l6K%{d8Tu!@tYfu5(E2oaD;n zaX<5$?Q5=WU-N%_`OnbEb;LG1Gq3o<52h}Sl~zDv0oi!lmwvF3Qb*RVRczd}gFL+0B+!9-@@vmo X8Vi_BQh>q9tVT(g4idfm|8D{SVycY$ literal 0 HcmV?d00001 diff --git a/tailwind.config.js b/tailwind.config.js index e902d879..07a662ca 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -52,6 +52,7 @@ module.exports = { subtle: withOpacity("--color-border-subtle"), contrast: withOpacity("--color-border-contrast"), navigation: withOpacity("--color-border-navigation"), + "navigation-bg": withOpacity("--color-background-navigation"), accent: { base: withOpacity("--color-accent-base"), hover: withOpacity("--color-accent-hover"), diff --git a/themes/cp_admin/_partials/_nav_header.php b/themes/cp_admin/_partials/_nav_header.php index 6152c47e..107e8723 100644 --- a/themes/cp_admin/_partials/_nav_header.php +++ b/themes/cp_admin/_partials/_nav_header.php @@ -1,7 +1,7 @@

+ class="h-full pr-1 text-xl md:hidden focus:ring-accent focus:ring-inset" aria-label="">
podcasts === [] ? '' : '' ?> + ->podcasts === [] ? '' : '' ?>
username ?> diff --git a/themes/cp_admin/episode/_card.php b/themes/cp_admin/episode/_card.php index 0c8b69e6..9dea6a89 100644 --- a/themes/cp_admin/episode/_card.php +++ b/themes/cp_admin/episode/_card.php @@ -2,7 +2,7 @@
- <?= $episode->title ?> + <?= $episode->title ?>
published_at, $episode->publication_status, 'absolute top-0 left-0 ml-2 mt-2 text-sm'); ?>
diff --git a/themes/cp_admin/episode/_sidebar.php b/themes/cp_admin/episode/_sidebar.php index af4c2e3b..a22fbdd5 100644 --- a/themes/cp_admin/episode/_sidebar.php +++ b/themes/cp_admin/episode/_sidebar.php @@ -12,7 +12,7 @@ $podcastNavigation = [ <?= $podcast->title ?> title ?> @@ -20,7 +20,7 @@ $podcastNavigation = [ <?= $episode->title ?>
title ?> diff --git a/themes/cp_admin/episode/list.php b/themes/cp_admin/episode/list.php index ecfcbd14..a3b8d671 100644 --- a/themes/cp_admin/episode/list.php +++ b/themes/cp_admin/episode/list.php @@ -34,7 +34,7 @@ $episode->audio_file_duration, ) . '' . - '' . $episode->title . '' . + '' . $episode->title . '' . '
' . '' . 'avatar->thumbnail_url}\" alt=\"{$person->full_name}\" class=\"object-cover w-16 h-16 rounded-full\" />" . + "\">avatar->thumbnail_url}\" alt=\"{$person->full_name}\" class=\"object-cover w-16 rounded-full aspect-square\" />" . '
' . $person->full_name . implode( diff --git a/themes/cp_admin/episode/publish.php b/themes/cp_admin/episode/publish.php index a0397e53..48b2cc7d 100644 --- a/themes/cp_admin/episode/publish.php +++ b/themes/cp_admin/episode/publish.php @@ -28,7 +28,7 @@
- <?= $podcast->actor->display_name ?> + <?= $podcast->actor->display_name ?>

actor->display_name ?> @@ -41,7 +41,7 @@

<?= $episode->title ?> + ->thumbnail_url ?>" alt="title ?>" class="w-24 h-24 aspect-square" />
diff --git a/themes/cp_admin/episode/publish_edit.php b/themes/cp_admin/episode/publish_edit.php index 6e38016e..2df15f59 100644 --- a/themes/cp_admin/episode/publish_edit.php +++ b/themes/cp_admin/episode/publish_edit.php @@ -29,7 +29,7 @@
- <?= $podcast->actor->display_name ?> + <?= $podcast->actor->display_name ?>

actor->display_name ?> @@ -43,7 +43,7 @@

<?= $episode->title ?> + ->thumbnail_url ?>" alt="title ?>" class="w-24 h-24 aspect-square" />
diff --git a/themes/cp_admin/person/_card.php b/themes/cp_admin/person/_card.php index 736dafd9..174963a4 100644 --- a/themes/cp_admin/person/_card.php +++ b/themes/cp_admin/person/_card.php @@ -2,7 +2,7 @@
- <?= $person->full_name ?> + <?= $person->full_name ?>

full_name ?>

diff --git a/themes/cp_admin/person/view.php b/themes/cp_admin/person/view.php index 85be9c22..7e22a94b 100644 --- a/themes/cp_admin/person/view.php +++ b/themes/cp_admin/person/view.php @@ -19,7 +19,7 @@ $person->full_name
full_name ?> diff --git a/themes/cp_admin/podcast/_card.php b/themes/cp_admin/podcast/_card.php index 972969d8..cc8abe03 100644 --- a/themes/cp_admin/podcast/_card.php +++ b/themes/cp_admin/podcast/_card.php @@ -4,7 +4,7 @@
<?= $podcast->title ?> + src="cover->medium_url ?>" class="object-cover w-full h-full transition duration-200 ease-in-out transform aspect-square group-focus:scale-105 group-hover:scale-105" />

title ?>

diff --git a/themes/cp_admin/podcast/_sidebar.php b/themes/cp_admin/podcast/_sidebar.php index 8762453e..e72c1ee0 100644 --- a/themes/cp_admin/podcast/_sidebar.php +++ b/themes/cp_admin/podcast/_sidebar.php @@ -39,7 +39,7 @@ $podcastNavigation = [ <?= $podcast->title ?>
title ?> diff --git a/themes/cp_admin/podcast/edit.php b/themes/cp_admin/podcast/edit.php index 93c77521..94befb4d 100644 --- a/themes/cp_admin/podcast/edit.php +++ b/themes/cp_admin/podcast/edit.php @@ -28,7 +28,7 @@
<?= $podcast->title ?> + class="w-16 h-16 mr-4 -mt-8 rounded-full ring-2 ring-background-elevated aspect-square" />

title ?>

@handle ?>

diff --git a/themes/cp_admin/podcast/persons.php b/themes/cp_admin/podcast/persons.php index 805538fc..77cc2992 100644 --- a/themes/cp_admin/podcast/persons.php +++ b/themes/cp_admin/podcast/persons.php @@ -55,7 +55,7 @@ return '
' . 'avatar->thumbnail_url}\" alt=\"{$person->full_name}\" class=\"object-cover w-16 h-16 rounded-full\" />" . + "\">avatar->thumbnail_url}\" alt=\"{$person->full_name}\" class=\"object-cover aspect-square w-16 h-16 rounded-full\" />" . '
' . $person->full_name . implode( diff --git a/themes/cp_admin/settings/general.php b/themes/cp_admin/settings/general.php index 33d1feb7..46787aa7 100644 --- a/themes/cp_admin/settings/general.php +++ b/themes/cp_admin/settings/general.php @@ -9,16 +9,17 @@ endSection() ?> section('content') ?> +
-
+ + title=""> @@ -26,7 +27,7 @@ siteIcon['ico'] !== service('settings')->get('App.siteIcon')['ico']): ?>
- - <?= service('settings')->get('App.siteName') ?> Favicon + + <?= service('settings')->get('App.siteName') ?> Favicon
- + +
+ + + + + + + + +
+
+ endSection() ?> diff --git a/themes/cp_app/_admin_navbar.php b/themes/cp_app/_admin_navbar.php index 5b704bdd..2984c28f 100644 --- a/themes/cp_app/_admin_navbar.php +++ b/themes/cp_app/_admin_navbar.php @@ -20,7 +20,7 @@ aria-expanded="false">
podcasts === [] ? '' : '' ?> + ->podcasts === [] ? '' : '' ?>
username ?> diff --git a/themes/cp_app/_persons_modal.php b/themes/cp_app/_persons_modal.php index 6d7ec3f9..89798824 100644 --- a/themes/cp_app/_persons_modal.php +++ b/themes/cp_app/_persons_modal.php @@ -17,7 +17,7 @@
- <?= $person->full_name ?> + <?= $person->full_name ?>

information_url): ?> diff --git a/themes/cp_app/embed.php b/themes/cp_app/embed.php index e81ac9e9..6be47018 100644 --- a/themes/cp_app/embed.php +++ b/themes/cp_app/embed.php @@ -12,8 +12,6 @@ - - asset('styles/index.css', 'css') ?> - <?= $episode->title ?> + <?= $episode->title ?>
- + + + @@ -70,7 +80,7 @@
- <?= $episode->title ?> + <?= $episode->title ?>
number, $episode->season_number, 'text-sm leading-none font-semibold px-1 py-1 text-white/90 border !no-underline border-subtle', true) ?>

title ?>

@@ -80,7 +90,7 @@
persons as $person): ?> - <?= $person->full_name ?> + <?= $person->full_name ?> diff --git a/themes/cp_app/episode/_partials/card.php b/themes/cp_app/episode/_partials/card.php index 730ada18..0efc2c93 100644 --- a/themes/cp_app/episode/_partials/card.php +++ b/themes/cp_app/episode/_partials/card.php @@ -4,7 +4,7 @@ audio_file_duration) ?> <?= $episode->title ?> + ->thumbnail_url ?>" alt="title ?>" class="object-cover w-20 rounded-lg aspect-square" />
diff --git a/themes/cp_app/episode/_partials/comment.php b/themes/cp_app/episode/_partials/comment.php index 7ea8d3d7..f365f413 100644 --- a/themes/cp_app/episode/_partials/comment.php +++ b/themes/cp_app/episode/_partials/comment.php @@ -1,5 +1,5 @@
- <?= $comment->display_name ?> + <?= $comment->display_name ?>
> actor ->display_name ?> - @actor + @actor ->username . ($comment->actor->is_local ? '' diff --git a/themes/cp_app/episode/_partials/comment_card.php b/themes/cp_app/episode/_partials/comment_card.php index 0756cbb7..9cea928d 100644 --- a/themes/cp_app/episode/_partials/comment_card.php +++ b/themes/cp_app/episode/_partials/comment_card.php @@ -1,5 +1,5 @@
- <?= $comment->display_name ?> + <?= $comment->display_name ?>
actor->is_local diff --git a/themes/cp_app/episode/_partials/comment_reply.php b/themes/cp_app/episode/_partials/comment_reply.php index 28ff6c19..d2b3e854 100644 --- a/themes/cp_app/episode/_partials/comment_reply.php +++ b/themes/cp_app/episode/_partials/comment_reply.php @@ -1,6 +1,6 @@
<?= $reply->actor
-    ->display_name ?> + ->display_name ?>" class="z-10 w-10 h-10 rounded-full ring-gray-50 ring-2 aspect-square" />
id, $episode->id, $comment->id) ?>" method="POST" class="flex px-6 pt-8 pb-4 gap-x-2 bg-base"> <?= interact_as_actor()
-    ->display_name ?> + ->display_name ?>" class="w-10 h-10 rounded-full aspect-square" />
- + \ No newline at end of file diff --git a/themes/cp_app/episode/_partials/preview_card.php b/themes/cp_app/episode/_partials/preview_card.php index d429d938..a3248251 100644 --- a/themes/cp_app/episode/_partials/preview_card.php +++ b/themes/cp_app/episode/_partials/preview_card.php @@ -5,7 +5,7 @@ <?= $episode->title ?> + alt="title ?>" class="w-24 h-24 aspect-square"/>
diff --git a/themes/cp_app/episode/activity.php b/themes/cp_app/episode/activity.php index 5c9a8d7e..17f2b12c 100644 --- a/themes/cp_app/episode/activity.php +++ b/themes/cp_app/episode/activity.php @@ -9,7 +9,7 @@ <?= interact_as_actor()
-            ->display_name ?> + ->display_name ?>" class="w-10 h-10 rounded-full aspect-square" />
+ ->display_name ?>" class="w-10 h-10 rounded-full aspect-square" />
get('App.siteIcon')['ico'] ?>" /> + + @@ -50,7 +60,7 @@
- <?= $podcast->title ?> + <?= $podcast->title ?>

title ?>

diff --git a/themes/cp_app/pages/_layout.php b/themes/cp_app/pages/_layout.php index 30f9177c..9a2a6f58 100644 --- a/themes/cp_app/pages/_layout.php +++ b/themes/cp_app/pages/_layout.php @@ -10,6 +10,16 @@ ->get('App.siteIcon')['ico'] ?>" /> + + diff --git a/themes/cp_app/pages/credits.php b/themes/cp_app/pages/credits.php index a050bc12..98a4dbf4 100644 --- a/themes/cp_app/pages/credits.php +++ b/themes/cp_app/pages/credits.php @@ -17,7 +17,7 @@
<?= $persons[
     'full_name'
-] ?> +] ?>" class="object-cover w-16 rounded-full aspect-square md:h-24 md:w-24 border-gray" />
diff --git a/themes/cp_app/pages/map.php b/themes/cp_app/pages/map.php index 7f7b9661..28a60577 100644 --- a/themes/cp_app/pages/map.php +++ b/themes/cp_app/pages/map.php @@ -15,6 +15,16 @@ ->get('App.siteIcon')['ico'] ?>" /> + + asset('styles/index.css', 'css') ?> diff --git a/themes/cp_app/podcast/_layout.php b/themes/cp_app/podcast/_layout.php index 4c4c812b..66f0831b 100644 --- a/themes/cp_app/podcast/_layout.php +++ b/themes/cp_app/podcast/_layout.php @@ -10,7 +10,17 @@ - + + + @@ -35,7 +45,7 @@
- <?= $podcast->title ?> + <?= $podcast->title ?>

title ?>@handle ?>

- + \ No newline at end of file diff --git a/themes/cp_app/podcast/about.php b/themes/cp_app/podcast/about.php index 0beb5e1e..21bfd3ae 100644 --- a/themes/cp_app/podcast/about.php +++ b/themes/cp_app/podcast/about.php @@ -25,7 +25,7 @@
persons as $person): ?> - <?= $person->full_name ?> + <?= $person->full_name ?> diff --git a/themes/cp_app/podcast/activity.php b/themes/cp_app/podcast/activity.php index 4ca98903..54e84407 100644 --- a/themes/cp_app/podcast/activity.php +++ b/themes/cp_app/podcast/activity.php @@ -10,7 +10,7 @@ <?= interact_as_actor()
-        ->display_name ?> + ->display_name ?>" class="w-10 h-10 rounded-full aspect-square" />

- +
<?= $actor->display_name ?> + class="w-16 h-16 mr-4 -mt-8 rounded-full ring-2 ring-background-elevated aspect-square" />

display_name ?>

@username ?>

diff --git a/themes/cp_app/post/_partials/card.php b/themes/cp_app/post/_partials/card.php index db828b7f..0a6c45d8 100644 --- a/themes/cp_app/post/_partials/card.php +++ b/themes/cp_app/post/_partials/card.php @@ -1,7 +1,7 @@
<?= $post->actor->display_name ?> + ->avatar_image_url ?>" alt="actor->display_name ?>" class="w-10 h-10 rounded-full aspect-square" />