From 074b941702aea740663a507f58c0db7158a9e36b Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 13:00:53 +0200 Subject: [PATCH 01/21] Add initial deployer setup --- composer.json | 8 +- composer.lock | 236 ++++++++++++++++++++++++++++++++++---------------- deploy.php | 88 +++++++++++++++++++ package.json | 3 + 4 files changed, 257 insertions(+), 78 deletions(-) create mode 100644 deploy.php diff --git a/composer.json b/composer.json index 9756d5f65f..9913449a85 100644 --- a/composer.json +++ b/composer.json @@ -67,7 +67,8 @@ "scienta/doctrine-json-functions": "^5.0", "twig/intl-extra": "^3.3", "symfony/expression-language": "6.*", - "symfony/lock": "6.*" + "symfony/lock": "6.*", + "tijsverkoyen/deployer-sumo": "^2.3" }, "require-dev": { "squizlabs/php_codesniffer": "dev-master as 3.6.0", @@ -84,7 +85,10 @@ "symfony/browser-kit": "^6.0" }, "config": { - "bin-dir": "bin" + "bin-dir": "bin", + "allow-plugins": { + "symfony/flex": true + } }, "support": { "forum": "https://fork-cms.herokuapp.com", diff --git a/composer.lock b/composer.lock index 7efeccce04..d1d41c95b6 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": "a13c615208a28a7f2bf1773708121553", + "content-hash": "b9a66b3894c7803bd8710339c6cfb838", "packages": [ { "name": "beberlei/assert", @@ -378,6 +378,49 @@ ], "time": "2022-04-01T19:23:25+00:00" }, + { + "name": "deployer/deployer", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/deployphp/deployer.git", + "reference": "c5c5e79d4e57445918ed24a9cdd3d85b0f261de3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/deployphp/deployer/zipball/c5c5e79d4e57445918ed24a9cdd3d85b0f261de3", + "reference": "c5c5e79d4e57445918ed24a9cdd3d85b0f261de3", + "shasum": "" + }, + "bin": [ + "dep" + ], + "type": "library", + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" + } + ], + "description": "Deployment Tool", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "issues": "https://github.com/deployphp/deployer/issues", + "source": "https://github.com/deployphp/deployer" + }, + "funding": [ + { + "url": "https://github.com/sponsors/antonmedv", + "type": "github" + } + ], + "time": "2023-04-05T09:24:30+00:00" + }, { "name": "doctrine/annotations", "version": "1.14.3", @@ -4903,6 +4946,80 @@ ], "time": "2023-07-20T14:51:28+00:00" }, + { + "name": "symfony/dotenv", + "version": "v6.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dotenv.git", + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", + "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" + }, + "require-dev": { + "symfony/console": "^5.4|^6.0", + "symfony/process": "^5.4|^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Dotenv\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Registers environment variables from a .env file", + "homepage": "https://symfony.com", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "support": { + "source": "https://github.com/symfony/dotenv/tree/v6.3.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-04-21T14:41:17+00:00" + }, { "name": "symfony/error-handler", "version": "v6.3.2", @@ -9609,6 +9726,47 @@ ], "time": "2023-07-31T07:08:24+00:00" }, + { + "name": "tijsverkoyen/deployer-sumo", + "version": "v2.3.6", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/deployer-sumo.git", + "reference": "00fda43e058e417daf1381c352c97dfde89278cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/deployer-sumo/zipball/00fda43e058e417daf1381c352c97dfde89278cd", + "reference": "00fda43e058e417daf1381c352c97dfde89278cd", + "shasum": "" + }, + "require": { + "deployer/deployer": "^7.0", + "symfony/dotenv": "^3.4 || ^5.3 || ^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TijsVerkoyen\\DeployerSumo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "deployer-sumo@verkoyen.eu" + } + ], + "description": "Deployer recipe with SumoCoders specific tasks", + "support": { + "issues": "https://github.com/tijsverkoyen/deployer-sumo/issues", + "source": "https://github.com/tijsverkoyen/deployer-sumo/tree/v2.3.6" + }, + "time": "2023-08-08T13:19:20+00:00" + }, { "name": "twig/extra-bundle", "version": "v3.7.0", @@ -10495,80 +10653,6 @@ ], "time": "2023-06-05T15:30:22+00:00" }, - { - "name": "symfony/dotenv", - "version": "v6.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/dotenv.git", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "conflict": { - "symfony/console": "<5.4", - "symfony/process": "<5.4" - }, - "require-dev": { - "symfony/console": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Dotenv\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Registers environment variables from a .env file", - "homepage": "https://symfony.com", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.3.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-04-21T14:41:17+00:00" - }, { "name": "symfony/maker-bundle", "version": "v1.50.0", @@ -10854,5 +10938,5 @@ "ext-libxml": "*" }, "platform-dev": [], - "plugin-api-version": "2.1.0" + "plugin-api-version": "2.3.0" } diff --git a/deploy.php b/deploy.php new file mode 100644 index 0000000000..e3c8177e61 --- /dev/null +++ b/deploy.php @@ -0,0 +1,88 @@ +setRemoteUser('sites') + ->set('labels', ['stage' => 'staging']) + ->set('deploy_path', '~/apps/{{client}}/{{project}}') + ->set('branch', 'staging') + ->set('bin/php', '{{php_binary}}') + ->set('cachetool', '/var/run/php_{{php_version_numeric}}_fpm_sites.sock') + ->set('document_root', '~/php{{php_version_numeric}}/{{client}}/{{project}}') + ->set('writable_mode', 'chmod'); + +// Define production +host('apache11.websrv.be') + ->setRemoteUser('{{production_user}}') + ->set('labels', ['stage' => 'production']) + ->setPort(2244) + ->set('deploy_path', '~/wwwroot') + ->set('branch', 'master') + ->set('bin/php', '{{php_binary}}') + ->set('document_root', '~/wwwroot/www') + ->set('http_user', '{{production_user}}') + ->set('writable_mode', 'chmod'); + +/************************* + * No need to edit below * + *************************/ + +set('php_binary', function () { + return 'php' . get('php_version'); +}); + +set('php_version_numeric', function () { + return (int) filter_var(get('bin/php'), FILTER_SANITIZE_NUMBER_INT); +}); + +set('use_relative_symlink', false); + +// Shared files/dirs between deploys +add('shared_files', ['.env.local', 'var/employee_sync', 'var/job_sync']); +add('shared_dirs', ['public/images', 'public/pdf', 'var/tmp', 'var/log']); + +// Writable dirs by web server +add('writable_dirs', ['public/images', 'public/pdf', 'var/tmp', 'var/log']); + +// Disallow stats +set('allow_anonymous_stats', false); + +/* + * Composer + * Deployer also has this download&run snippet in its core, but they only use it + * when a global `composer` option isn't available. We always want to use the + * phar version from shared so we overwrite the default behaviour here. + */ +set('shared_folder', '{{deploy_path}}/shared'); +set('bin/composer', function () { + if (!test('[ -f {{shared_folder}}/composer.phar ]')) { + run("cd {{shared_folder}} && curl -sLO https://getcomposer.org/download/latest-stable/composer.phar"); + } + return '{{bin/php}} {{shared_folder}}/composer.phar'; +}); + +set('keep_releases', 3); + +/********************** + * Flow configuration * + **********************/ +// Clear the Opcache +after('deploy:symlink', 'cachetool:clear:opcache'); +// Unlock the deploy when it failed +after('deploy:failed', 'deploy:unlock'); +// Migrate database before symlink new release. +before('deploy:symlink', 'database:migrate'); diff --git a/package.json b/package.json index 0534880d8c..6134a5f8fb 100644 --- a/package.json +++ b/package.json @@ -88,5 +88,8 @@ "src/Frontend/Cache/", "src/Frontend/Core/Js/jquery/jquery.js" ] + }, + "volta": { + "node": "18.17.1" } } From 97879ce89b18ad1a8358eb5f5c2d637498e3ddf9 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 14:36:40 +0200 Subject: [PATCH 02/21] Refactor deployer tasks to run with forkcms 6 --- deploy.php | 135 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 127 insertions(+), 8 deletions(-) diff --git a/deploy.php b/deploy.php index e3c8177e61..73f4f205a8 100644 --- a/deploy.php +++ b/deploy.php @@ -2,16 +2,20 @@ namespace Deployer; +use TijsVerkoyen\DeployerSumo\Utility\Configuration; +use TijsVerkoyen\DeployerSumo\Utility\Database; +use function Symfony\Component\DependencyInjection\Loader\Configurator\env; + require 'recipe/symfony.php'; require 'contrib/cachetool.php'; require __DIR__ . '/vendor/tijsverkoyen/deployer-sumo/sumo.php'; // Define some variables -set('client', ''); -set('project', ''); -set('repository', ''); +set('client', 'sumocoders'); +set('project', 'forkcms'); +set('repository', 'git@git.sumocoders.be:sumocoders/forkcms-6.git'); set('production_url', ''); -set('production_user', ''); +set('production_user', 'sumocoders'); set('php_version', '8.2'); // Define staging @@ -19,7 +23,7 @@ ->setRemoteUser('sites') ->set('labels', ['stage' => 'staging']) ->set('deploy_path', '~/apps/{{client}}/{{project}}') - ->set('branch', 'staging') + ->set('branch', 'add-deployer-deployment') ->set('bin/php', '{{php_binary}}') ->set('cachetool', '/var/run/php_{{php_version_numeric}}_fpm_sites.sock') ->set('document_root', '~/php{{php_version_numeric}}/{{client}}/{{project}}') @@ -52,15 +56,17 @@ set('use_relative_symlink', false); // Shared files/dirs between deploys -add('shared_files', ['.env.local', 'var/employee_sync', 'var/job_sync']); -add('shared_dirs', ['public/images', 'public/pdf', 'var/tmp', 'var/log']); +add('shared_files', ['.env.local']); +add('shared_dirs', ['public/files', 'public/media']); // Writable dirs by web server -add('writable_dirs', ['public/images', 'public/pdf', 'var/tmp', 'var/log']); +add('writable_dirs', ['public/files', 'public/media', 'var', 'var/cache', 'var/log', 'var/sessions']); // Disallow stats set('allow_anonymous_stats', false); +set('composer_options', '--verbose --prefer-dist --no-progress --no-interaction --optimize-autoloader'); + /* * Composer * Deployer also has this download&run snippet in its core, but they only use it @@ -77,6 +83,117 @@ set('keep_releases', 3); +// Upload the assets +desc('Uploads the assets'); +task( + 'sumo:assets:upload', + function () { + upload('public/assets', '{{release_path}}/public'); + } +); + +desc('Ask if the .env.local is filled in correctly'); +task('sumo:check:env', function () { + askConfirmation('Is the .env.local filled in correctly?'); +}); + +$databaseUtility = new Database(); + +desc('Replace the local database with the remote database'); +task( + 'sumo:db:get', + function () use ($databaseUtility) { + $remoteHost = Configuration::fromRemote()->get('FORK_DATABASE_HOST'); + $remotePort = Configuration::fromRemote()->get('FORK_DATABASE_PORT'); + $remoteName = Configuration::fromRemote()->get('FORK_DATABASE_NAME'); + $remoteUser = Configuration::fromRemote()->get('FORK_DATABASE_USER'); + $remotePassword = Configuration::fromRemote()->get('FORK_DATABASE_PASSWORD'); + + $localHost = Configuration::fromLocal()->get('FORK_DATABASE_HOST'); + $localPort = Configuration::fromLocal()->get('FORK_DATABASE_PORT'); + $localName = Configuration::fromLocal()->get('FORK_DATABASE_NAME'); + $localUser = Configuration::fromLocal()->get('FORK_DATABASE_USER'); + $localPassword = Configuration::fromLocal()->get('FORK_DATABASE_PASSWORD'); + + $remoteDatabaseUrl = parse_url("mysql://{$remoteUser}:{$remotePassword}@{$remoteHost}:{$remotePort}/{$remoteName}?serverVersion=5.7&charset=utf8mb4"); + $localDatabaseUrl = parse_url("mysql://{$localUser}:{$localPassword}@{$localHost}:{$localPort}/{$localName}?serverVersion=5.7&charset=utf8mb4"); + + run( + sprintf( + 'mysqldump --lock-tables=false --set-charset %1$s %2$s > {{deploy_path}}/db_download.tmp.sql', + $databaseUtility->getConnectionOptions($remoteDatabaseUrl), + $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl) + ) + ); + download( + '{{deploy_path}}/db_download.tmp.sql', + './db_download.tmp.sql' + ); + run('rm {{deploy_path}}/db_download.tmp.sql'); + + runLocally( + sprintf( + 'mysql %1$s %2$s < ./db_download.tmp.sql', + $databaseUtility->getConnectionOptions($localDatabaseUrl), + $databaseUtility->getNameFromConnectionOptions($localDatabaseUrl) + ) + ); + runLocally('rm ./db_download.tmp.sql'); + } +); + +desc('Replace the remote database with the local database'); +task( + 'sumo:db:put', + function () use ($databaseUtility) { + $remoteHost = Configuration::fromRemote()->get('FORK_DATABASE_HOST'); + $remotePort = Configuration::fromRemote()->get('FORK_DATABASE_PORT'); + $remoteName = Configuration::fromRemote()->get('FORK_DATABASE_NAME'); + $remoteUser = Configuration::fromRemote()->get('FORK_DATABASE_USER'); + $remotePassword = Configuration::fromRemote()->get('FORK_DATABASE_PASSWORD'); + + $localHost = Configuration::fromLocal()->get('FORK_DATABASE_HOST'); + $localPort = Configuration::fromLocal()->get('FORK_DATABASE_PORT'); + $localName = Configuration::fromLocal()->get('FORK_DATABASE_NAME'); + $localUser = Configuration::fromLocal()->get('FORK_DATABASE_USER'); + $localPassword = Configuration::fromLocal()->get('FORK_DATABASE_PASSWORD'); + + $remoteDatabaseUrl = parse_url("mysql://{$remoteUser}:{$remotePassword}@{$remoteHost}:{$remotePort}/{$remoteName}?serverVersion=5.7&charset=utf8mb4"); + $localDatabaseUrl = parse_url("mysql://{$localUser}:{$localPassword}@{$localHost}:{$localPort}/{$localName}?serverVersion=5.7&charset=utf8mb4"); + + // create a backup + // @todo make separate backup dir + run( + sprintf( + 'mysqldump --lock-tables=false --set-charset %1$s %2$s > {{deploy_path}}/backup_%3$s.sql', + $databaseUtility->getConnectionOptions($remoteDatabaseUrl), + $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl), + date('YmdHi') + ) + ); + + runLocally( + sprintf( + 'mysqldump --column-statistics=0 --lock-tables=false --set-charset %1$s %2$s > ./db_upload.tmp.sql', + $databaseUtility->getConnectionOptions($localDatabaseUrl), + $databaseUtility->getNameFromConnectionOptions($localDatabaseUrl) + ) + ); + + upload('./db_upload.tmp.sql', '{{deploy_path}}/db_upload.tmp.sql'); + runLocally('rm ./db_upload.tmp.sql'); + + run( + sprintf( + 'mysql %1$s %2$s < {{deploy_path}}/db_upload.tmp.sql', + $databaseUtility->getConnectionOptions($remoteDatabaseUrl), + $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl) + ) + ); + run('rm {{deploy_path}}/db_upload.tmp.sql'); + } +); + /********************** * Flow configuration * **********************/ @@ -84,5 +201,7 @@ after('deploy:symlink', 'cachetool:clear:opcache'); // Unlock the deploy when it failed after('deploy:failed', 'deploy:unlock'); +// Check config before migrating database +before('database:migrate', 'sumo:check:env'); // Migrate database before symlink new release. before('deploy:symlink', 'database:migrate'); From b20171a0a70aaf2cf1407bc5f49dc487c250c935 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 14:51:23 +0200 Subject: [PATCH 03/21] Remove unnessecary files on deploy --- deploy.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/deploy.php b/deploy.php index 73f4f205a8..d3065e91e0 100644 --- a/deploy.php +++ b/deploy.php @@ -194,6 +194,22 @@ function () use ($databaseUtility) { } ); +desc('Cleanup the codebase'); +task('sumo:files:cleanup', function () { + run('rm -rf {{release_path}}/.github'); + run('rm -rf {{release_path}}/.git'); + run('rm -rf {{release_path}}/.gitattributes'); + run('rm -rf {{release_path}}/Dockerfile'); + run('rm -rf {{release_path}}/docker-compose.yml'); + run('rm -rf {{release_path}}/.scrutinizer.yml'); + run('rm -rf {{release_path}}/.codecov.yml'); + run('rm -rf {{release_path}}/php.ini'); + run('rm -rf {{release_path}}/phpunit.xml.dist'); + run('rm -rf {{release_path}}/phpstan.neon'); + run('rm -rf {{release_path}}/UPGRADE***'); + +}); + /********************** * Flow configuration * **********************/ @@ -205,3 +221,5 @@ function () use ($databaseUtility) { before('database:migrate', 'sumo:check:env'); // Migrate database before symlink new release. before('deploy:symlink', 'database:migrate'); +// Remove unneeded files +before('deploy:symlink', 'sumo:files:cleanup'); From 5ddc9abdb53a8777922ddaacdf35016ffd963b8f Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 14:53:17 +0200 Subject: [PATCH 04/21] Remove docks and docker files --- deploy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index d3065e91e0..4b2c66ce6c 100644 --- a/deploy.php +++ b/deploy.php @@ -207,7 +207,8 @@ function () use ($databaseUtility) { run('rm -rf {{release_path}}/phpunit.xml.dist'); run('rm -rf {{release_path}}/phpstan.neon'); run('rm -rf {{release_path}}/UPGRADE***'); - + run('rm -rf {{release_path}}/var/docks'); + run('rm -rf {{release_path}}/var/docker'); }); /********************** From ef2d35d11e3343caff6040136cbe8046bf9de494 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 15:25:23 +0200 Subject: [PATCH 05/21] Add gitlab ci --- .gitlab-ci.yml | 268 +++++ .stylelintignore | 15 + .stylelintrc | 3 + composer.json | 6 +- composer.lock | 104 +- deploy.php | 2 + package-lock.json | 2555 ++++++++++++++++++++++++++++++++------------ package.json | 5 + phpcs.xml.dist | 20 + phpunit-report.xml | 10 + 10 files changed, 2311 insertions(+), 677 deletions(-) create mode 100644 .gitlab-ci.yml create mode 100644 .stylelintignore create mode 100644 .stylelintrc create mode 100644 phpcs.xml.dist create mode 100644 phpunit-report.xml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000..b26e9581d6 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,268 @@ +stages: + - build + - code quality + - dependency scanning + - test + - deploy + +# Cache default configuration +cache: &global_cache + key: "$CI_PIPELINE_ID" + paths: + - node_modules + - public/build + - vendor + policy: pull + + +# Build section +Install dependencies and build assets: + image: sumocoders/cli-tools-php82:latest + script: + - COMPOSER_MEMORY_LIMIT=-1 composer install --no-scripts --no-progress + - COMPOSER_MEMORY_LIMIT=-1 composer run-script post-autoload-dump + - volta install node + - npm install --no-progress + - npm run build + cache: + <<: *global_cache + policy: pull-push + stage: build + tags: + - docker + + +# Code Quality section +PHP_CodeSniffer - check code styling: + image: sumocoders/framework-php82:latest + script: + - bin/phpcs --report-full --report-junit=phpcs-report.xml + artifacts: + expire_in: 1 week + reports: + junit: phpcs-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + +PHPStan - check for bugs: + image: sumocoders/framework-php82:latest + before_script: + # disable Xdebug and Blackfire extensions + - | + mkdir /usr/local/etc/php/conf.d/disabled + mv /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini /usr/local/etc/php/conf.d/disabled/docker-php-ext-xdebug.ini + mv /usr/local/etc/php/conf.d/blackfire.ini /usr/local/etc/php/conf.d/disabled/blackfire.ini + - bin/console cache:warmup --env=dev + script: + - bin/phpstan analyse --memory-limit=-1 --error-format=junit --no-progress > phpstan-report.xml + after_script: + # Run it again so the output is visible in the job + - bin/phpstan analyse --memory-limit=-1 --no-progress + artifacts: + expire_in: 1 week + reports: + junit: phpstan-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + +Twigcs - check code styling: + image: sumocoders/framework-php82:latest + script: + - bin/twigcs --no-interaction --exclude=vendor --reporter=junit > twigcs-report.xml + after_script: + # Run it again so the output is visible in the job + - bin/twigcs --no-interaction --exclude=vendor + artifacts: + expire_in: 1 week + reports: + junit: twigcs-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + +Stylelint - check code styling: + image: sumocoders/cli-tools-php82:latest + script: + - vendor/bin/convert-to-junit-xml convert:stylelint "$(node_modules/.bin/stylelint --formatter=json .)" > stylelint-report.xml + after_script: + # Run it again so the output is visible in the job + - node_modules/.bin/stylelint . + artifacts: + expire_in: 1 week + reports: + junit: stylelint-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + +StandardJS - check code styling: + image: sumocoders/cli-tools-php82:latest + script: + - bin/convert-to-junit-xml convert:standardjs "$(node_modules/.bin/standard)" > standardjs-report.xml + after_script: + # Run it again so the output is visible in the job + - node_modules/.bin/standard + artifacts: + expire_in: 1 week + reports: + junit: standardjs-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + +TODOs - check for unfinished code: + image: sumocoders/cli-tools-php82:latest + script: + - > + bin/convert-to-junit-xml convert:grep "$( + find . + -path "./.git/*" -prune -o + -path "./.gitlab-ci.yml" -prune -o + -path "./unresolved-todos-report.xml" -prune -o + -path "./bin/*" -prune -o + -path "./node_modules/*" -prune -o + -path "./public/build/*" -prune -o + -path "./var/*" -prune -o + -path "./vendor/*" -prune -o + -not -type d + -exec grep -niH -E "\b(FIXME|TODO|HACK|REVIEW|QUESTION|TEMP)\b" {} \; + )" > unresolved-todos-report.xml + after_script: + # Run it again so the output is visible in the job + - > + find . + -path "./.git/*" -prune -o + -path "./.gitlab-ci.yml" -prune -o + -path "./unresolved-todos-report.xml" -prune -o + -path "./bin/*" -prune -o + -path "./node_modules/*" -prune -o + -path "./public/build/*" -prune -o + -path "./var/*" -prune -o + -path "./vendor/*" -prune -o + -not -type d + -exec grep -niH -E "\b(FIXME|TODO|HACK|REVIEW|QUESTION|TEMP)\b" {} \; + artifacts: + expire_in: 1 week + reports: + junit: unresolved-todos-report.xml + stage: code quality + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + + +# Dependency Scanning section +NPM packages - check for vulnerabilities: + image: sumocoders/cli-tools-php82:latest + script: + - bin/convert-to-junit-xml convert:npm-audit "$(npm audit --production --json)" > npm-audit-report.xml + after_script: + # Run it again so the output is visible in the job output + - npm audit --production + artifacts: + expire_in: 1 week + reports: + junit: npm-audit-report.xml + stage: dependency scanning + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + +PHP packages - check for vulnerabilities: + image: sumocoders/cli-tools-php82:latest + before_script: + - PHP_SC_VERSION=$(curl -s "https://api.github.com/repos/fabpot/local-php-security-checker/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/;s/^v//') + - curl -LSs https://github.com/fabpot/local-php-security-checker/releases/download/v${PHP_SC_VERSION}/local-php-security-checker_${PHP_SC_VERSION}_linux_amd64 > ./php-security-checker + - chmod +x ./php-security-checker + script: + - bin/convert-to-junit-xml convert:sensiolabs-security-check "$(./php-security-checker --format=json)" > security-checker-report.xml + after_script: + # Run it again so the output is visible in the job output + - ./php-security-checker + artifacts: + expire_in: 1 week + reports: + junit: security-checker-report.xml + stage: dependency scanning + needs: ["Install dependencies and build assets"] + tags: + - docker + allow_failure: true + + +# Test section +PHPUnit - Run tests: + image: sumocoders/framework-php82:latest + services: + - mysql:5.7 + before_script: + # Uncomment this if you need Chrome for PDF's + # or if you have integration tests that use Symfony Panther (https://github.com/symfony/panther) + # # install Chromium + # - apt-get --allow-releaseinfo-change update && apt-get install -y chromium + # # install Chromium Chromedriver + # - | + # curl -s -f -L -o /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE_97`/chromedriver_linux64.zip + # unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/ + # disable Xdebug and Blackfire extensions + - | + mkdir /usr/local/etc/php/conf.d/disabled + mv /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini /usr/local/etc/php/conf.d/disabled/docker-php-ext-xdebug.ini + mv /usr/local/etc/php/conf.d/blackfire.ini /usr/local/etc/php/conf.d/disabled/blackfire.ini + script: + #- php bin/console doctrine:migrations:migrate --env=test --no-interaction --allow-no-migration + # Uncomment this if you have fixtures that need to be loaded + # Make sure that you have installed doctrine/doctrine-fixtures-bundle + #- php bin/console doctrine:fixtures:load --env=test + - bin/simple-phpunit --log-junit phpunit-report.xml + artifacts: + reports: + junit: phpunit-report.xml + stage: test + needs: ["Install dependencies and build assets"] + tags: + - docker + variables: + MYSQL_DATABASE: ci_test + MYSQL_ROOT_PASSWORD: root + DATABASE_URL: mysql://root:root@mysql:3306/ci_test?serverVersion=5.7 + PANTHER_NO_SANDBOX: 1 + PANTHER_WEB_SERVER_PORT: 9080 + + +# Deploy section +Deploy - to staging: + image: sumocoders/cli-tools-php82:latest + before_script: + # Add the private SSH key to the CI environment + - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts + - chmod 644 ~/.ssh/known_hosts + script: + - vendor/bin/dep deploy stage=staging + environment: + name: staging + url: https://forkcms.sumocoders.php82.sumocoders.eu + only: + - staging + stage: deploy + tags: + - docker + variables: + USER: "CI/CD gitlab-runner" diff --git a/.stylelintignore b/.stylelintignore new file mode 100644 index 0000000000..9e2ebe6ef7 --- /dev/null +++ b/.stylelintignore @@ -0,0 +1,15 @@ +assets/images/ +bin/* +config/* +drivers/* +migrations/* +node_modules/* +public/* +tests/* +translations/* +var/* +vendor/* +*.* +!*.css +!*.scss +Dockerfile diff --git a/.stylelintrc b/.stylelintrc new file mode 100644 index 0000000000..eff2560999 --- /dev/null +++ b/.stylelintrc @@ -0,0 +1,3 @@ +{ + "extends": "stylelint-config-standard-scss" +} diff --git a/composer.json b/composer.json index 9913449a85..b8d741bcb0 100644 --- a/composer.json +++ b/composer.json @@ -68,7 +68,8 @@ "twig/intl-extra": "^3.3", "symfony/expression-language": "6.*", "symfony/lock": "6.*", - "tijsverkoyen/deployer-sumo": "^2.3" + "tijsverkoyen/deployer-sumo": "^2.3", + "tijsverkoyen/convert-to-junit-xml": "^1.10" }, "require-dev": { "squizlabs/php_codesniffer": "dev-master as 3.6.0", @@ -82,7 +83,8 @@ "doctrine/doctrine-fixtures-bundle": "^3.4", "symfony/stopwatch": "^6.0", "symfony/web-profiler-bundle": "^6.0", - "symfony/browser-kit": "^6.0" + "symfony/browser-kit": "^6.0", + "friendsoftwig/twigcs": "^6.2" }, "config": { "bin-dir": "bin", diff --git a/composer.lock b/composer.lock index d1d41c95b6..1812e27170 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": "b9a66b3894c7803bd8710339c6cfb838", + "content-hash": "ce01c6c07c73423d03798837d2ff9153", "packages": [ { "name": "beberlei/assert", @@ -9726,6 +9726,53 @@ ], "time": "2023-07-31T07:08:24+00:00" }, + { + "name": "tijsverkoyen/convert-to-junit-xml", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/ConvertToJUnitXML.git", + "reference": "d36a912758adbfe33a1da7b23e7fddc1026c3f47" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/ConvertToJUnitXML/zipball/d36a912758adbfe33a1da7b23e7fddc1026c3f47", + "reference": "d36a912758adbfe33a1da7b23e7fddc1026c3f47", + "shasum": "" + }, + "require": { + "symfony/console": "^2.0.5|^3.0|^4.0|^5.0|^6.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^4.2|^5.0", + "symfony/var-dumper": "^4.2|^5.0|^6.0" + }, + "bin": [ + "convert-to-junit-xml" + ], + "type": "library", + "autoload": { + "psr-4": { + "TijsVerkoyen\\ConvertToJUnitXML\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "convert_to_junit_xml@verkoyen.eu" + } + ], + "description": "A tool to format various inputs into JUnit XML", + "support": { + "issues": "https://github.com/tijsverkoyen/ConvertToJUnitXML/issues", + "source": "https://github.com/tijsverkoyen/ConvertToJUnitXML/tree/v1.10.0" + }, + "time": "2022-02-01T12:49:26+00:00" + }, { "name": "tijsverkoyen/deployer-sumo", "version": "v2.3.6", @@ -10201,6 +10248,61 @@ ], "time": "2023-05-02T15:12:16+00:00" }, + { + "name": "friendsoftwig/twigcs", + "version": "6.2.0", + "source": { + "type": "git", + "url": "https://github.com/friendsoftwig/twigcs.git", + "reference": "da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/friendsoftwig/twigcs/zipball/da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6", + "reference": "da697cc1bf6bf22feb1d8dbefcbdb1451e6a35f6", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-hash": "*", + "ext-json": "*", + "ext-mbstring": "*", + "ext-simplexml": "*", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "symfony/console": "^4.4 || ^5.3 || ^6.0", + "symfony/filesystem": "^4.4 || ^5.3 || ^6.0", + "symfony/finder": "^4.4 || ^5.3 || ^6.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.5.27", + "symfony/phpunit-bridge": "^6.2.3" + }, + "bin": [ + "bin/twigcs" + ], + "type": "library", + "autoload": { + "psr-4": { + "FriendsOfTwig\\Twigcs\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tristan Maindron", + "email": "tmaindron@gmail.com" + } + ], + "description": "Checkstyle automation for Twig", + "support": { + "issues": "https://github.com/friendsoftwig/twigcs/issues", + "source": "https://github.com/friendsoftwig/twigcs/tree/6.2.0" + }, + "time": "2023-01-13T16:02:00+00:00" + }, { "name": "nikic/php-parser", "version": "v4.16.0", diff --git a/deploy.php b/deploy.php index 4b2c66ce6c..58fd59b274 100644 --- a/deploy.php +++ b/deploy.php @@ -209,6 +209,8 @@ function () use ($databaseUtility) { run('rm -rf {{release_path}}/UPGRADE***'); run('rm -rf {{release_path}}/var/docks'); run('rm -rf {{release_path}}/var/docker'); + run('rm -rf {{release_path}}/.gitlab-ci'); + run('rm -rf {{release_path}}/.phpcs.xml.dist'); }); /********************** diff --git a/package-lock.json b/package-lock.json index 7f1abbd674..237fb88912 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,11 @@ "name": "forkcms", "version": "1.0.0", "license": "MIT", + "dependencies": { + "stylelint": "^15.10.3", + "stylelint-config-standard": "^34.0.0", + "stylelint-config-standard-scss": "^11.0.0" + }, "devDependencies": { "@editorjs/editorjs": "^2.23.2", "@editorjs/embed": "^2.5.1", @@ -78,7 +83,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "dependencies": { "@babel/highlight": "^7.18.6" }, @@ -468,7 +472,6 @@ "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -518,7 +521,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -1755,6 +1757,67 @@ "node": ">=6.9.0" } }, + "node_modules/@csstools/css-parser-algorithms": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", + "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-tokenizer": "^2.2.0" + } + }, + "node_modules/@csstools/css-tokenizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", + "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + } + }, + "node_modules/@csstools/media-query-list-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz", + "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0" + } + }, "node_modules/@csstools/postcss-cascade-layers": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", @@ -2357,9 +2420,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -2367,9 +2430,9 @@ } }, "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "dependencies": { "@jridgewell/set-array": "^1.0.1", @@ -2406,7 +2469,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -2419,7 +2481,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "engines": { "node": ">= 8" } @@ -2428,7 +2489,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -2463,9 +2523,9 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2774,9 +2834,9 @@ } }, "node_modules/@symfony/webpack-encore/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2879,9 +2939,9 @@ } }, "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true, "peer": true }, @@ -2978,8 +3038,7 @@ "node_modules/@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "node_modules/@types/node": { "version": "18.11.9", @@ -2990,8 +3049,7 @@ "node_modules/@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -3182,73 +3240,73 @@ "dev": true }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "peer": true, "dependencies": { @@ -3256,9 +3314,9 @@ } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "peer": true, "dependencies": { @@ -3266,79 +3324,79 @@ } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "peer": true, "dependencies": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -3415,9 +3473,9 @@ } }, "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -3427,9 +3485,9 @@ } }, "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peer": true, "peerDependencies": { @@ -3577,7 +3635,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -3586,7 +3643,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -3629,8 +3685,7 @@ "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "node_modules/array-flatten": { "version": "2.1.2", @@ -3731,7 +3786,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -3753,6 +3807,14 @@ "webpack": ">=5.0.0" } }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -3868,8 +3930,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base64-js": { "version": "1.5.1", @@ -4083,7 +4144,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -4093,7 +4153,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "dependencies": { "fill-range": "^7.0.1" }, @@ -4181,9 +4240,9 @@ } }, "node_modules/builtins/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -4362,7 +4421,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -4371,7 +4429,6 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, "engines": { "node": ">=10" }, @@ -4437,7 +4494,6 @@ "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", @@ -4451,7 +4507,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "engines": { "node": ">=0.8.0" } @@ -4586,7 +4641,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -4594,8 +4648,7 @@ "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/color-support": { "version": "1.1.3", @@ -4609,8 +4662,7 @@ "node_modules/colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "node_modules/colorette": { "version": "2.0.19", @@ -4687,8 +4739,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", @@ -4868,6 +4919,14 @@ "postcss": "^8.0.9" } }, + "node_modules/css-functions-list": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", + "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==", + "engines": { + "node": ">=12.22" + } + }, "node_modules/css-has-pseudo": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", @@ -4925,9 +4984,9 @@ } }, "node_modules/css-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -5106,7 +5165,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -5218,7 +5276,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -5235,7 +5292,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5244,7 +5300,6 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -5260,7 +5315,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5357,6 +5411,17 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -5475,8 +5540,7 @@ "node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -5507,9 +5571,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "peer": true, "dependencies": { @@ -5570,7 +5634,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "dependencies": { "is-arrayish": "^0.2.1" } @@ -5623,9 +5686,9 @@ } }, "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true, "peer": true }, @@ -5968,9 +6031,9 @@ } }, "node_modules/eslint-plugin-n/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -6468,8 +6531,22 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", @@ -6490,7 +6567,6 @@ "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, "engines": { "node": ">= 4.9.1" } @@ -6499,7 +6575,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -6520,7 +6595,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -6570,7 +6644,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -6651,7 +6724,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "dependencies": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -6664,7 +6736,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "dependencies": { "glob": "^7.1.3" }, @@ -6684,8 +6755,7 @@ "node_modules/flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { "version": "1.15.2", @@ -6759,8 +6829,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.2", @@ -6779,8 +6848,7 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -6933,7 +7001,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6953,7 +7020,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -6968,6 +7034,41 @@ "dev": true, "peer": true }, + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dependencies": { + "global-prefix": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dependencies": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, "node_modules/globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -7003,6 +7104,11 @@ "node": ">=0.10.0" } }, + "node_modules/globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + }, "node_modules/globule": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", @@ -7077,7 +7183,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, "engines": { "node": ">=6" } @@ -7086,7 +7191,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -7107,7 +7211,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "engines": { "node": ">=4" } @@ -7182,7 +7285,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -7194,7 +7296,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -7250,6 +7351,17 @@ "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, + "node_modules/html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -7270,9 +7382,9 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "node_modules/http-deceiver": { @@ -7453,10 +7565,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true, + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "engines": { "node": ">= 4" } @@ -7465,7 +7576,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -7477,6 +7587,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "engines": { + "node": ">=8" + } + }, "node_modules/import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -7501,7 +7619,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -7525,7 +7642,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -7534,8 +7650,12 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -7591,8 +7711,7 @@ "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-bigint": { "version": "1.0.4", @@ -7650,7 +7769,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -7692,7 +7810,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -7701,7 +7818,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, "engines": { "node": ">=8" } @@ -7710,7 +7826,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -7740,7 +7855,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -7797,7 +7911,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -7918,8 +8031,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", @@ -8087,14 +8199,12 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "dependencies": { "argparse": "^2.0.1" }, @@ -8124,8 +8234,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -8140,9 +8249,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "bin": { "json5": "lib/cli.js" @@ -8186,7 +8295,6 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -8200,6 +8308,11 @@ "node": ">= 8" } }, + "node_modules/known-css-properties": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", + "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==" + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -8225,8 +8338,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/livereload-js": { "version": "2.4.0", @@ -8333,6 +8445,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -8415,7 +8532,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true, "engines": { "node": ">=8" }, @@ -8423,6 +8539,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/mdn-data": { "version": "2.0.14", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", @@ -8497,6 +8622,14 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, "node_modules/methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -8510,7 +8643,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -8565,7 +8697,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true, "engines": { "node": ">=4" } @@ -8652,7 +8783,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -8673,7 +8803,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -8788,8 +8917,7 @@ "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "version": "7.2.5", @@ -8811,10 +8939,15 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -9039,9 +9172,9 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9124,9 +9257,9 @@ } }, "node_modules/node-notifier/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -9262,7 +9395,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -9277,7 +9409,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -9286,10 +9417,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9304,7 +9434,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9506,7 +9635,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } @@ -9637,7 +9765,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "dependencies": { "callsites": "^3.0.0" }, @@ -9649,7 +9776,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -9676,7 +9802,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, "engines": { "node": ">=8" } @@ -9685,7 +9810,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9721,7 +9845,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, "engines": { "node": ">=8" } @@ -9729,14 +9852,12 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -9939,10 +10060,9 @@ } }, "node_modules/postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "dev": true, + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", "funding": [ { "type": "opencollective", @@ -9951,10 +10071,14 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -10414,9 +10538,9 @@ } }, "node_modules/postcss-loader/node_modules/semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -10452,6 +10576,11 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, "node_modules/postcss-merge-longhand": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", @@ -10971,6 +11100,51 @@ "postcss": "^8.0.3" } }, + "node_modules/postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + }, + "node_modules/postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.3.3" + } + }, + "node_modules/postcss-scss": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.8.tgz", + "integrity": "sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss-scss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": ">=12.0" + }, + "peerDependencies": { + "postcss": "^8.4.29" + } + }, "node_modules/postcss-selector-not": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", @@ -10991,10 +11165,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -11037,8 +11210,7 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -11121,7 +11293,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, "engines": { "node": ">=6" } @@ -11145,7 +11316,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -11308,9 +11478,9 @@ } }, "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "bin": { "semver": "bin/semver" @@ -11529,7 +11699,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11584,7 +11753,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "engines": { "node": ">=4" } @@ -11618,7 +11786,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -11640,7 +11807,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -11832,9 +11998,9 @@ } }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -11895,9 +12061,9 @@ "dev": true }, "node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { "randombytes": "^2.1.0" @@ -12065,6 +12231,60 @@ "integrity": "sha512-ZevKLmdZcggAaCzZZcikt/5fGKC6S9R4PaLHzIaH7hJDrTnmOZ/Q8HN+rjLioMijeSgLgXhyFVEqsoFfkocxKA==", "dev": true }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -12139,7 +12359,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -12164,7 +12383,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -12173,14 +12391,12 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -12189,8 +12405,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, "node_modules/spdy": { "version": "4.0.2", @@ -12391,7 +12606,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -12452,7 +12666,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -12518,6 +12731,11 @@ "webpack": "^5.0.0" } }, + "node_modules/style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + }, "node_modules/stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -12528,17 +12746,484 @@ "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": "^10 || ^12 || >=14.0" + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/stylelint": { + "version": "15.10.3", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", + "integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", + "dependencies": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.0", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^6.0.1", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.28.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.27", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "stylelint": "bin/stylelint.mjs" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/stylelint" + } + }, + "node_modules/stylelint-config-recommended": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "stylelint": "^15.10.0" + } + }, + "node_modules/stylelint-config-recommended-scss": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.0.0.tgz", + "integrity": "sha512-7AmMIsHTsuwUQm7I+DD5BGeIgCvqYZ4BpeYJJpb1cUXQwrJAKjA+GBotFZgUEGP8lAM+wmd91ovzOi8xfAyWEw==", + "dependencies": { + "postcss-scss": "^4.0.7", + "stylelint-config-recommended": "^13.0.0", + "stylelint-scss": "^5.1.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^15.10.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-config-standard": { + "version": "34.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", + "dependencies": { + "stylelint-config-recommended": "^13.0.0" + }, + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "stylelint": "^15.10.0" + } + }, + "node_modules/stylelint-config-standard-scss": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.0.0.tgz", + "integrity": "sha512-fGE79NBOLg09a9afqGH/guJulRULCaQWWv4cv1v2bMX92B+fGb0y56WqIguwvFcliPmmUXiAhKrrnXilIeXoHA==", + "dependencies": { + "stylelint-config-recommended-scss": "^13.0.0", + "stylelint-config-standard": "^34.0.0" + }, + "peerDependencies": { + "postcss": "^8.3.3", + "stylelint": "^15.10.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + } + } + }, + "node_modules/stylelint-scss": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.1.0.tgz", + "integrity": "sha512-E+KlQFXv1Euha43qw3q+wKBSli557wxbbo6/39DWhRNXlUa9Cz+FYrcgz+PT6ag0l6UisCYjAGCNhoSl4FcwlA==", + "dependencies": { + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "stylelint": "^14.5.1 || ^15.0.0" + } + }, + "node_modules/stylelint/node_modules/@csstools/selector-specificity": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", + "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/csstools" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + ], + "engines": { + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss-selector-parser": "^6.0.13" + } + }, + "node_modules/stylelint/node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + }, + "node_modules/stylelint/node_modules/camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "dependencies": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/cosmiconfig": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz", + "integrity": "sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==", + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/stylelint/node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/stylelint/node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stylelint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "node_modules/stylelint/node_modules/meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "dependencies": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "dependencies": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "dependencies": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "dependencies": { + "min-indent": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "engines": { + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stylelint/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" } }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -12546,6 +13231,37 @@ "node": ">=4" } }, + "node_modules/supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=14.18" + } + }, + "node_modules/supports-hyperlinks/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==", + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -12558,6 +13274,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, "node_modules/svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -12588,6 +13309,41 @@ "get-port": "^3.1.0" } }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "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/table/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==" + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -12615,13 +13371,13 @@ } }, "node_modules/terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dev": true, "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -12633,16 +13389,16 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -12816,7 +13572,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -12861,9 +13616,9 @@ } }, "node_modules/tsconfig-paths/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { "minimist": "^1.2.0" @@ -13046,7 +13801,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "dependencies": { "punycode": "^2.1.0" } @@ -13099,8 +13853,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", @@ -13130,7 +13883,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -13284,23 +14036,23 @@ } }, "node_modules/webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -13309,9 +14061,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -13692,9 +14444,9 @@ } }, "node_modules/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "peer": true, "dependencies": { @@ -13781,9 +14533,9 @@ "peer": true }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -13842,8 +14594,30 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/ws": { "version": "8.11.0", @@ -13887,8 +14661,7 @@ "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/yaml": { "version": "1.10.2", @@ -13930,7 +14703,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -13955,7 +14727,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, "requires": { "@babel/highlight": "^7.18.6" } @@ -14252,8 +15023,7 @@ "@babel/helper-validator-identifier": { "version": "7.19.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==" }, "@babel/helper-validator-option": { "version": "7.18.6", @@ -14291,7 +15061,6 @@ "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.18.6", "chalk": "^2.0.0", @@ -15147,6 +15916,23 @@ "to-fast-properties": "^2.0.0" } }, + "@csstools/css-parser-algorithms": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.3.1.tgz", + "integrity": "sha512-xrvsmVUtefWMWQsGgFffqWSK03pZ1vfDki4IVIIUxxDKnGBzqNgv0A7SB1oXtVNEkcVO8xi1ZrTL29HhSu5kGA==", + "requires": {} + }, + "@csstools/css-tokenizer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.0.tgz", + "integrity": "sha512-wErmsWCbsmig8sQKkM6pFhr/oPha1bHfvxsUY5CYSQxwyhA9Ulrs8EqCgClhg4Tgg2XapVstGqSVcz0xOYizZA==" + }, + "@csstools/media-query-list-parser": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.4.tgz", + "integrity": "sha512-V/OUXYX91tAC1CDsiY+HotIcJR+vPtzrX8pCplCpT++i8ThZZsq5F5dzZh/bDM3WUOjrvC1ljed1oSJxMfjqhw==", + "requires": {} + }, "@csstools/postcss-cascade-layers": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", @@ -15541,9 +16327,9 @@ "dev": true }, "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", @@ -15551,9 +16337,9 @@ }, "dependencies": { "@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, "requires": { "@jridgewell/set-array": "^1.0.1", @@ -15589,7 +16375,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -15598,14 +16383,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -15631,9 +16414,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -15764,9 +16547,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -15856,9 +16639,9 @@ } }, "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", "dev": true, "peer": true }, @@ -15955,8 +16738,7 @@ "@types/minimist": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", - "dev": true + "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" }, "@types/node": { "version": "18.11.9", @@ -15967,8 +16749,7 @@ "@types/normalize-package-data": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", - "dev": true + "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" }, "@types/parse-json": { "version": "4.0.0", @@ -16156,73 +16937,73 @@ "dev": true }, "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", "dev": true, "peer": true }, "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", "dev": true, "peer": true }, "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==", "dev": true, "peer": true }, "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", "dev": true, "peer": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dev": true, "peer": true, "requires": { @@ -16230,9 +17011,9 @@ } }, "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dev": true, "peer": true, "requires": { @@ -16240,79 +17021,79 @@ } }, "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", "dev": true, "peer": true }, "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dev": true, "peer": true, "requires": { - "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -16373,15 +17154,15 @@ } }, "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true }, "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, "peer": true, "requires": {} @@ -16490,14 +17271,12 @@ "ansi-regex": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" } @@ -16531,8 +17310,7 @@ "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" }, "array-flatten": { "version": "2.1.2", @@ -16608,8 +17386,7 @@ "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "dev": true + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" }, "assets-webpack-plugin": { "version": "7.0.0", @@ -16622,6 +17399,11 @@ "lodash": "^4.17.20" } }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + }, "async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", @@ -16699,8 +17481,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "base64-js": { "version": "1.5.1", @@ -16870,7 +17651,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -16880,7 +17660,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -16932,9 +17711,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -17073,14 +17852,12 @@ "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" }, "camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" }, "camelcase-keys": { "version": "6.2.2", @@ -17123,7 +17900,6 @@ "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", @@ -17133,8 +17909,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" } } }, @@ -17233,7 +18008,6 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "requires": { "color-name": "1.1.3" } @@ -17241,8 +18015,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "color-support": { "version": "1.1.3", @@ -17253,8 +18026,7 @@ "colord": { "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==" }, "colorette": { "version": "2.0.19", @@ -17324,8 +18096,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "connect-history-api-fallback": { "version": "2.0.0", @@ -17461,6 +18232,11 @@ "dev": true, "requires": {} }, + "css-functions-list": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.0.tgz", + "integrity": "sha512-d/jBMPyYybkkLVypgtGv12R+pIFw4/f/IHtCTxWpZc8ofTYOPigIgmA6vu5rMHartZC+WuXhBUHfnyNUIQSYrg==" + }, "css-has-pseudo": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", @@ -17496,9 +18272,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -17606,8 +18382,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { "version": "5.1.14", @@ -17689,7 +18464,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "requires": { "ms": "2.1.2" } @@ -17697,14 +18471,12 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "dev": true + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==" }, "decamelize-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "dev": true, "requires": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -17713,8 +18485,7 @@ "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "dev": true + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==" } } }, @@ -17788,6 +18559,14 @@ "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", "dev": true }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, "dns-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", @@ -17879,8 +18658,7 @@ "emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "emojis-list": { "version": "3.0.0", @@ -17905,9 +18683,9 @@ } }, "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, "peer": true, "requires": { @@ -17953,7 +18731,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, "requires": { "is-arrayish": "^0.2.1" } @@ -18000,9 +18777,9 @@ } }, "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", "dev": true, "peer": true }, @@ -18364,9 +19141,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -18613,8 +19390,19 @@ "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } }, "fast-json-stable-stringify": { "version": "2.1.0", @@ -18634,14 +19422,12 @@ "fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==" }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -18659,7 +19445,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, "requires": { "flat-cache": "^3.0.4" } @@ -18691,7 +19476,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -18759,7 +19543,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, "requires": { "flatted": "^3.1.0", "rimraf": "^3.0.2" @@ -18769,7 +19552,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, "requires": { "glob": "^7.1.3" } @@ -18785,8 +19567,7 @@ "flatted": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "follow-redirects": { "version": "1.15.2", @@ -18830,8 +19611,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "fsevents": { "version": "2.3.2", @@ -18843,8 +19623,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "function.prototype.name": { "version": "1.1.5", @@ -18955,7 +19734,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18969,7 +19747,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -18981,6 +19758,34 @@ "dev": true, "peer": true }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", @@ -19009,6 +19814,11 @@ } } }, + "globjoin": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", + "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" + }, "globule": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", @@ -19072,14 +19882,12 @@ "hard-rejection": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -19093,8 +19901,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" }, "has-property-descriptors": { "version": "1.0.0", @@ -19148,7 +19955,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, "requires": { "lru-cache": "^6.0.0" }, @@ -19157,7 +19963,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } @@ -19214,6 +20019,11 @@ "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", "dev": true }, + "html-tags": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", + "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==" + }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -19227,9 +20037,9 @@ } }, "http-cache-semantics": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", - "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, "http-deceiver": { @@ -19357,21 +20167,24 @@ "dev": true }, "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "dev": true + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" }, "import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, + "import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==" + }, "import-local": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", @@ -19386,8 +20199,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" }, "indent-string": { "version": "4.0.0", @@ -19405,7 +20217,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -19414,8 +20225,12 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "internal-slot": { "version": "1.0.3", @@ -19462,8 +20277,7 @@ "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "is-bigint": { "version": "1.0.4", @@ -19503,7 +20317,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -19526,20 +20339,17 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -19559,8 +20369,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { "version": "1.0.7", @@ -19598,8 +20407,7 @@ "is-plain-obj": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==" }, "is-plain-object": { "version": "2.0.4", @@ -19681,8 +20489,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "isobject": { "version": "3.0.1", @@ -19813,14 +20620,12 @@ "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, "requires": { "argparse": "^2.0.1" } @@ -19841,8 +20646,7 @@ "json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "json-schema-traverse": { "version": "0.4.1", @@ -19857,9 +20661,9 @@ "dev": true }, "json5": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", - "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true }, "jstree": { @@ -19893,8 +20697,7 @@ "kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" }, "klona": { "version": "2.0.5", @@ -19902,6 +20705,11 @@ "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", "dev": true }, + "known-css-properties": { + "version": "0.28.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.28.0.tgz", + "integrity": "sha512-9pSL5XB4J+ifHP0e0jmmC98OGC1nL8/JjS+fi6mnTlIf//yt/MfVLtKg7S6nCtj/8KTcWX7nRlY0XywoYY1ISQ==" + }, "levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -19921,8 +20729,7 @@ "lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "livereload-js": { "version": "2.4.0", @@ -20013,6 +20820,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -20079,8 +20891,12 @@ "map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", - "dev": true + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==" + }, + "mathml-tag-names": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", + "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==" }, "mdn-data": { "version": "2.0.14", @@ -20143,6 +20959,11 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, "methods": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", @@ -20153,7 +20974,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -20189,8 +21009,7 @@ "min-indent": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", - "dev": true + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" }, "mini-css-extract-plugin": { "version": "2.7.0", @@ -20252,7 +21071,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -20267,7 +21085,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", - "dev": true, "requires": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -20350,8 +21167,7 @@ "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "multicast-dns": { "version": "7.2.5", @@ -20370,10 +21186,9 @@ "dev": true }, "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" }, "natural-compare": { "version": "1.4.0", @@ -20544,9 +21359,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20616,9 +21431,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -20718,7 +21533,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, "requires": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -20730,16 +21544,14 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "requires": { "yallist": "^4.0.0" } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", - "dev": true, + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "requires": { "lru-cache": "^6.0.0" } @@ -20749,8 +21561,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -20892,7 +21703,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "requires": { "wrappy": "1" } @@ -20991,7 +21801,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "requires": { "callsites": "^3.0.0" } @@ -21000,7 +21809,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -21017,14 +21825,12 @@ "path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "path-is-inside": { "version": "1.0.2", @@ -21053,20 +21859,17 @@ "path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pify": { "version": "4.0.1", @@ -21221,12 +22024,11 @@ } }, "postcss": { - "version": "8.4.19", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.19.tgz", - "integrity": "sha512-h+pbPsyhlYj6N2ozBmHhHrs9DzGmbaarbLvWipMRO7RLS+v4onj26MPFXA5OBYFxyqYhUJK456SwDcY9H2/zsA==", - "dev": true, + "version": "8.4.29", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.29.tgz", + "integrity": "sha512-cbI+jaqIeu/VGqXEarWkRCCffhjgXc0qjBtXpqJhTBohMUjUQnbBr0xqX3vEKudc4iviTewcJo5ajcec5+wdJw==", "requires": { - "nanoid": "^3.3.4", + "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } @@ -21481,9 +22283,9 @@ } }, "semver": { - "version": "7.3.8", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", - "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "requires": { "lru-cache": "^6.0.0" @@ -21505,6 +22307,11 @@ "dev": true, "requires": {} }, + "postcss-media-query-parser": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" + }, "postcss-merge-longhand": { "version": "5.1.7", "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz", @@ -21827,6 +22634,23 @@ "dev": true, "requires": {} }, + "postcss-resolve-nested-selector": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", + "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==" + }, + "postcss-safe-parser": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", + "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", + "requires": {} + }, + "postcss-scss": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-4.0.8.tgz", + "integrity": "sha512-Cr0X8Eu7xMhE96PJck6ses/uVVXDtE5ghUTKNUYgm8ozgP2TkgV3LWs3WgLV1xaSSLq8ZFiXaUrj0LVgG1fGEA==", + "requires": {} + }, "postcss-selector-not": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", @@ -21837,10 +22661,9 @@ } }, "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dev": true, + "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -21868,8 +22691,7 @@ "postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "prelude-ls": { "version": "1.2.1", @@ -21941,8 +22763,7 @@ "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "qs": { "version": "6.11.0", @@ -21956,8 +22777,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "4.0.1", @@ -22063,9 +22883,9 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true }, "type-fest": { @@ -22261,8 +23081,7 @@ "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" }, "requires-port": { "version": "1.0.0", @@ -22303,8 +23122,7 @@ "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, "resolve-url-loader": { "version": "5.0.0", @@ -22328,8 +23146,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rimraf": { "version": "2.7.1", @@ -22344,7 +23161,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -22460,9 +23276,9 @@ } }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true }, "send": { @@ -22518,9 +23334,9 @@ } }, "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "requires": { "randombytes": "^2.1.0" @@ -22666,6 +23482,44 @@ "integrity": "sha512-ZevKLmdZcggAaCzZZcikt/5fGKC6S9R4PaLHzIaH7hJDrTnmOZ/Q8HN+rjLioMijeSgLgXhyFVEqsoFfkocxKA==", "dev": true }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + } + } + }, "smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -22725,8 +23579,7 @@ "source-map-js": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" }, "source-map-support": { "version": "0.5.21", @@ -22748,7 +23601,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -22757,14 +23609,12 @@ "spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -22773,8 +23623,7 @@ "spdx-license-ids": { "version": "3.0.12", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==" }, "spdy": { "version": "4.0.2", @@ -22926,7 +23775,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, "requires": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -22975,7 +23823,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "requires": { "ansi-regex": "^5.0.1" } @@ -23014,6 +23861,11 @@ "dev": true, "requires": {} }, + "style-search": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", + "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==" + }, "stylehacks": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz", @@ -23024,21 +23876,337 @@ "postcss-selector-parser": "^6.0.4" } }, + "stylelint": { + "version": "15.10.3", + "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-15.10.3.tgz", + "integrity": "sha512-aBQMMxYvFzJJwkmg+BUUg3YfPyeuCuKo2f+LOw7yYbU8AZMblibwzp9OV4srHVeQldxvSFdz0/Xu8blq2AesiA==", + "requires": { + "@csstools/css-parser-algorithms": "^2.3.1", + "@csstools/css-tokenizer": "^2.2.0", + "@csstools/media-query-list-parser": "^2.1.4", + "@csstools/selector-specificity": "^3.0.0", + "balanced-match": "^2.0.0", + "colord": "^2.9.3", + "cosmiconfig": "^8.2.0", + "css-functions-list": "^3.2.0", + "css-tree": "^2.3.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.1", + "fastest-levenshtein": "^1.0.16", + "file-entry-cache": "^6.0.1", + "global-modules": "^2.0.0", + "globby": "^11.1.0", + "globjoin": "^0.1.4", + "html-tags": "^3.3.1", + "ignore": "^5.2.4", + "import-lazy": "^4.0.0", + "imurmurhash": "^0.1.4", + "is-plain-object": "^5.0.0", + "known-css-properties": "^0.28.0", + "mathml-tag-names": "^2.1.3", + "meow": "^10.1.5", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.27", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-safe-parser": "^6.0.0", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0", + "resolve-from": "^5.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "style-search": "^0.1.0", + "supports-hyperlinks": "^3.0.0", + "svg-tags": "^1.0.0", + "table": "^6.8.1", + "write-file-atomic": "^5.0.1" + }, + "dependencies": { + "@csstools/selector-specificity": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-3.0.0.tgz", + "integrity": "sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==", + "requires": {} + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "balanced-match": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", + "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==" + }, + "camelcase-keys": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", + "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", + "requires": { + "camelcase": "^6.3.0", + "map-obj": "^4.1.0", + "quick-lru": "^5.1.1", + "type-fest": "^1.2.1" + } + }, + "cosmiconfig": { + "version": "8.3.5", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.5.tgz", + "integrity": "sha512-A5Xry3xfS96wy2qbiLkQLAg4JUrR2wvfybxj6yqLmrUfMAvhS3MZxIP2oQn0grgYIvJqzpeTEWu4vK0t+12NNw==", + "requires": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + } + }, + "css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "requires": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + } + }, + "decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==" + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + }, + "indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + }, + "meow": { + "version": "10.1.5", + "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", + "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", + "requires": { + "@types/minimist": "^1.2.2", + "camelcase-keys": "^7.0.0", + "decamelize": "^5.0.0", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.2", + "read-pkg-up": "^8.0.0", + "redent": "^4.0.0", + "trim-newlines": "^4.0.2", + "type-fest": "^1.2.2", + "yargs-parser": "^20.2.9" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" + }, + "read-pkg": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", + "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^3.0.2", + "parse-json": "^5.2.0", + "type-fest": "^1.0.1" + } + }, + "read-pkg-up": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", + "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", + "requires": { + "find-up": "^5.0.0", + "read-pkg": "^6.0.0", + "type-fest": "^1.0.1" + } + }, + "redent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", + "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", + "requires": { + "indent-string": "^5.0.0", + "strip-indent": "^4.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + }, + "strip-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", + "requires": { + "min-indent": "^1.0.1" + } + }, + "trim-newlines": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", + "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==" + }, + "type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==" + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + } + } + }, + "stylelint-config-recommended": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-13.0.0.tgz", + "integrity": "sha512-EH+yRj6h3GAe/fRiyaoO2F9l9Tgg50AOFhaszyfov9v6ayXJ1IkSHwTxd7lB48FmOeSGDPLjatjO11fJpmarkQ==", + "requires": {} + }, + "stylelint-config-recommended-scss": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-13.0.0.tgz", + "integrity": "sha512-7AmMIsHTsuwUQm7I+DD5BGeIgCvqYZ4BpeYJJpb1cUXQwrJAKjA+GBotFZgUEGP8lAM+wmd91ovzOi8xfAyWEw==", + "requires": { + "postcss-scss": "^4.0.7", + "stylelint-config-recommended": "^13.0.0", + "stylelint-scss": "^5.1.0" + } + }, + "stylelint-config-standard": { + "version": "34.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-34.0.0.tgz", + "integrity": "sha512-u0VSZnVyW9VSryBG2LSO+OQTjN7zF9XJaAJRX/4EwkmU0R2jYwmBSN10acqZisDitS0CLiEiGjX7+Hrq8TAhfQ==", + "requires": { + "stylelint-config-recommended": "^13.0.0" + } + }, + "stylelint-config-standard-scss": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-11.0.0.tgz", + "integrity": "sha512-fGE79NBOLg09a9afqGH/guJulRULCaQWWv4cv1v2bMX92B+fGb0y56WqIguwvFcliPmmUXiAhKrrnXilIeXoHA==", + "requires": { + "stylelint-config-recommended-scss": "^13.0.0", + "stylelint-config-standard": "^34.0.0" + } + }, + "stylelint-scss": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-5.1.0.tgz", + "integrity": "sha512-E+KlQFXv1Euha43qw3q+wKBSli557wxbbo6/39DWhRNXlUa9Cz+FYrcgz+PT6ag0l6UisCYjAGCNhoSl4FcwlA==", + "requires": { + "postcss-media-query-parser": "^0.2.3", + "postcss-resolve-nested-selector": "^0.1.1", + "postcss-selector-parser": "^6.0.13", + "postcss-value-parser": "^4.2.0" + } + }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", + "integrity": "sha512-QBDPHyPQDRTy9ku4URNGY5Lah8PAaXs6tAAwp55sL5WCsSW7GIfdf6W5ixfziW+t7wh3GVvHyHHyQ1ESsoRvaA==", + "requires": { + "has-flag": "^4.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==" + }, + "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==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true }, + "svg-tags": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz", + "integrity": "sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==" + }, "svgo": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", @@ -23063,6 +24231,36 @@ "get-port": "^3.1.0" } }, + "table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "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==" + } + } + }, "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -23084,13 +24282,13 @@ } }, "terser": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.15.1.tgz", - "integrity": "sha512-K1faMUvpm/FBxjBXud0LWVAGxmvoPbZbfTCYbSgaaYQaIXI3/TdI7a7ZGA73Zrou6Q8Zmz3oeUTsp/dj+ag2Xw==", + "version": "5.19.4", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.4.tgz", + "integrity": "sha512-6p1DjHeuluwxDXcuT9VR8p64klWJKo1ILiy19s6C9+0Bh2+NWTX6nD9EPppiER4ICkHDVB1RkVpin/YW2nQn/g==", "dev": true, "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -23104,16 +24302,16 @@ } }, "terser-webpack-plugin": { - "version": "5.3.6", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "requires": { - "@jridgewell/trace-mapping": "^0.3.14", + "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.14.1" + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "dependencies": { "has-flag": { @@ -23232,7 +24430,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -23268,9 +24465,9 @@ }, "dependencies": { "json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "requires": { "minimist": "^1.2.0" @@ -23400,7 +24597,6 @@ "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, "requires": { "punycode": "^2.1.0" } @@ -23432,8 +24628,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "utila": { "version": "0.4.0", @@ -23457,7 +24652,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -23575,23 +24769,23 @@ } }, "webpack": { - "version": "5.75.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.75.0.tgz", - "integrity": "sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==", + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", "dev": true, "peer": true, "requires": { "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", + "acorn-import-assertions": "^1.9.0", "browserslist": "^4.14.5", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.10.0", - "es-module-lexer": "^0.9.0", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", @@ -23600,9 +24794,9 @@ "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^3.1.0", + "schema-utils": "^3.2.0", "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.1.3", + "terser-webpack-plugin": "^5.3.7", "watchpack": "^2.4.0", "webpack-sources": "^3.2.3" }, @@ -23626,9 +24820,9 @@ "peer": true }, "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "peer": true, "requires": { @@ -23919,9 +25113,9 @@ "peer": true }, "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true }, "wrap-ansi": { @@ -23964,8 +25158,23 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "dependencies": { + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" + } + } }, "ws": { "version": "8.11.0", @@ -23989,8 +25198,7 @@ "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "yaml": { "version": "1.10.2", @@ -24022,8 +25230,7 @@ "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" } } } diff --git a/package.json b/package.json index 6134a5f8fb..08939c313d 100644 --- a/package.json +++ b/package.json @@ -91,5 +91,10 @@ }, "volta": { "node": "18.17.1" + }, + "dependencies": { + "stylelint": "^15.10.3", + "stylelint-config-standard": "^34.0.0", + "stylelint-config-standard-scss": "^11.0.0" } } diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000000..312d17d88d --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,20 @@ + + + + + + + + + + + config/ + public/ + src/ + + config/preload.php + public/index.php + vendor + assets + diff --git a/phpunit-report.xml b/phpunit-report.xml new file mode 100644 index 0000000000..c892bda1a9 --- /dev/null +++ b/phpunit-report.xml @@ -0,0 +1,10 @@ + + + + + + + + + + From 483e23310cdafc8884a88c92494fa0df90411dd2 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 15:33:33 +0200 Subject: [PATCH 06/21] Remove missing script --- .gitlab-ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index b26e9581d6..221edeb77f 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,6 @@ Install dependencies and build assets: image: sumocoders/cli-tools-php82:latest script: - COMPOSER_MEMORY_LIMIT=-1 composer install --no-scripts --no-progress - - COMPOSER_MEMORY_LIMIT=-1 composer run-script post-autoload-dump - volta install node - npm install --no-progress - npm run build From d0f95d30ae7cb30d9724593ddb6e5785ce750190 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 15:45:00 +0200 Subject: [PATCH 07/21] Cache bin dir --- .gitlab-ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 221edeb77f..b5058ff9c1 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,6 +12,7 @@ cache: &global_cache - node_modules - public/build - vendor + - bin policy: pull From 04782098ce04b7368a224a103a0cbf1a6daa309c Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 15:51:56 +0200 Subject: [PATCH 08/21] Exclude fork5 files --- phpcs.xml.dist | 2 ++ 1 file changed, 2 insertions(+) diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 312d17d88d..a513ac42a4 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -17,4 +17,6 @@ public/index.php vendor assets + app.fork5 + src.fork5 From 7928138df3040ba95b751ac798c01d1f73389f3b Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 16:02:54 +0200 Subject: [PATCH 09/21] Remove unused config --- phpstan.neon | 2 -- 1 file changed, 2 deletions(-) diff --git a/phpstan.neon b/phpstan.neon index 58cf8b4482..c688e44a2f 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -17,8 +17,6 @@ parameters: - src/Core/templates/Maker/* - src/Modules/*/tests/* earlyTerminatingMethodCalls: - symfony: - container_xml_path: var/cache/dev/ForkCMS_Core_Domain_Kernel_KernelDevDebugContainer.xml doctrine: objectManagerLoader: src/Core/tests/ObjectManager.php parallel: From 8b76fa72f738ebbb31032cc78bac83f97d05c62a Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 16:17:15 +0200 Subject: [PATCH 10/21] Run phpcbf --- .../Maker/Backend/Actions/Add.tpl.php | 6 ++- .../Maker/Backend/Actions/Delete.tpl.php | 6 ++- .../Maker/Backend/Actions/Edit.tpl.php | 7 ++- .../Maker/Backend/Actions/Index.tpl.php | 6 ++- .../ModuleExtension.tpl.php | 2 + .../Maker/Domain/Command/Change.tpl.php | 6 ++- .../Domain/Command/ChangeHandler.tpl.php | 6 ++- .../Maker/Domain/Command/Create.tpl.php | 6 ++- .../Domain/Command/CreateHandler.tpl.php | 6 ++- .../Maker/Domain/Command/Delete.tpl.php | 6 ++- .../Domain/Command/DeleteHandler.tpl.php | 6 ++- .../Maker/Domain/DataTransferObject.tpl.php | 25 +++++++--- .../templates/Maker/Domain/Entity.tpl.php | 46 +++++++++++-------- .../Maker/Domain/Event/Changed.tpl.php | 6 ++- .../Maker/Domain/Event/Created.tpl.php | 6 ++- .../Maker/Domain/Event/Deleted.tpl.php | 6 ++- src/Core/templates/Maker/Domain/Type.tpl.php | 6 ++- .../Maker/Installer/ModuleInstaller.tpl.php | 5 +- .../Backend/Actions/Add.html.twig.tpl.php | 4 +- .../Backend/Actions/Edit.html.twig.tpl.php | 4 +- .../Backend/Actions/Index.html.twig.tpl.php | 4 +- 21 files changed, 129 insertions(+), 46 deletions(-) diff --git a/src/Core/templates/Maker/Backend/Actions/Add.tpl.php b/src/Core/templates/Maker/Backend/Actions/Add.tpl.php index de8e5fd628..31401324d0 100644 --- a/src/Core/templates/Maker/Backend/Actions/Add.tpl.php +++ b/src/Core/templates/Maker/Backend/Actions/Add.tpl.php @@ -1,10 +1,12 @@ @@ -12,7 +14,9 @@ use ForkCMS\Core\Domain\Header\FlashMessage\FlashMessage; use ForkCMS\Modules\Backend\Domain\Action\AbstractFormActionController; - + use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; diff --git a/src/Core/templates/Maker/Backend/Actions/Delete.tpl.php b/src/Core/templates/Maker/Backend/Actions/Delete.tpl.php index 92f88f0c7f..df6696b262 100644 --- a/src/Core/templates/Maker/Backend/Actions/Delete.tpl.php +++ b/src/Core/templates/Maker/Backend/Actions/Delete.tpl.php @@ -1,17 +1,21 @@ namespace ; use ForkCMS\Modules\Backend\Domain\Action\AbstractDeleteActionController; - + use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; diff --git a/src/Core/templates/Maker/Backend/Actions/Edit.tpl.php b/src/Core/templates/Maker/Backend/Actions/Edit.tpl.php index d836143c2b..7eae1dcca5 100644 --- a/src/Core/templates/Maker/Backend/Actions/Edit.tpl.php +++ b/src/Core/templates/Maker/Backend/Actions/Edit.tpl.php @@ -1,4 +1,5 @@ @@ -15,7 +17,9 @@ use ForkCMS\Core\Domain\Header\FlashMessage\FlashMessage; use ForkCMS\Modules\Backend\Domain\Action\AbstractFormActionController; use ForkCMS\Modules\Backend\Domain\Action\ActionSlug; - + use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -30,7 +34,6 @@ protected function getFormResponse(Request $request): ?Response /** @var $ */ $ = $this->getEntityFromRequest($request, ::class); - $this->header->addBreadcrumb(new Breadcrumb($->get())); diff --git a/src/Core/templates/Maker/Backend/Actions/Index.tpl.php b/src/Core/templates/Maker/Backend/Actions/Index.tpl.php index de74189012..12d997cc7f 100644 --- a/src/Core/templates/Maker/Backend/Actions/Index.tpl.php +++ b/src/Core/templates/Maker/Backend/Actions/Index.tpl.php @@ -1,17 +1,21 @@ namespace ; use ForkCMS\Modules\Backend\Domain\Action\AbstractDataGridActionController; - + use Symfony\Component\HttpFoundation\Request; /** diff --git a/src/Core/templates/Maker/DependencyInjection/ModuleExtension.tpl.php b/src/Core/templates/Maker/DependencyInjection/ModuleExtension.tpl.php index c3731fa0d3..acc3b56a5b 100644 --- a/src/Core/templates/Maker/DependencyInjection/ModuleExtension.tpl.php +++ b/src/Core/templates/Maker/DependencyInjection/ModuleExtension.tpl.php @@ -1,8 +1,10 @@ diff --git a/src/Core/templates/Maker/Domain/Command/Change.tpl.php b/src/Core/templates/Maker/Domain/Command/Change.tpl.php index 01e77de23f..b22fb05ac5 100644 --- a/src/Core/templates/Maker/Domain/Command/Change.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/Change.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class extends { diff --git a/src/Core/templates/Maker/Domain/Command/ChangeHandler.tpl.php b/src/Core/templates/Maker/Domain/Command/ChangeHandler.tpl.php index 31f055f9e2..fc1311c904 100644 --- a/src/Core/templates/Maker/Domain/Command/ChangeHandler.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/ChangeHandler.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class implements CommandHandlerInterface { diff --git a/src/Core/templates/Maker/Domain/Command/Create.tpl.php b/src/Core/templates/Maker/Domain/Command/Create.tpl.php index 45b3125ed6..f07d1d3c5e 100644 --- a/src/Core/templates/Maker/Domain/Command/Create.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/Create.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class extends { diff --git a/src/Core/templates/Maker/Domain/Command/CreateHandler.tpl.php b/src/Core/templates/Maker/Domain/Command/CreateHandler.tpl.php index 3571ed0bcf..a8d4a8f2a6 100644 --- a/src/Core/templates/Maker/Domain/Command/CreateHandler.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/CreateHandler.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class implements CommandHandlerInterface { diff --git a/src/Core/templates/Maker/Domain/Command/Delete.tpl.php b/src/Core/templates/Maker/Domain/Command/Delete.tpl.php index 54e8ffaba1..18971b9338 100644 --- a/src/Core/templates/Maker/Domain/Command/Delete.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/Delete.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class { diff --git a/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php b/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php index 7a75eebc70..6695e011a4 100644 --- a/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php @@ -1,4 +1,5 @@ namespace ; - + use InvalidArgumentException; final class implements CommandHandlerInterface diff --git a/src/Core/templates/Maker/Domain/DataTransferObject.tpl.php b/src/Core/templates/Maker/Domain/DataTransferObject.tpl.php index e497ff3f6f..6edc465c91 100644 --- a/src/Core/templates/Maker/Domain/DataTransferObject.tpl.php +++ b/src/Core/templates/Maker/Domain/DataTransferObject.tpl.php @@ -8,20 +8,25 @@ * @global string[] $useStatements * @global Entity $entity */ + ?> namespace ; - + abstract class { properties as $property) { ?> -isGeneratedValue) {continue;} ?> -isNullable) { ?> - - + isGeneratedValue) { + continue; + } ?> + isNullable) { ?> + + isNullable ? '' : '?', $property->type, $property->name), PHP_EOL ?> @@ -35,8 +40,14 @@ public function __construct(?getName() ?> $get } properties as $property) { ?> -isGeneratedValue) {continue;} ?> - $this->name ?> = $getName()) ?>Entity->type === '\'boolean\'') { echo $property->name;} else { ?>getname) ?>(); + isGeneratedValue) { + continue; + } ?> + $this->name ?> = $getName()) ?>Entity->type === '\'boolean\'') { + echo $property->name; + } else { + ?>getname) ?>(); } diff --git a/src/Core/templates/Maker/Domain/Entity.tpl.php b/src/Core/templates/Maker/Domain/Entity.tpl.php index 428075fe23..720b92be09 100644 --- a/src/Core/templates/Maker/Domain/Entity.tpl.php +++ b/src/Core/templates/Maker/Domain/Entity.tpl.php @@ -15,35 +15,38 @@ * @global string[] $useStatements * @global Entity $entity */ + ?> namespace ; - + final class { properties as $property) { ?> -isId ? ' #[ORM\Id]' . PHP_EOL : '' ?> -isGeneratedValue ? ' #[ORM\GeneratedValue]' . PHP_EOL : '' ?> -dbalTypeFull === Embedded::class) { ?> - type, '?') . '::class', - $property->isNullable ? ', nullable: true' : '' - ), PHP_EOL ?> -dbalTypeFull === OneToMany::class) { ?> -dbalTypeFull === ManyToMany::class) { ?> -dbalTypeFull === ManyToOne::class) { ?> - - dbalType), PHP_EOL ?> - + isId ? ' #[ORM\Id]' . PHP_EOL : '' ?> + isGeneratedValue ? ' #[ORM\GeneratedValue]' . PHP_EOL : '' ?> + dbalTypeFull === Embedded::class) { ?> + type, '?') . '::class', + $property->isNullable ? ', nullable: true' : '' + ), PHP_EOL ?> + dbalTypeFull === OneToMany::class) { ?> + dbalTypeFull === ManyToMany::class) { ?> + dbalTypeFull === ManyToOne::class) { ?> + + dbalType), PHP_EOL ?> + type, $property->name), PHP_EOL ?> hasMeta ? ' use ' . Str::getShortClassName(EntityWithMetaTrait::class) . ';' . PHP_EOL . PHP_EOL : '' ?> -isBlamable ? ' use ' . Str::getShortClassName(Blameable::class) . ';'. PHP_EOL. PHP_EOL : '' ?> +isBlamable ? ' use ' . Str::getShortClassName(Blameable::class) . ';' . PHP_EOL . PHP_EOL : '' ?> private function __construct() { } @@ -52,15 +55,20 @@ public static function fromDataTransferObject(DataTransferObje { $entity = $dataTransferObject->hasEntity() ? $dataTransferObject->getEntity() : new self(); properties as $property) { ?> -isGeneratedValue) {continue;} ?> + isGeneratedValue) { + continue; + } ?> $entity->name ?> = $dataTransferObject->name ?>; return $entity; } properties as $property) { ?> - - public function type === '\'boolean\'') { echo $property->name;} else { ?>getname) ?>(): type, PHP_EOL ?> + public function type === '\'boolean\'') { + echo $property->name; + } else { + ?>getname) ?>(): type, PHP_EOL ?> { return $this->name ?>; } diff --git a/src/Core/templates/Maker/Domain/Event/Changed.tpl.php b/src/Core/templates/Maker/Domain/Event/Changed.tpl.php index 3926db1313..7f66740233 100644 --- a/src/Core/templates/Maker/Domain/Event/Changed.tpl.php +++ b/src/Core/templates/Maker/Domain/Event/Changed.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class extends Event { diff --git a/src/Core/templates/Maker/Domain/Event/Created.tpl.php b/src/Core/templates/Maker/Domain/Event/Created.tpl.php index a3eee6c737..fa0a3de8f1 100644 --- a/src/Core/templates/Maker/Domain/Event/Created.tpl.php +++ b/src/Core/templates/Maker/Domain/Event/Created.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class extends Event { diff --git a/src/Core/templates/Maker/Domain/Event/Deleted.tpl.php b/src/Core/templates/Maker/Domain/Event/Deleted.tpl.php index 3c193d3596..260202cad8 100644 --- a/src/Core/templates/Maker/Domain/Event/Deleted.tpl.php +++ b/src/Core/templates/Maker/Domain/Event/Deleted.tpl.php @@ -1,4 +1,5 @@ namespace ; - + final class extends Event { diff --git a/src/Core/templates/Maker/Domain/Type.tpl.php b/src/Core/templates/Maker/Domain/Type.tpl.php index dbe26f3f41..435b09f5c2 100644 --- a/src/Core/templates/Maker/Domain/Type.tpl.php +++ b/src/Core/templates/Maker/Domain/Type.tpl.php @@ -1,15 +1,19 @@ namespace ; - + final class { diff --git a/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php b/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php index d056e40f1e..980aa50c40 100644 --- a/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php +++ b/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php @@ -9,6 +9,7 @@ * @global bool $hideFromOverview * @global Entity[] $entities */ + ?> @@ -20,10 +21,10 @@ final class extends ModuleInstaller { - + public const IS_REQUIRED = true; - + public const IS_VISIBLE_IN_OVERVIEW = false; diff --git a/src/Core/templates/Maker/templates/Backend/Actions/Add.html.twig.tpl.php b/src/Core/templates/Maker/templates/Backend/Actions/Add.html.twig.tpl.php index 09d6e21b31..af61ac5f83 100644 --- a/src/Core/templates/Maker/templates/Backend/Actions/Add.html.twig.tpl.php +++ b/src/Core/templates/Maker/templates/Backend/Actions/Add.html.twig.tpl.php @@ -1,3 +1,5 @@ - + {% extends '@Backend/base/crud/add.html.twig' %} {% set crudIndexAction = 'Index' %} diff --git a/src/Core/templates/Maker/templates/Backend/Actions/Edit.html.twig.tpl.php b/src/Core/templates/Maker/templates/Backend/Actions/Edit.html.twig.tpl.php index 2bd8489372..8da6e7896d 100644 --- a/src/Core/templates/Maker/templates/Backend/Actions/Edit.html.twig.tpl.php +++ b/src/Core/templates/Maker/templates/Backend/Actions/Edit.html.twig.tpl.php @@ -1,3 +1,5 @@ - + {% extends '@Backend/base/crud/edit.html.twig' %} {% set crudIndexAction = 'rIndex' %} diff --git a/src/Core/templates/Maker/templates/Backend/Actions/Index.html.twig.tpl.php b/src/Core/templates/Maker/templates/Backend/Actions/Index.html.twig.tpl.php index 5e2c5ac932..8def7cd037 100644 --- a/src/Core/templates/Maker/templates/Backend/Actions/Index.html.twig.tpl.php +++ b/src/Core/templates/Maker/templates/Backend/Actions/Index.html.twig.tpl.php @@ -1,3 +1,5 @@ - + {% extends '@Backend/base/crud/index.html.twig' %} {% set crudActionName = 'Add' %} From dddf5d89dd6bee452e832bd1edacf36f8597be87 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Wed, 13 Sep 2023 17:03:59 +0200 Subject: [PATCH 11/21] Fix phpcs issues --- phpcs.xml.dist | 2 ++ .../Doctrine/UTCDateTimeImmutableDBALType.php | 6 ++++- .../UniqueDataTransferObjectValidator.php | 10 +++++++- src/Core/Domain/Header/Header.php | 6 +++-- src/Core/Installer/CoreInstaller.php | 6 +++++ .../Domain/Command/DeleteHandler.tpl.php | 5 +++- .../Maker/Installer/ModuleInstaller.tpl.php | 2 ++ .../Controller/BackendAjaxController.php | 8 ++++++- .../Backend/Controller/BackendController.php | 8 ++++++- .../Backend/Controller/LoginController.php | 3 ++- .../Action/AbstractDeleteActionController.php | 5 +++- .../Action/AbstractFormActionController.php | 2 ++ .../Backend/Domain/UserGroup/UserGroup.php | 3 ++- .../Backend/Actions/ThemeTemplateExport.php | 10 +++++++- .../ExtensionsExtension.php | 3 ++- .../Domain/Module/ModuleInformation.php | 6 ++++- .../Domain/Theme/InstallableTheme.php | 2 ++ .../InstallableThemeTemplate.php | 6 ++++- .../ThemeTemplateDataTransferObject.php | 5 +++- .../Domain/Block/AbstractBlockController.php | 7 ++++-- .../Frontend/Domain/Block/BlockRepository.php | 22 +++++++++++++++-- .../Domain/Google/TagManager/TagManager.php | 2 ++ src/Modules/Frontend/Domain/Meta/MetaType.php | 10 +++++--- .../Domain/Meta/RepositoryWithMetaTrait.php | 7 +++++- .../Installer/Console/InstallCommand.php | 24 ++++++++++++++----- .../Configuration/ConfigurationParser.php | 7 ++++-- .../Configuration/InstallerConfiguration.php | 4 +++- .../Requirement/RequirementsChecker.php | 2 ++ .../Backend/Actions/TranslationIndex.php | 7 +++++- .../Console/ImportLocaleCommand.php | 6 +++-- .../Domain/Importer/Importer.php | 7 ++++-- .../Translation/Filter/TranslationFilter.php | 3 ++- .../Filter/TranslationFilterType.php | 3 ++- .../Translation/ForkTranslationLoader.php | 5 +++- .../Translation/TranslationDomainType.php | 9 ++++--- .../Domain/Twig/ForkIntlExtension.php | 20 ++++++++++++---- src/Modules/Pages/Backend/Actions/PageAdd.php | 9 ++++++- src/Modules/Pages/Domain/Page/PageRouter.php | 6 +++-- .../Revision/Form/RevisionContentType.php | 9 ++++++- .../Domain/Revision/Form/RevisionType.php | 2 +- .../Pages/Frontend/Widgets/Sitemap.php | 5 +++- 41 files changed, 220 insertions(+), 54 deletions(-) diff --git a/phpcs.xml.dist b/phpcs.xml.dist index a513ac42a4..4b3dacdb95 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -15,8 +15,10 @@ config/preload.php public/index.php + config/bundles.php vendor assets + src/**/Maker app.fork5 src.fork5 diff --git a/src/Core/Domain/Doctrine/UTCDateTimeImmutableDBALType.php b/src/Core/Domain/Doctrine/UTCDateTimeImmutableDBALType.php index 3ab66d827f..0f017c3c62 100644 --- a/src/Core/Domain/Doctrine/UTCDateTimeImmutableDBALType.php +++ b/src/Core/Domain/Doctrine/UTCDateTimeImmutableDBALType.php @@ -40,7 +40,11 @@ public function convertToPHPValue($dateTimeString, AbstractPlatform $platform): return $dateTimeString; } - $dateTime = DateTimeImmutable::createFromFormat($platform->getDateTimeFormatString(), $dateTimeString, self::getUtc()); + $dateTime = DateTimeImmutable::createFromFormat( + $platform->getDateTimeFormatString(), + $dateTimeString, + self::getUtc() + ); if (!$dateTime) { throw ConversionException::conversionFailedFormat( diff --git a/src/Core/Domain/Form/Validator/UniqueDataTransferObjectValidator.php b/src/Core/Domain/Form/Validator/UniqueDataTransferObjectValidator.php index 8284be5184..d4bf2271ab 100644 --- a/src/Core/Domain/Form/Validator/UniqueDataTransferObjectValidator.php +++ b/src/Core/Domain/Form/Validator/UniqueDataTransferObjectValidator.php @@ -272,7 +272,15 @@ private function getRepository( $dataTransferObject->hasEntity() && !$dataTransferObject->getEntity() instanceof $supportedClass ) { - throw new ConstraintDefinitionException(sprintf('The "%s" entity repository does not support the "%s" entity. The entity should be an instance of or extend "%s".', $constraint->entityClass, $class->getName(), $supportedClass)); + throw new ConstraintDefinitionException( + sprintf( + 'The "%s" entity repository does not support the "%s" entity. ' . + 'The entity should be an instance of or extend "%s".', + $constraint->entityClass, + $class->getName(), + $supportedClass + ) + ); } // @phpstan-ignore-next-line diff --git a/src/Core/Domain/Header/Header.php b/src/Core/Domain/Header/Header.php index 2e93498f36..c89a6d2a46 100644 --- a/src/Core/Domain/Header/Header.php +++ b/src/Core/Domain/Header/Header.php @@ -59,7 +59,8 @@ public function __construct( $translationDomain = $translator->getDefaultTranslationDomain(); $defaults['default_translation_domain'] = $translationDomain->getDomain(); $fallbackDomain = $translationDomain->getFallback()?->getDomain(); - $defaults['default_translation_domain_fallback'] = $fallbackDomain ?? $defaults['default_translation_domain']; + $defaults['default_translation_domain_fallback'] = $fallbackDomain ?? + $defaults['default_translation_domain']; } $this->jsData = new JsData($defaults); @@ -104,7 +105,8 @@ public function addFlashMessage(FlashMessage $flashMessage): void ); } catch (SessionNotFoundException $e) { throw new LogicException( - 'You cannot use the addFlash method if sessions are disabled. Enable them in "config/packages/framework.yaml".', + 'You cannot use the addFlash method if sessions are disabled. ' . + 'Enable them in "config/packages/framework.yaml".', 0, $e ); diff --git a/src/Core/Installer/CoreInstaller.php b/src/Core/Installer/CoreInstaller.php index 37cae06ad1..18087b7b9a 100644 --- a/src/Core/Installer/CoreInstaller.php +++ b/src/Core/Installer/CoreInstaller.php @@ -14,7 +14,9 @@ public function install(): void $this->setSetting( 'date_formats_short', [ + // @codingStandardsIgnoreStart // php format => IntlDateFormatter format (https://unicode-org.github.io/icu/userguide/format_parse/datetime/index#datetimepatterngenerator) + // @codingStandardsIgnoreEnd 'j/n/Y' => 'd/M/yyyy', 'j-n-Y' => 'd-M-yyyy', 'j.n.Y' => 'd.M.yyyy', @@ -47,7 +49,9 @@ public function install(): void $this->setSetting( 'date_formats_long', [ + // @codingStandardsIgnoreStart // php format => IntlDateFormatter format (https://unicode-org.github.io/icu/userguide/format_parse/datetime/index#datetimepatterngenerator) + // @codingStandardsIgnoreEnd 'j F Y' => 'd MMMM yyyy', 'D j F Y' => 'EEE d MMMM yyyy', 'l j F Y' => 'EEEE d MMMM yyyy', @@ -67,7 +71,9 @@ public function install(): void $this->setSetting( 'time_formats', [ + // @codingStandardsIgnoreStart // php format => IntlDateFormatter format (https://unicode-org.github.io/icu/userguide/format_parse/datetime/index#datetimepatterngenerator) + // @codingStandardsIgnoreEnd 'H:i' => 'kk:mm', 'g:i a' => 'h:mm a', 'H:i:s' => 'kk:mm:ss', diff --git a/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php b/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php index 6695e011a4..134d8d5862 100644 --- a/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php +++ b/src/Core/templates/Maker/Domain/Command/DeleteHandler.tpl.php @@ -29,8 +29,11 @@ public function __construct(private readonly $ $) { - $ = $this->->find($->) ?? throw new InvalidArgumentException('Entity not found'); + + $ = $this-> + ->find($->) ?? throw new InvalidArgumentException('Entity not found'); $this->->remove($); $->setEntity($); + } } diff --git a/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php b/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php index 980aa50c40..a25a451c0b 100644 --- a/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php +++ b/src/Core/templates/Maker/Installer/ModuleInstaller.tpl.php @@ -2,6 +2,7 @@ use ForkCMS\Core\Domain\Maker\Util\Entity; +// @codingStandardsIgnoreStart /** * @global string $namespace * @global string $class_name @@ -9,6 +10,7 @@ * @global bool $hideFromOverview * @global Entity[] $entities */ +// @codingStandardsIgnoreEnd ?> diff --git a/src/Modules/Backend/Controller/BackendAjaxController.php b/src/Modules/Backend/Controller/BackendAjaxController.php index 7261e9ccfd..a33082f05d 100644 --- a/src/Modules/Backend/Controller/BackendAjaxController.php +++ b/src/Modules/Backend/Controller/BackendAjaxController.php @@ -26,7 +26,13 @@ public function __invoke( try { $action = $this->ajaxActions->get($actionSlug->getFQCN()); } catch (NotFoundExceptionInterface) { - throw new InvalidArgumentException(sprintf('The ajax action class %s must be registered as a service and implement %s', $actionSlug->getFQCN(), AjaxActionControllerInterface::class)); + throw new InvalidArgumentException( + sprintf( + 'The ajax action class %s must be registered as a service and implement %s', + $actionSlug->getFQCN(), + AjaxActionControllerInterface::class + ) + ); } try { diff --git a/src/Modules/Backend/Controller/BackendController.php b/src/Modules/Backend/Controller/BackendController.php index 395c5b2ece..e3de6f075c 100644 --- a/src/Modules/Backend/Controller/BackendController.php +++ b/src/Modules/Backend/Controller/BackendController.php @@ -47,7 +47,13 @@ public function __invoke( try { $action = $this->actions->get($actionSlug->getFQCN()); } catch (NotFoundExceptionInterface) { - throw new InvalidArgumentException(sprintf('The action class %s must be registered as a service and implement %s', $actionSlug->getFQCN(), ActionControllerInterface::class)); + throw new InvalidArgumentException( + sprintf( + 'The action class %s must be registered as a service and implement %s', + $actionSlug->getFQCN(), + ActionControllerInterface::class + ) + ); } try { diff --git a/src/Modules/Backend/Controller/LoginController.php b/src/Modules/Backend/Controller/LoginController.php index 8663a4d8ae..8a60f59a4d 100644 --- a/src/Modules/Backend/Controller/LoginController.php +++ b/src/Modules/Backend/Controller/LoginController.php @@ -36,7 +36,8 @@ public function __invoke(Request $request): Response $currentUser = $this->security->getUser(); if ($currentUser instanceof User) { return new RedirectResponse( - $this->navigationItemRepository->findFirstWithSlugForUser($currentUser)->getSlug()?->generateRoute($this->urlGenerator) + $this->navigationItemRepository->findFirstWithSlugForUser($currentUser) + ->getSlug()?->generateRoute($this->urlGenerator) ); } diff --git a/src/Modules/Backend/Domain/Action/AbstractDeleteActionController.php b/src/Modules/Backend/Domain/Action/AbstractDeleteActionController.php index d551084e53..7938cbf806 100644 --- a/src/Modules/Backend/Domain/Action/AbstractDeleteActionController.php +++ b/src/Modules/Backend/Domain/Action/AbstractDeleteActionController.php @@ -36,7 +36,10 @@ protected function handleDeleteForm( return new RedirectResponse($redirectActionSlug->generateRoute($this->router)); }, - validCallback: function (FormInterface $form) use ($deleteCommandFullyQualifiedClassName, $redirectActionSlug): RedirectResponse { + validCallback: function (FormInterface $form) use ( + $deleteCommandFullyQualifiedClassName, + $redirectActionSlug + ): RedirectResponse { $this->commandBus->dispatch(new $deleteCommandFullyQualifiedClassName($form->getData()['id'])); return new RedirectResponse($redirectActionSlug->generateRoute($this->router)); diff --git a/src/Modules/Backend/Domain/Action/AbstractFormActionController.php b/src/Modules/Backend/Domain/Action/AbstractFormActionController.php index e67ba6d9f8..5a10b1b83d 100644 --- a/src/Modules/Backend/Domain/Action/AbstractFormActionController.php +++ b/src/Modules/Backend/Domain/Action/AbstractFormActionController.php @@ -52,6 +52,7 @@ public function getResponse(Request $request): Response abstract protected function getFormResponse(Request $request): ?Response; + // @codingStandardsIgnoreStart /** * @param class-string $formType * @param array $formOptions @@ -59,6 +60,7 @@ abstract protected function getFormResponse(Request $request): ?Response; * @param callable(FormInterface):Response|callable(FormInterface):FormInterface|callable(FormInterface):null|null $validCallback * @param callable(FormInterface):FlashMessage|null $flashMessageCallback */ + // @codingStandardsIgnoreEnd final protected function handleForm( Request $request, string $formType, diff --git a/src/Modules/Backend/Domain/UserGroup/UserGroup.php b/src/Modules/Backend/Domain/UserGroup/UserGroup.php index 01f559fd0a..d9c9399949 100644 --- a/src/Modules/Backend/Domain/UserGroup/UserGroup.php +++ b/src/Modules/Backend/Domain/UserGroup/UserGroup.php @@ -90,7 +90,8 @@ public function getId(): int public static function fromDataTransferObject(UserGroupDataTransferObject $userDataTransferObject): self { - $userGroup = $userDataTransferObject->hasEntity() ? $userDataTransferObject->getEntity() : new self($userDataTransferObject->name); + $userGroup = $userDataTransferObject->hasEntity() ? + $userDataTransferObject->getEntity() : new self($userDataTransferObject->name); $userGroup->name = $userDataTransferObject->name; CollectionHelper::updateCollection( $userDataTransferObject->users, diff --git a/src/Modules/Extensions/Backend/Actions/ThemeTemplateExport.php b/src/Modules/Extensions/Backend/Actions/ThemeTemplateExport.php index 6d212d5332..819b9d01ac 100644 --- a/src/Modules/Extensions/Backend/Actions/ThemeTemplateExport.php +++ b/src/Modules/Extensions/Backend/Actions/ThemeTemplateExport.php @@ -65,7 +65,15 @@ public function getResponse(Request $request): Response continue; } $blockDOMDocument = new DOMDocument('1.0', 'utf-8'); - $blockDOMDocument->loadXML($this->serializer->serialize($block->getSettings()->all(), 'xml', ['xml_root_node_name' => 'block'])); + $blockDOMDocument->loadXML( + $this->serializer->serialize( + $block->getSettings()->all(), + 'xml', + [ + 'xml_root_node_name' => 'block', + ] + ) + ); /** @var DOMElement $blockXml */ $blockXml = $xml->importNode($blockDOMDocument->documentElement, true); $blockXml->setAttribute('module', $block->getBlock()->getModule()->getName()); diff --git a/src/Modules/Extensions/DependencyInjection/ExtensionsExtension.php b/src/Modules/Extensions/DependencyInjection/ExtensionsExtension.php index 6c4d470521..82d3031448 100644 --- a/src/Modules/Extensions/DependencyInjection/ExtensionsExtension.php +++ b/src/Modules/Extensions/DependencyInjection/ExtensionsExtension.php @@ -28,7 +28,8 @@ private function configureLiipImagine(ContainerBuilder $container): void foreach (Application::cases() as $application) { $application = ucfirst($application->value); foreach (InstalledModules::fromContainer($container)() as $moduleName) { - $dataRoots[$moduleName . 'Module' . $application] = $modulesDirectory . $moduleName . '/assets/' . $application . '/public'; + $dataRoots[$moduleName . 'Module' . $application] = $modulesDirectory . $moduleName . + '/assets/' . $application . '/public'; } } foreach (ThemeRepository::getThemePaths() as $themeName => $path) { diff --git a/src/Modules/Extensions/Domain/Module/ModuleInformation.php b/src/Modules/Extensions/Domain/Module/ModuleInformation.php index aa95c5b816..74a9158468 100644 --- a/src/Modules/Extensions/Domain/Module/ModuleInformation.php +++ b/src/Modules/Extensions/Domain/Module/ModuleInformation.php @@ -77,7 +77,11 @@ public static function fromModule(ModuleName $moduleName): self public static function fromXML(string $xmlFilePath): self { try { - $moduleConfig = simplexml_load_string(file_get_contents($xmlFilePath), 'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_ERR_ERROR); + $moduleConfig = simplexml_load_string( + file_get_contents($xmlFilePath), + 'SimpleXMLElement', + LIBXML_NOCDATA | LIBXML_ERR_ERROR + ); } catch (Throwable) { return new self( ModuleName::fromString(basename(dirname($xmlFilePath))), diff --git a/src/Modules/Extensions/Domain/Theme/InstallableTheme.php b/src/Modules/Extensions/Domain/Theme/InstallableTheme.php index 5c37fd5718..84eaedaefc 100644 --- a/src/Modules/Extensions/Domain/Theme/InstallableTheme.php +++ b/src/Modules/Extensions/Domain/Theme/InstallableTheme.php @@ -119,6 +119,8 @@ public function isInstallable(): bool public function getFallbackThumbnail(): string { + // @codingStandardsIgnoreStart return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAIECAYAAADhOkr8AAAgAElEQVR4Xu3dZ7gkRf0/7CKK5CBJkoBIUJIiKkFAECRIziA5CEhYECTDkoPASpAsOUeJkiRK+oFkkCQgSUAkZ5BnvvN/VmH3zHRPzUyfPXPuuq59dbq6uu+us6c/3V1Vo4222G6fJ4UAAQIECBAgQIAAAQIVCIwmgFSgrAkCBAgQIECAAAECBOoCAoiOQIAAAQIECBAgQIBAZQICSGXUGiJAgAABAgQIECBAQADRBwgQIECAAAECBAgQqExAAKmMWkMECBAgQIAAAQIECAgg+gABAgQIECBAgAABApUJCCCVUWuIAAECBAgQIECAAAEBRB8gQIAAAQIECBAgQKAyAQGkMmoNESBAgAABAgQIECAggOgDBAgQIECAAAECBAhUJiCAVEatIQIECBAgQIAAAQIEBBB9gAABAgQIECBAgACBygQEkMqoNUSAAAECBAgQIECAgACiDxAgQIAAAQIECBAgUJmAAFIZtYYIECBAgAABAgQIEBBA9AECBAgQIECAAAECBCoTEEAqo9YQAQIECBAgQIAAAQICiD5AgAABAgQIECBAgEBlAgJIZdQaIkCAAAECBAgQIEBAANEHCBAgQIAAAQIECBCoTEAAqYxaQwQIECBAgAABAgQICCD6AAECBAgQIECAAAEClQkIIJVRa4gAAQIECBAgQIAAAQFEHyBAgAABAgQIECBAoDIBAaQyag0RIECAAAECBAgQICCA6AMECBAgQIAAAQIECFQmIIBURq0hAgQIECBAgAABAgQEEH2AAAECBAgQIECAAIHKBASQyqg1RIAAAQIECBAgQICAAKIPECBAgAABAgQIECBQmYAAUhm1hggQIECAAAECBAgQEED0AQIECBAgQIAAAQIEKhMQQCqj1hABAgQIECBAgAABAgKIPkCAAAECBAgQIECAQGUCAkhl1BoiQIAAAQIECBAgQEAA0QcIECBAgAABAgQIEKhMQACpjFpDBAgQIECAAAECBAgIIPoAAQIECBAgQIAAAQKVCQgglVFriAABAgQIECBAgAABAUQfIECAAAECBAgQIECgMgEBpDJqDREgQIAAAQIECBAgIIDoAwQIECBAgAABAgQIVCYggFRGrSECBAgQIECAAAECBAQQfYAAAQIECBAgQIAAgcoEBJDKqDVEgAABAgQIECBAgIAAog8QIECAAAECBAgQIFCZgABSGbWGCBAgQIAAAQIECBAQQPQBAgQIECBAgAABAgQqExBAKqPWEAECBAgQIECAAAECAog+QIAAAQIECBAgQIBAZQICSGXUGiJAgAABAgQIECBAQADRBwgQIECAAAECBAgQqExAAKmMWkMECBAgQIAAAQIECAgg+gABAgQIECBAgAABApUJCCCVUWuIAAECBAgQIECAAAEBRB8gQIAAAQIECBAgQKAyAQGkMmoNESBAgAABAgQIECAggOgDBAgQIECAAAECBAhUJiCAVEatIQIECBAgQIAAAQIEBBB9gAABAgQIECBAgACBygQEkMqoNUSAAAECBAgQIECAgACiDxAgQIAAAQIECBAgUJmAAFIZtYYIECBAgAABAgQIEBBA9AECBAgQIECAAAECBCoTEEAqo9YQAQIECBAgQIAAAQICiD5AgAABAgQIECBAgEBlAgJIZdQaIkCAAAECBAgQIEBAANEHCBAgQIAAAQIECBCoTEAAqYxaQwQIECBAgAABAgQICCD6AAECBAgQIECAAAEClQkIIJVRa4gAAQIECBAgQIAAAQFEHyBAgAABAgQIECBAoDIBAaQyag0RIECAAAECBAgQICCA6AMECBAgQIAAAQIECFQmIIBURq0hAgQIECBAgAABAgQEEH2AAAECBAgQIECAAIHKBASQyqg1RIAAAQIECBAgQICAAKIPECBAgAABAgQIECBQmYAAUhm1hggQIECAAAECBAgQEED0AQIECBAgQIAAAQIEKhMQQCqj1hABAgQIECBAgAABAgKIPkCAAAECBAgQIECAQGUCAkhl1BoiQIAAAQIECBAgQEAA0QcIECBAgAABAgQIEKhMQACpjFpDBAgQIECAAAECBAgIIPoAAQIECBAgQIAAAQKVCQgglVFriAABAgQIECBAgAABAUQfIECAAAECBAgQIECgMgEBpDJqDREgQIAAAQIECBAgIIDoAwQIECBAgAABAgQIVCYggFRGrSECBAgQIECAAAECBAQQfYAAAQIECBAgQIAAgcoEBJDKqDVEgAABAgQIECBAgIAAog8QIECAAAECBAgQIFCZgABSGbWGCBAgQIAAAQIECBAQQPQBAgQIECBAgAABAgQqExBAKqPWEAECBAgQIECAAAECAog+QIAAAQIECBAgQIBAZQICSGXUGiJAgAABAgQIECBAQADRBwgQIECAAAECBAgQqExAAKmMWkMECBAgQIAAAQIECAgg+gABAgQIECBAgAABApUJCCCVUWuIAAECBAgQIECAAAEBRB8gQIAAAQIECBAgQKAyAQGkMmoNESBAgAABAgQIECAggOgDBAgQIECAAAECBAhUJiCAVEatIQIECBAgQIAAAQIEBBB9gAABAgQIECBAgACBygQEkMqoNUSAAAECBAgQIECAgACiDxAgQIAAAQIECBAgUJmAAFIZtYYIECBAgAABAgQIEBBA9AECBAgQIECAAAECBCoTEEAqo9YQAQIECBAgQIAAAQICiD5AgAABAgQIECBAgEBlAgJIZdQaIkCAAAECBAgQIEBAANEHCBAgQIAAAQIECBCoTEAAqYxaQwQIECBAgAABAgQICCD6AAECBAgQIECAAAEClQkIIJVRa4gAAQIECBAgQIAAAQFEHyBAgAABAgQIECBAoDIBAaQyag0RIECAAAECBAgQICCA6AMECBAgQIAAAQIECFQmIIBURq0hAgQIECBAgAABAgQEEH2AAAECBAgQIECAAIHKBASQyqg1RIAAAQIECBAgQICAAKIPECBAgAABAgQIECBQmYAAUhm1hggQIECAAAECBAgQEED0AQIECBAgQIAAAQIEKhMQQCqj1hABAgQIECBAgAABAgKIPkCAAAECBAgQIECAQGUCAkhl1BoiQIAAAQIECBAgQEAA0QcIECBAgAABAgQIEKhMQACpjFpDBAgQIECAAAECBAgIIPoAAQIECBAgQIAAAQKVCQgglVFriAABAgQIECBAgAABAUQfIECAAAECBAgQIECgMgEBpDJqDREgQIAAAQIECBAgIIDoAwQIECBAgAABAgQIVCYggFRGrSECBAgQIECAAAECBAQQfYAAAQIECBAgQIAAgcoEBJDKqDVEgAABAgQIECBAgIAAog8QIECAAAECBAgQIFCZgABSGbWGCBAgQIAAAQIECBAQQPQBAgQIECBAgAABAgQqExBAKqPWEAECBAgQIECAAAECAog+QIAAAQIECBAgQIBAZQICSGXUGiJAgAABAgQIECBAQADRBwgQIECAAAECBAgQqExAAKmMWkMECBAgQIAAAQIECAgg+gABAgQIECBAgAABApUJCCCVUWuIAAECBAgQIECAAAEBRB8gQIAAAQIECBAgQKAyAQGkMmoNESBAgAABAgQIECAggOgDBAgQIECAAAECBAhUJiCAVEatIQIECBAgQIAAAQIEBBB9gAABAgQIECBAgACBygQEkMqoNUSAAAECBAgQIECAgACiDxAgQIAAAQIECBAgUJmAAFIZtYYIECBAgAABAgQIEBBA9AECBAgQIECAAAECBCoTEEAqo9YQAQIECBAgQIAAAQICiD5AgAABAgQIECBAgEBlAgJIZdQaIkCAAAECBAgQIEBAANEHCBAgQIAAAQIECBCoTEAAqYxaQwQIECBAgAABAgQICCD6AAECBAgQIECAAAEClQkIIJVRa4gAAQIECBAgQIAAAQFEHyBAgAABAgQIECBAoDIBAaQyag0RIECAAAECBAgQICCA6AMECBAgQIAAAQIECFQmIIBURq0hAgQIECBAgAABAgQEEH2AAAECBAgQIECAAIHKBASQyqg1RIAAAQIECBAgQICAAKIPECBAgAABAgQIECBQmYAAUhm1hggQIECAAAECBAgQEED0AQIECBAgQIAAAQIEKhMQQCqj1hABAgQIECBAgAABAgKIPkCAAAECBAgQIECAQGUCAkhl1BoiQIAAAQIECBAgQEAA0QcIECBAgAABAgQIEKhMQACpjFpDBAgQIECAAAECBAgIIPoAAQIECBAgQIAAAQKVCQgglVFriAABAgQIECBAgAABAUQfIECAAAECBAgQIECgMgEBpDJqDREgQIAAAQIECBAgIIDoAwQIECBAgAABAgQIVCYggFRGrSECBAgQIECAAAECBAQQfYAAAQIECBAgQIAAgcoEBJDKqDVEgAABAgQIECBAgIAAog8QIECAAAECBAgQIFCZgABSGbWGCBAgQIAAAQIECBAQQPQBAgQIECBAgAABAgQqExBAKqPWEAECBAgQIECAAAECAog+QIAAAQIECBAgQIBAZQICSGXUGiJAgAABAgQIECBAQADRBwgQIECAAAECBAgQqExAAKmMWkMECBAgQIAAAQIECAgg+gABAgQIECBAgAABApUJCCCVUWuIAAECBAgQIECAAAEBRB8gQIAAAQIECBAgQKAyAQGkMmoNESBAgAABAgQIECAggOgDBAgQIECAAAECBAhUJiCAVEatIQIECBAgQIAAAQIEBBB9gAABAgQIECBAgACBygQEkMqoNUSAAAECBAgQ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ozZb4fT1GbRi2t7/1B42xduSWCD1zkefT9fd+1Rbq9u7ngQGg4AAMhiusnPsOYG42ZxjhilqA9UnqD9lnWLi8et/aP/11nspvl0e/i8CR6uLFvYc1iA7obgBi/4RN0Ou/cC++PGgYbraNMoff/pZer/2hP65f75ZelHBgX3mnTn6+F2YpzZ18VSTTlAP52OMPnrd77lX3qg/jPH70RlneyGQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAf5fqUQAACXVJREFUAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJCCBZbCoRIECAAAECBAgQIJAjIIDkqKlDgAABAgQIECBAgECWgACSxaYSAQIECBAgQIAAAQI5AgJIjpo6BAgQIECAAAECBAhkCQggWWwqESBAgAABAgQIECCQIyCA5KipQ4AAAQIECBAgQIBAloAAksWmEgECBAgQIECAAAECOQICSI6aOgQIECBAgAABAgQIZAkIIFlsKhEgQIAAAQIECBAgkCMggOSoqUOAAAECBAgQIECAQJaAAJLFphIBAgQIECBAgAABAjkCAkiOmjoECBAgQIAAAQIECGQJ/H/Bff2Ze8/BTwAAAABJRU5ErkJggg=='; + // @codingStandardsIgnoreEnd } } diff --git a/src/Modules/Extensions/Domain/ThemeTemplate/InstallableThemeTemplate.php b/src/Modules/Extensions/Domain/ThemeTemplate/InstallableThemeTemplate.php index 0b4cff347f..ea6230e4cc 100644 --- a/src/Modules/Extensions/Domain/ThemeTemplate/InstallableThemeTemplate.php +++ b/src/Modules/Extensions/Domain/ThemeTemplate/InstallableThemeTemplate.php @@ -20,7 +20,11 @@ public static function fromXML(SimpleXMLElement|bool|null $template): ?self $themeTemplate = new self(); $themeTemplate->name = SafeString::fromXML($template->attributes()->name); - $themeTemplate->path = str_replace(ThemeTemplate::PATH_DIRECTORY, '', SafeString::fromXML($template->attributes()->path)); + $themeTemplate->path = str_replace( + ThemeTemplate::PATH_DIRECTORY, + '', + SafeString::fromXML($template->attributes()->path) + ); $themeTemplate->active = true; $layout = str_replace(' ', '', trim(SafeString::fromXML($template->layout))); $themeTemplate->settings->set('layout', $layout); diff --git a/src/Modules/Extensions/Domain/ThemeTemplate/ThemeTemplateDataTransferObject.php b/src/Modules/Extensions/Domain/ThemeTemplate/ThemeTemplateDataTransferObject.php index d1abfb8c87..fdec121837 100644 --- a/src/Modules/Extensions/Domain/ThemeTemplate/ThemeTemplateDataTransferObject.php +++ b/src/Modules/Extensions/Domain/ThemeTemplate/ThemeTemplateDataTransferObject.php @@ -50,7 +50,10 @@ public function __construct(protected ?ThemeTemplate $themeTemplateEntity = null $this->default = $themeTemplateEntity->isDefault(); } - #[Assert\Regex('/^\[(\/|[a-z0-9])+(,(\/|[a-z0-9]+))*\](,\r?\n?\[(\/|[a-z0-9])+(,(\/|[a-z0-9]+))*\])*$/i', 'err.InvalidTemplateSyntax')] + #[Assert\Regex( + '/^\[(\/|[a-z0-9])+(,(\/|[a-z0-9]+))*\](,\r?\n?\[(\/|[a-z0-9])+(,(\/|[a-z0-9]+))*\])*$/i', + 'err.InvalidTemplateSyntax' + )] public function getLayout(): string { return $this->settings->getOr('layout', ''); diff --git a/src/Modules/Frontend/Domain/Block/AbstractBlockController.php b/src/Modules/Frontend/Domain/Block/AbstractBlockController.php index 4e7d5dbeaf..70b8f54960 100644 --- a/src/Modules/Frontend/Domain/Block/AbstractBlockController.php +++ b/src/Modules/Frontend/Domain/Block/AbstractBlockController.php @@ -58,8 +58,11 @@ public function __construct(BlockServices $services) * * @return string|null always returns null but you can't typehint on that yet */ - final public function redirect(string $url, int $status = Response::HTTP_TEMPORARY_REDIRECT, array $headers = []): ?string - { + final public function redirect( + string $url, + int $status = Response::HTTP_TEMPORARY_REDIRECT, + array $headers = [] + ): ?string { $this->responseOverride = new RedirectResponse($url, $status, $headers); return null; diff --git a/src/Modules/Frontend/Domain/Block/BlockRepository.php b/src/Modules/Frontend/Domain/Block/BlockRepository.php index b5b93b30fc..436065b045 100644 --- a/src/Modules/Frontend/Domain/Block/BlockRepository.php +++ b/src/Modules/Frontend/Domain/Block/BlockRepository.php @@ -93,13 +93,31 @@ public function findUnique( public function findAllWidgets(): array { /* @TODO add check for widgets that have been added but aren't in the database yet */ - return $this->findBy(['type' => Type::WIDGET->value, 'hidden' => false], ['type' => Criteria::ASC, 'position' => Criteria::ASC]); + return $this->findBy( + [ + 'type' => Type::WIDGET->value, + 'hidden' => false + ], + [ + 'type' => Criteria::ASC, + 'position' => Criteria::ASC + ] + ); } /** @return Block[] */ public function findAllActions(): array { /* @TODO add check for actions that have been added but aren't in the database yet */ - return $this->findBy(['type' => Type::ACTION->value, 'hidden' => false], ['type' => Criteria::ASC, 'position' => Criteria::ASC]); + return $this->findBy( + [ + 'type' => Type::ACTION->value, + 'hidden' => false + ], + [ + 'type' => Criteria::ASC, + 'position' => Criteria::ASC + ] + ); } } diff --git a/src/Modules/Frontend/Domain/Google/TagManager/TagManager.php b/src/Modules/Frontend/Domain/Google/TagManager/TagManager.php index 713bf61ad8..270a66f575 100644 --- a/src/Modules/Frontend/Domain/Google/TagManager/TagManager.php +++ b/src/Modules/Frontend/Domain/Google/TagManager/TagManager.php @@ -84,11 +84,13 @@ public function generateStartOfBodyCode(): string return ''; } + // @codingStandardsIgnoreStart $codeLines = [ '', '', '' ]; + // @codingStandardsIgnoreEnd return sprintf( implode("\n", $codeLines) . "\n", diff --git a/src/Modules/Frontend/Domain/Meta/MetaType.php b/src/Modules/Frontend/Domain/Meta/MetaType.php index d8f0fbe690..1c7521b9de 100644 --- a/src/Modules/Frontend/Domain/Meta/MetaType.php +++ b/src/Modules/Frontend/Domain/Meta/MetaType.php @@ -25,8 +25,10 @@ class MetaType extends AbstractType /** @var array */ private array $meta = []; - public function __construct(private readonly MetaRepository $metaRepository, private readonly TranslatorInterface $translator) - { + public function __construct( + private readonly MetaRepository $metaRepository, + private readonly TranslatorInterface $translator + ) { } public function buildForm(FormBuilderInterface $builder, array $options): void @@ -136,7 +138,9 @@ private function getSubmitEventFunction(string $baseFieldName): callable $metaData = $event->getData(); $parent = $metaForm->getParent(); if ($parent === null) { - throw new LogicException('The MetaType is not a stand alone type, it needs to be used in a parent form'); + throw new LogicException( + 'The MetaType is not a stand alone type, it needs to be used in a parent form' + ); } $baseField = null; diff --git a/src/Modules/Frontend/Domain/Meta/RepositoryWithMetaTrait.php b/src/Modules/Frontend/Domain/Meta/RepositoryWithMetaTrait.php index 99bb3dd7ea..369b2abd65 100644 --- a/src/Modules/Frontend/Domain/Meta/RepositoryWithMetaTrait.php +++ b/src/Modules/Frontend/Domain/Meta/RepositoryWithMetaTrait.php @@ -35,7 +35,12 @@ public function slugify(string $string, ?object $subject = null, ?Locale $locale } /** @param T|null $subject */ - abstract protected function slugifyIdQueryBuilder(QueryBuilder $queryBuilder, ?object $subject, Locale $locale, string $entityAlias): void; + abstract protected function slugifyIdQueryBuilder( + QueryBuilder $queryBuilder, + ?object $subject, + Locale $locale, + string $entityAlias + ): void; final protected function addOrIncreaseNumberAtEndOfString(string $string): string { diff --git a/src/Modules/Installer/Console/InstallCommand.php b/src/Modules/Installer/Console/InstallCommand.php index e1b8713f33..f2b1d1db3b 100644 --- a/src/Modules/Installer/Console/InstallCommand.php +++ b/src/Modules/Installer/Console/InstallCommand.php @@ -42,10 +42,21 @@ protected function configure(): void { $this ->setDescription( - 'Install fork from the console using the configuration in the fork-cms-installation-configuration.yaml file' + 'Install fork from the console using the configuration' . + ' in the fork-cms-installation-configuration.yaml file' + ) + ->addOption( + 'email', + 'u', + InputOption::VALUE_REQUIRED, + 'The email address of the backend user' + ) + ->addOption( + 'password', + 'p', + InputOption::VALUE_REQUIRED, + 'The password of the backend user' ) - ->addOption('email', 'u', InputOption::VALUE_REQUIRED, 'The email address of the backend user') - ->addOption('password', 'p', InputOption::VALUE_REQUIRED, 'The password of the backend user') ->setHidden($this->forkIsInstalled); } @@ -91,8 +102,8 @@ private function serverMeetsRequirements(): bool $this->formatter->writeln('Checking requirements'); $checkRequirementsResult = $checkRequirementsCommand->run(new ArrayInput([]), $this->output); - return $checkRequirementsResult === CheckRequirementsCommand::RETURN_SERVER_MEETS_REQUIREMENTS - || $checkRequirementsResult === CheckRequirementsCommand::RETURN_SERVER_MEETS_REQUIREMENTS_BUT_HAS_WARNINGS; + return $checkRequirementsResult === CheckRequirementsCommand::RETURN_SERVER_MEETS_REQUIREMENTS || + $checkRequirementsResult === CheckRequirementsCommand::RETURN_SERVER_MEETS_REQUIREMENTS_BUT_HAS_WARNINGS; } private function getInstallerConfiguration(): ?InstallerConfiguration @@ -111,7 +122,8 @@ private function getInstallerConfiguration(): ?InstallerConfiguration if (!$this->configurationParser->configurationFileExists()) { $this->formatter->error( - 'Please add the configuration file created by a previous install named fork-cms-installation-configuration.yaml before running the command in the root directory.' + 'Please add the configuration file created by a previous install named ' . + 'fork-cms-installation-configuration.yaml before running the command in the root directory.' ); return null; diff --git a/src/Modules/Installer/Domain/Configuration/ConfigurationParser.php b/src/Modules/Installer/Domain/Configuration/ConfigurationParser.php index 517dd0f16e..5bc4a9547e 100644 --- a/src/Modules/Installer/Domain/Configuration/ConfigurationParser.php +++ b/src/Modules/Installer/Domain/Configuration/ConfigurationParser.php @@ -113,7 +113,9 @@ public function loadFromYaml(InstallerConfiguration $installerConfiguration, str $configuration['modules'] = array_map( static function (TaggedValue $taggedModule) use ($moduleNameMap): ModuleName { if (!array_key_exists($taggedModule->getValue(), $moduleNameMap)) { - throw new InvalidArgumentException('The module "' . $taggedModule->getValue() . '" does not exist.'); + throw new InvalidArgumentException( + 'The module "' . $taggedModule->getValue() . '" does not exist.' + ); } return $moduleNameMap[$taggedModule->getValue()]; @@ -196,7 +198,8 @@ public function configurationFileExists(): bool private function getYamlFilename(): string { - return $this->rootDir . ($_ENV['FORK_INSTALLATION_CONFIGURATION_PATH'] ?? '/fork-cms-installation-configuration.yaml'); + return $this->rootDir . + ($_ENV['FORK_INSTALLATION_CONFIGURATION_PATH'] ?? '/fork-cms-installation-configuration.yaml'); } private function getDotEnvFilename(): string diff --git a/src/Modules/Installer/Domain/Configuration/InstallerConfiguration.php b/src/Modules/Installer/Domain/Configuration/InstallerConfiguration.php index fdef5c88f2..6657259c23 100644 --- a/src/Modules/Installer/Domain/Configuration/InstallerConfiguration.php +++ b/src/Modules/Installer/Domain/Configuration/InstallerConfiguration.php @@ -161,7 +161,9 @@ public function shouldInstallExampleData(): bool public function withDatabaseStep(DatabaseStepConfiguration $databaseStepConfiguration): self { if (!$databaseStepConfiguration->canConnectToDatabase()) { - throw new LogicException('Invalid database credentials for database: ' . $databaseStepConfiguration->databaseName); + throw new LogicException( + 'Invalid database credentials for database: ' . $databaseStepConfiguration->databaseName + ); } $this->databaseHostname = (string) $databaseStepConfiguration->databaseHostname; diff --git a/src/Modules/Installer/Domain/Requirement/RequirementsChecker.php b/src/Modules/Installer/Domain/Requirement/RequirementsChecker.php index bdefbeeb05..bc3da9f56f 100644 --- a/src/Modules/Installer/Domain/Requirement/RequirementsChecker.php +++ b/src/Modules/Installer/Domain/Requirement/RequirementsChecker.php @@ -88,6 +88,7 @@ private function checkRequirements(bool $allowWarnings = false): bool return !$this->hasErrors() && (!$this->hasWarnings() || $allowWarnings); } + // @codingStandardsIgnoreStart private function checkWebServer(): RequirementCategory { $reasoningBehindTheMinimumPHPVersion = 'At this moment we require php 8.1 as we follow the supported versions timeline of php'; @@ -354,6 +355,7 @@ private function checkRequiredPermissionsAndFiles(): RequirementCategory ), ); } + // @codingStandardsIgnoreEnd /** * Check if a directory and its sub-directories and its subdirectories and ... are writable. diff --git a/src/Modules/Internationalisation/Backend/Actions/TranslationIndex.php b/src/Modules/Internationalisation/Backend/Actions/TranslationIndex.php index df901621e5..8122835158 100644 --- a/src/Modules/Internationalisation/Backend/Actions/TranslationIndex.php +++ b/src/Modules/Internationalisation/Backend/Actions/TranslationIndex.php @@ -151,7 +151,12 @@ private function getExtraColumns(): array $locale->asTranslatable(), valueCallback: $this->translationValue(...), html: true, - columnAttributesCallback: static function (FilteredTranslation $translation, array $attributes) use ($locale) { + columnAttributesCallback: static function ( + FilteredTranslation $translation, + array $attributes + ) use ( + $locale + ) { if ($translation->getValue($locale) === '') { $attributes['class'] = 'highlighted'; } diff --git a/src/Modules/Internationalisation/Console/ImportLocaleCommand.php b/src/Modules/Internationalisation/Console/ImportLocaleCommand.php index c9ca41fa21..d0847257bc 100644 --- a/src/Modules/Internationalisation/Console/ImportLocaleCommand.php +++ b/src/Modules/Internationalisation/Console/ImportLocaleCommand.php @@ -73,7 +73,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int if ($importResults->getSkippedCount() > 0) { $formatter->comment( sprintf( - 'Skipped %d translations because they belong to a locale that is not installed or to a different locale than specified with the --locale option.', + 'Skipped %d translations because they belong to a locale that is not installed ' . + 'or to a different locale than specified with the --locale option.', $importResults->getSkippedCount() ) ); @@ -81,7 +82,8 @@ protected function execute(InputInterface $input, OutputInterface $output): int if ($importResults->getFailedCount() > 0) { $formatter->warning( sprintf( - 'Failed to import %d translations because they already existed, add --overwrite if you want to overwrite them.', + 'Failed to import %d translations because they already existed, ' . + 'add --overwrite if you want to overwrite them.', $importResults->getFailedCount() ) ); diff --git a/src/Modules/Internationalisation/Domain/Importer/Importer.php b/src/Modules/Internationalisation/Domain/Importer/Importer.php index 443f0edb46..084896f72e 100644 --- a/src/Modules/Internationalisation/Domain/Importer/Importer.php +++ b/src/Modules/Internationalisation/Domain/Importer/Importer.php @@ -34,8 +34,11 @@ public function __construct( ) { } - public function import(string|UploadedFile|File $translationFile, bool $overwriteConflicts = false, ?Locale $specificLocale = null): ImportResult - { + public function import( + string|UploadedFile|File $translationFile, + bool $overwriteConflicts = false, + ?Locale $specificLocale = null + ): ImportResult { if (is_string($translationFile)) { $translationFile = new File($translationFile); } diff --git a/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilter.php b/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilter.php index 2642568d33..495f28569a 100644 --- a/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilter.php +++ b/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilter.php @@ -26,7 +26,8 @@ private function __construct( public ?string $name, public ?string $value ) { - $this->shouldFilter = $application !== null || $moduleName !== null || $type !== [] || $locale !== [] || $name !== null || $value !== null; + $this->shouldFilter = $application !== null || $moduleName !== null || $type !== [] || + $locale !== [] || $name !== null || $value !== null; } public static function fromRequest(Request $request): self diff --git a/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilterType.php b/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilterType.php index 216c4e707d..f4f5802122 100644 --- a/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilterType.php +++ b/src/Modules/Internationalisation/Domain/Translation/Filter/TranslationFilterType.php @@ -41,7 +41,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'choice_label' => fn (Application $application): string => ucfirst( $application->trans($this->translator) ), - 'choice_filter' => fn (?Application $application): bool => (bool) $application?->hasEditableTranslations(), + 'choice_filter' => fn (?Application $application): bool => + (bool) $application?->hasEditableTranslations(), 'choice_translation_domain' => false, 'required' => false, 'placeholder' => 'msg.NotFiltered', diff --git a/src/Modules/Internationalisation/Domain/Translation/ForkTranslationLoader.php b/src/Modules/Internationalisation/Domain/Translation/ForkTranslationLoader.php index 8f53cfe131..7e403f7952 100644 --- a/src/Modules/Internationalisation/Domain/Translation/ForkTranslationLoader.php +++ b/src/Modules/Internationalisation/Domain/Translation/ForkTranslationLoader.php @@ -40,7 +40,10 @@ public function load(mixed $resource, string $locale, string $domain = 'messages $dayDate = new DateTime('last monday'); $monthInterval = new DateInterval('P1M'); $dayInterval = new DateInterval('P1D'); - $possibleDomains = array_filter(Application::cases(), static fn (Application $application): bool => $application->hasEditableTranslations()); + $possibleDomains = array_filter( + Application::cases(), + static fn (Application $application): bool => $application->hasEditableTranslations() + ); $possibleDomains[] = Application::INSTALLER; for ($i = 1; $i <= 12; ++$i) { diff --git a/src/Modules/Internationalisation/Domain/Translation/TranslationDomainType.php b/src/Modules/Internationalisation/Domain/Translation/TranslationDomainType.php index 0fe3534870..7b4a3a554a 100644 --- a/src/Modules/Internationalisation/Domain/Translation/TranslationDomainType.php +++ b/src/Modules/Internationalisation/Domain/Translation/TranslationDomainType.php @@ -30,8 +30,10 @@ public function buildForm(FormBuilderInterface $builder, array $options): void [ 'class' => Application::class, 'label' => 'lbl.Application', - 'choice_label' => fn (Application $application): string => ucfirst($application->trans($this->translator)), - 'choice_filter' => static fn (?Application $application): bool => $application?->hasEditableTranslations() ?? false, + 'choice_label' => fn (Application $application): string => + ucfirst($application->trans($this->translator)), + 'choice_filter' => static fn (?Application $application): bool => + $application?->hasEditableTranslations() ?? false, 'choice_translation_domain' => false, ] )->add( @@ -40,7 +42,8 @@ public function buildForm(FormBuilderInterface $builder, array $options): void [ 'class' => Module::class, 'choice_value' => 'name', - 'choice_label' => fn (Module $module): string => ucfirst($this->translator->trans($module->getName()->asLabel())), + 'choice_label' => fn (Module $module): string => + ucfirst($this->translator->trans($module->getName()->asLabel())), 'choice_filter' => static fn (?Module $module): bool => $module?->getName() !== ModuleName::core(), 'label' => 'lbl.Module', 'required' => false, diff --git a/src/Modules/Internationalisation/Domain/Twig/ForkIntlExtension.php b/src/Modules/Internationalisation/Domain/Twig/ForkIntlExtension.php index 692a68ea9e..edaa47c950 100644 --- a/src/Modules/Internationalisation/Domain/Twig/ForkIntlExtension.php +++ b/src/Modules/Internationalisation/Domain/Twig/ForkIntlExtension.php @@ -26,6 +26,7 @@ use Twig\TwigFilter; use Twig\TwigFunction; +// @codingStandardsIgnoreStart /** * @method string getCountryName(?string $country, string $locale = null) * @method string getCurrencyName(?string $currency, string $locale = null) @@ -47,6 +48,7 @@ * @method string formatUserDate(Environment $env, mixed $date, ?string $dateFormat = 'medium', string $pattern = '', mixed $timezone = null, string $calendar = 'gregorian', string $locale = null) * @method string formatUserTime(Environment $env, ?string $timeFormat = 'medium', string $pattern = '', $timezone = null, string $calendar = 'gregorian', string $locale = null) */ +// @codingStandardsIgnoreEnd final class ForkIntlExtension extends AbstractExtension implements EventSubscriberInterface { public function __construct( @@ -193,7 +195,11 @@ private function createNumberFormatter(InstalledLocale $locale, ?User $user): Nu $numberFormat = $user->getSetting('number_format', $numberFormat); } - $numberFormatter = new NumberFormatter($locale->getLocale()->value, NumberFormatter::DECIMAL, '#,##0.####################'); + $numberFormatter = new NumberFormatter( + $locale->getLocale()->value, + NumberFormatter::DECIMAL, + '#,##0.####################' + ); $separatorSymbols = array_map( static fn (string $separator): string => str_replace( ['comma', 'dot', 'space', 'nothing'], @@ -247,7 +253,8 @@ private function createIntlDateFormatter( /** * @param DateTimeInterface|string|null $date A date or null to use the current time - * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, + * false to leave unchanged */ public function formatLongDateTime( Environment $env, @@ -276,7 +283,8 @@ public function formatLongDateTime( /** * @param DateTimeInterface|string|null $date A date or null to use the current time - * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, + * false to leave unchanged */ public function formatLongDate( Environment $env, @@ -303,7 +311,8 @@ public function formatLongDate( /** * @param DateTimeInterface|string|null $date A date or null to use the current time - * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, + * false to leave unchanged */ public function formatUserLongDateTime( Environment $env, @@ -332,7 +341,8 @@ public function formatUserLongDateTime( /** * @param DateTimeInterface|string|null $date A date or null to use the current time - * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, false to leave unchanged + * @param DateTimeZone|string|false|null $timezone The target timezone, null to use the default, + * false to leave unchanged */ public function formatUserLongDate( Environment $env, diff --git a/src/Modules/Pages/Backend/Actions/PageAdd.php b/src/Modules/Pages/Backend/Actions/PageAdd.php index 88913848d0..235f85a3f6 100644 --- a/src/Modules/Pages/Backend/Actions/PageAdd.php +++ b/src/Modules/Pages/Backend/Actions/PageAdd.php @@ -40,7 +40,14 @@ protected function getFormResponse(Request $request): ?Response $validCallback = function (FormInterface $form): RedirectResponse { $this->commandBus->dispatch($form->getData()); - return new RedirectResponse(PageEdit::getActionSlug()->generateRoute($this->router, ['slug' => $form->getData()->page->getId()])); + return new RedirectResponse( + PageEdit::getActionSlug()->generateRoute( + $this->router, + [ + 'slug' => $form->getData()->page->getId() + ] + ) + ); }; } diff --git a/src/Modules/Pages/Domain/Page/PageRouter.php b/src/Modules/Pages/Domain/Page/PageRouter.php index e4eb3b79d7..471c047d9b 100644 --- a/src/Modules/Pages/Domain/Page/PageRouter.php +++ b/src/Modules/Pages/Domain/Page/PageRouter.php @@ -13,8 +13,10 @@ final class PageRouter implements BlockRouterInterface { - public function __construct(private readonly RouterInterface $router, private readonly PageRepository $pageRepository) - { + public function __construct( + private readonly RouterInterface $router, + private readonly PageRepository $pageRepository + ) { } /** @param array $parameters */ diff --git a/src/Modules/Pages/Domain/Revision/Form/RevisionContentType.php b/src/Modules/Pages/Domain/Revision/Form/RevisionContentType.php index 2c283a4727..2f1ef97141 100644 --- a/src/Modules/Pages/Domain/Revision/Form/RevisionContentType.php +++ b/src/Modules/Pages/Domain/Revision/Form/RevisionContentType.php @@ -92,7 +92,14 @@ private function buildrevisionBlockForm( } if ($loadDefaultBlocks) { - $form->add('blocks_1', TextareaType::class, ['label' => 'lbl.Content', 'required' => false]); // TODO: remove this + $form->add( + 'blocks_1', + TextareaType::class, + [ + 'label' => 'lbl.Content', + 'required' => false + ] + ); // TODO: remove this // foreach ($this->getDefaultExtrasForTemplate($selectedTemplate) as $block => $defaults) { // // $revisionBlocks = new ArrayCollection(); diff --git a/src/Modules/Pages/Domain/Revision/Form/RevisionType.php b/src/Modules/Pages/Domain/Revision/Form/RevisionType.php index f4c3ce546f..068bdc68c5 100644 --- a/src/Modules/Pages/Domain/Revision/Form/RevisionType.php +++ b/src/Modules/Pages/Domain/Revision/Form/RevisionType.php @@ -78,7 +78,7 @@ function (FormEvent $event): void { 'generate_slug_callback_method' => 'generateSlug', 'generate_slug_callback_parameters' => [ $revisionDataTransferObject->locale, - $revisionDataTransferObject->hasEntity() ? $revisionDataTransferObject->getEntity()->getId() : null, + $revisionDataTransferObject->hasEntity()?->getId(), ], ]); if ($revisionDataTransferObject->hasEntity()) { diff --git a/src/Modules/Pages/Frontend/Widgets/Sitemap.php b/src/Modules/Pages/Frontend/Widgets/Sitemap.php index 3d8a4ea581..4f27b420f4 100644 --- a/src/Modules/Pages/Frontend/Widgets/Sitemap.php +++ b/src/Modules/Pages/Frontend/Widgets/Sitemap.php @@ -51,7 +51,10 @@ private function getPageData(array $pages, Locale $locale): array $revision = $page['page']->getActiveRevision($locale); $pageData[] = [ 'title' => $revision->getNavigationTitle(), - 'url' => $this->router->generate($revision->getRouteName(), referenceType: RouterInterface::ABSOLUTE_URL), + 'url' => $this->router->generate( + $revision->getRouteName(), + referenceType: RouterInterface::ABSOLUTE_URL + ), 'children' => $this->getPageData((array) $page['children'], $locale), ]; } From 15ff6838cb88d8eb6fa0abed7fe97a6071e0ad36 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:25:32 +0200 Subject: [PATCH 12/21] Remove placeholder deployment settings --- deploy.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/deploy.php b/deploy.php index 58fd59b274..dfa999fde9 100644 --- a/deploy.php +++ b/deploy.php @@ -11,11 +11,11 @@ require __DIR__ . '/vendor/tijsverkoyen/deployer-sumo/sumo.php'; // Define some variables -set('client', 'sumocoders'); -set('project', 'forkcms'); -set('repository', 'git@git.sumocoders.be:sumocoders/forkcms-6.git'); +set('client', ''); +set('project', ''); +set('repository', ''); set('production_url', ''); -set('production_user', 'sumocoders'); +set('production_user', ''); set('php_version', '8.2'); // Define staging From 90bf064b3336d8ec390ffe0edfda8dc98539b81f Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:26:34 +0200 Subject: [PATCH 13/21] Use dev03 server --- deploy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index dfa999fde9..2164b62440 100644 --- a/deploy.php +++ b/deploy.php @@ -19,7 +19,7 @@ set('php_version', '8.2'); // Define staging -host('dev02.sumocoders.eu') +host('dev03.sumocoders.eu') ->setRemoteUser('sites') ->set('labels', ['stage' => 'staging']) ->set('deploy_path', '~/apps/{{client}}/{{project}}') From 9c215de40f0669d73a8733deb3febe40496ed383 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:27:35 +0200 Subject: [PATCH 14/21] Use staging branch for deployment --- deploy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index 2164b62440..27af8cbcc6 100644 --- a/deploy.php +++ b/deploy.php @@ -23,7 +23,7 @@ ->setRemoteUser('sites') ->set('labels', ['stage' => 'staging']) ->set('deploy_path', '~/apps/{{client}}/{{project}}') - ->set('branch', 'add-deployer-deployment') + ->set('branch', 'staging') ->set('bin/php', '{{php_binary}}') ->set('cachetool', '/var/run/php_{{php_version_numeric}}_fpm_sites.sock') ->set('document_root', '~/php{{php_version_numeric}}/{{client}}/{{project}}') From b527711a96930239bb687f089f47a619b11fd8ce Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:29:21 +0200 Subject: [PATCH 15/21] Only write to sub dirs --- deploy.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index 27af8cbcc6..b90a47ff80 100644 --- a/deploy.php +++ b/deploy.php @@ -60,7 +60,7 @@ add('shared_dirs', ['public/files', 'public/media']); // Writable dirs by web server -add('writable_dirs', ['public/files', 'public/media', 'var', 'var/cache', 'var/log', 'var/sessions']); +add('writable_dirs', ['public/files', 'public/media', 'var/cache', 'var/log', 'var/sessions']); // Disallow stats set('allow_anonymous_stats', false); From 0b720bd0fba7a4b54935362f176c520c60814204 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:30:58 +0200 Subject: [PATCH 16/21] Remove additional files on cleanup --- deploy.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy.php b/deploy.php index b90a47ff80..9b94d3d36c 100644 --- a/deploy.php +++ b/deploy.php @@ -207,7 +207,8 @@ function () use ($databaseUtility) { run('rm -rf {{release_path}}/phpunit.xml.dist'); run('rm -rf {{release_path}}/phpstan.neon'); run('rm -rf {{release_path}}/UPGRADE***'); - run('rm -rf {{release_path}}/var/docks'); + run('rm -rf {{release_path}}/var/docs'); + run('rm -rf {{release_path}}/tests'); run('rm -rf {{release_path}}/var/docker'); run('rm -rf {{release_path}}/.gitlab-ci'); run('rm -rf {{release_path}}/.phpcs.xml.dist'); From d16129295a40c1d306939cecb537d7bef78a2441 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:35:02 +0200 Subject: [PATCH 17/21] Also remove gitlab ci config --- deploy.php | 1 + 1 file changed, 1 insertion(+) diff --git a/deploy.php b/deploy.php index 9b94d3d36c..ee69e7e536 100644 --- a/deploy.php +++ b/deploy.php @@ -212,6 +212,7 @@ function () use ($databaseUtility) { run('rm -rf {{release_path}}/var/docker'); run('rm -rf {{release_path}}/.gitlab-ci'); run('rm -rf {{release_path}}/.phpcs.xml.dist'); + run('rm -rf {{release_path}}/.gitlab-ci.yml'); }); /********************** From 6645ab952c9b1552f69c64aea3b57b4f55aca2a7 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 16:42:55 +0200 Subject: [PATCH 18/21] Remove additional files --- deploy.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/deploy.php b/deploy.php index ee69e7e536..f1a9f038d7 100644 --- a/deploy.php +++ b/deploy.php @@ -213,6 +213,11 @@ function () use ($databaseUtility) { run('rm -rf {{release_path}}/.gitlab-ci'); run('rm -rf {{release_path}}/.phpcs.xml.dist'); run('rm -rf {{release_path}}/.gitlab-ci.yml'); + run('rm -rf {{release_path}}/.stylelintignore'); + run('rm -rf {{release_path}}/.stylelintrc'); + run('rm -rf {{release_path}}/.editorconfig'); + run('rm -rf {{release_path}}/.dockerignore'); + run('rm -rf {{release_path}}/CHANGELOG.nd'); }); /********************** From 257a5fe58d4dc222996f6f9b7d4d220f4baef29e Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 14 Sep 2023 20:08:23 +0200 Subject: [PATCH 19/21] Use the new deployer-sumo-forkcms bundle --- composer.json | 4 +- composer.lock | 83 +++++++++++++++-------------- deploy.php | 143 +------------------------------------------------- 3 files changed, 44 insertions(+), 186 deletions(-) diff --git a/composer.json b/composer.json index b8d741bcb0..6d6e81a65a 100644 --- a/composer.json +++ b/composer.json @@ -68,8 +68,8 @@ "twig/intl-extra": "^3.3", "symfony/expression-language": "6.*", "symfony/lock": "6.*", - "tijsverkoyen/deployer-sumo": "^2.3", - "tijsverkoyen/convert-to-junit-xml": "^1.10" + "tijsverkoyen/convert-to-junit-xml": "^1.10", + "sumocoders/deployer-sumo-forkcms": "^0.1.0" }, "require-dev": { "squizlabs/php_codesniffer": "dev-master as 3.6.0", diff --git a/composer.lock b/composer.lock index 1812e27170..6b4213f9d4 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": "ce01c6c07c73423d03798837d2ff9153", + "content-hash": "5086297df36bf83cbfba32956ee978e7", "packages": [ { "name": "beberlei/assert", @@ -4135,6 +4135,46 @@ }, "time": "2023-07-07T15:34:33+00:00" }, + { + "name": "sumocoders/deployer-sumo-forkcms", + "version": "0.1", + "source": { + "type": "git", + "url": "https://github.com/sumocoders/deployer-sumo-forkcms.git", + "reference": "ab67e827693a691bc4e01171cd26e890d67afddd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sumocoders/deployer-sumo-forkcms/zipball/ab67e827693a691bc4e01171cd26e890d67afddd", + "reference": "ab67e827693a691bc4e01171cd26e890d67afddd", + "shasum": "" + }, + "require": { + "deployer/deployer": "^7.0", + "symfony/dotenv": "^3.4 || ^5.3 || ^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "TijsVerkoyen\\DeployerSumo\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "deployer-sumo@verkoyen.eu" + } + ], + "description": "Deployer recipe with SumoCoders specific tasks", + "support": { + "source": "https://github.com/sumocoders/deployer-sumo-forkcms/tree/0.1" + }, + "time": "2023-09-14T18:02:25+00:00" + }, { "name": "symfony/asset", "version": "v6.3.0", @@ -9773,47 +9813,6 @@ }, "time": "2022-02-01T12:49:26+00:00" }, - { - "name": "tijsverkoyen/deployer-sumo", - "version": "v2.3.6", - "source": { - "type": "git", - "url": "https://github.com/tijsverkoyen/deployer-sumo.git", - "reference": "00fda43e058e417daf1381c352c97dfde89278cd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/deployer-sumo/zipball/00fda43e058e417daf1381c352c97dfde89278cd", - "reference": "00fda43e058e417daf1381c352c97dfde89278cd", - "shasum": "" - }, - "require": { - "deployer/deployer": "^7.0", - "symfony/dotenv": "^3.4 || ^5.3 || ^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "TijsVerkoyen\\DeployerSumo\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Tijs Verkoyen", - "email": "deployer-sumo@verkoyen.eu" - } - ], - "description": "Deployer recipe with SumoCoders specific tasks", - "support": { - "issues": "https://github.com/tijsverkoyen/deployer-sumo/issues", - "source": "https://github.com/tijsverkoyen/deployer-sumo/tree/v2.3.6" - }, - "time": "2023-08-08T13:19:20+00:00" - }, { "name": "twig/extra-bundle", "version": "v3.7.0", diff --git a/deploy.php b/deploy.php index f1a9f038d7..89575238ab 100644 --- a/deploy.php +++ b/deploy.php @@ -8,7 +8,7 @@ require 'recipe/symfony.php'; require 'contrib/cachetool.php'; -require __DIR__ . '/vendor/tijsverkoyen/deployer-sumo/sumo.php'; +require __DIR__ . '/vendor/sumocoders/deployer-sumo-forkcms/sumo.php'; // Define some variables set('client', ''); @@ -83,143 +83,6 @@ set('keep_releases', 3); -// Upload the assets -desc('Uploads the assets'); -task( - 'sumo:assets:upload', - function () { - upload('public/assets', '{{release_path}}/public'); - } -); - -desc('Ask if the .env.local is filled in correctly'); -task('sumo:check:env', function () { - askConfirmation('Is the .env.local filled in correctly?'); -}); - -$databaseUtility = new Database(); - -desc('Replace the local database with the remote database'); -task( - 'sumo:db:get', - function () use ($databaseUtility) { - $remoteHost = Configuration::fromRemote()->get('FORK_DATABASE_HOST'); - $remotePort = Configuration::fromRemote()->get('FORK_DATABASE_PORT'); - $remoteName = Configuration::fromRemote()->get('FORK_DATABASE_NAME'); - $remoteUser = Configuration::fromRemote()->get('FORK_DATABASE_USER'); - $remotePassword = Configuration::fromRemote()->get('FORK_DATABASE_PASSWORD'); - - $localHost = Configuration::fromLocal()->get('FORK_DATABASE_HOST'); - $localPort = Configuration::fromLocal()->get('FORK_DATABASE_PORT'); - $localName = Configuration::fromLocal()->get('FORK_DATABASE_NAME'); - $localUser = Configuration::fromLocal()->get('FORK_DATABASE_USER'); - $localPassword = Configuration::fromLocal()->get('FORK_DATABASE_PASSWORD'); - - $remoteDatabaseUrl = parse_url("mysql://{$remoteUser}:{$remotePassword}@{$remoteHost}:{$remotePort}/{$remoteName}?serverVersion=5.7&charset=utf8mb4"); - $localDatabaseUrl = parse_url("mysql://{$localUser}:{$localPassword}@{$localHost}:{$localPort}/{$localName}?serverVersion=5.7&charset=utf8mb4"); - - run( - sprintf( - 'mysqldump --lock-tables=false --set-charset %1$s %2$s > {{deploy_path}}/db_download.tmp.sql', - $databaseUtility->getConnectionOptions($remoteDatabaseUrl), - $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl) - ) - ); - download( - '{{deploy_path}}/db_download.tmp.sql', - './db_download.tmp.sql' - ); - run('rm {{deploy_path}}/db_download.tmp.sql'); - - runLocally( - sprintf( - 'mysql %1$s %2$s < ./db_download.tmp.sql', - $databaseUtility->getConnectionOptions($localDatabaseUrl), - $databaseUtility->getNameFromConnectionOptions($localDatabaseUrl) - ) - ); - runLocally('rm ./db_download.tmp.sql'); - } -); - -desc('Replace the remote database with the local database'); -task( - 'sumo:db:put', - function () use ($databaseUtility) { - $remoteHost = Configuration::fromRemote()->get('FORK_DATABASE_HOST'); - $remotePort = Configuration::fromRemote()->get('FORK_DATABASE_PORT'); - $remoteName = Configuration::fromRemote()->get('FORK_DATABASE_NAME'); - $remoteUser = Configuration::fromRemote()->get('FORK_DATABASE_USER'); - $remotePassword = Configuration::fromRemote()->get('FORK_DATABASE_PASSWORD'); - - $localHost = Configuration::fromLocal()->get('FORK_DATABASE_HOST'); - $localPort = Configuration::fromLocal()->get('FORK_DATABASE_PORT'); - $localName = Configuration::fromLocal()->get('FORK_DATABASE_NAME'); - $localUser = Configuration::fromLocal()->get('FORK_DATABASE_USER'); - $localPassword = Configuration::fromLocal()->get('FORK_DATABASE_PASSWORD'); - - $remoteDatabaseUrl = parse_url("mysql://{$remoteUser}:{$remotePassword}@{$remoteHost}:{$remotePort}/{$remoteName}?serverVersion=5.7&charset=utf8mb4"); - $localDatabaseUrl = parse_url("mysql://{$localUser}:{$localPassword}@{$localHost}:{$localPort}/{$localName}?serverVersion=5.7&charset=utf8mb4"); - - // create a backup - // @todo make separate backup dir - run( - sprintf( - 'mysqldump --lock-tables=false --set-charset %1$s %2$s > {{deploy_path}}/backup_%3$s.sql', - $databaseUtility->getConnectionOptions($remoteDatabaseUrl), - $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl), - date('YmdHi') - ) - ); - - runLocally( - sprintf( - 'mysqldump --column-statistics=0 --lock-tables=false --set-charset %1$s %2$s > ./db_upload.tmp.sql', - $databaseUtility->getConnectionOptions($localDatabaseUrl), - $databaseUtility->getNameFromConnectionOptions($localDatabaseUrl) - ) - ); - - upload('./db_upload.tmp.sql', '{{deploy_path}}/db_upload.tmp.sql'); - runLocally('rm ./db_upload.tmp.sql'); - - run( - sprintf( - 'mysql %1$s %2$s < {{deploy_path}}/db_upload.tmp.sql', - $databaseUtility->getConnectionOptions($remoteDatabaseUrl), - $databaseUtility->getNameFromConnectionOptions($remoteDatabaseUrl) - ) - ); - run('rm {{deploy_path}}/db_upload.tmp.sql'); - } -); - -desc('Cleanup the codebase'); -task('sumo:files:cleanup', function () { - run('rm -rf {{release_path}}/.github'); - run('rm -rf {{release_path}}/.git'); - run('rm -rf {{release_path}}/.gitattributes'); - run('rm -rf {{release_path}}/Dockerfile'); - run('rm -rf {{release_path}}/docker-compose.yml'); - run('rm -rf {{release_path}}/.scrutinizer.yml'); - run('rm -rf {{release_path}}/.codecov.yml'); - run('rm -rf {{release_path}}/php.ini'); - run('rm -rf {{release_path}}/phpunit.xml.dist'); - run('rm -rf {{release_path}}/phpstan.neon'); - run('rm -rf {{release_path}}/UPGRADE***'); - run('rm -rf {{release_path}}/var/docs'); - run('rm -rf {{release_path}}/tests'); - run('rm -rf {{release_path}}/var/docker'); - run('rm -rf {{release_path}}/.gitlab-ci'); - run('rm -rf {{release_path}}/.phpcs.xml.dist'); - run('rm -rf {{release_path}}/.gitlab-ci.yml'); - run('rm -rf {{release_path}}/.stylelintignore'); - run('rm -rf {{release_path}}/.stylelintrc'); - run('rm -rf {{release_path}}/.editorconfig'); - run('rm -rf {{release_path}}/.dockerignore'); - run('rm -rf {{release_path}}/CHANGELOG.nd'); -}); - /********************** * Flow configuration * **********************/ @@ -227,9 +90,5 @@ function () use ($databaseUtility) { after('deploy:symlink', 'cachetool:clear:opcache'); // Unlock the deploy when it failed after('deploy:failed', 'deploy:unlock'); -// Check config before migrating database -before('database:migrate', 'sumo:check:env'); // Migrate database before symlink new release. before('deploy:symlink', 'database:migrate'); -// Remove unneeded files -before('deploy:symlink', 'sumo:files:cleanup'); From 5262f2295ea440920da3fcc6167cd977eeba8c41 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Tue, 19 Sep 2023 09:37:59 +0200 Subject: [PATCH 20/21] Update deployer package --- composer.json | 2 +- composer.lock | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index 6d6e81a65a..daabefa382 100644 --- a/composer.json +++ b/composer.json @@ -69,7 +69,7 @@ "symfony/expression-language": "6.*", "symfony/lock": "6.*", "tijsverkoyen/convert-to-junit-xml": "^1.10", - "sumocoders/deployer-sumo-forkcms": "^0.1.0" + "sumocoders/deployer-sumo-forkcms": "^0.2.0" }, "require-dev": { "squizlabs/php_codesniffer": "dev-master as 3.6.0", diff --git a/composer.lock b/composer.lock index 6b4213f9d4..0b48f8aab6 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": "5086297df36bf83cbfba32956ee978e7", + "content-hash": "5aa9a87d222f008cd68ac18ae6eb82d6", "packages": [ { "name": "beberlei/assert", @@ -4137,16 +4137,16 @@ }, { "name": "sumocoders/deployer-sumo-forkcms", - "version": "0.1", + "version": "0.2", "source": { "type": "git", "url": "https://github.com/sumocoders/deployer-sumo-forkcms.git", - "reference": "ab67e827693a691bc4e01171cd26e890d67afddd" + "reference": "1e69779c04e55e28aa8ad6478388339486b66e6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sumocoders/deployer-sumo-forkcms/zipball/ab67e827693a691bc4e01171cd26e890d67afddd", - "reference": "ab67e827693a691bc4e01171cd26e890d67afddd", + "url": "https://api.github.com/repos/sumocoders/deployer-sumo-forkcms/zipball/1e69779c04e55e28aa8ad6478388339486b66e6c", + "reference": "1e69779c04e55e28aa8ad6478388339486b66e6c", "shasum": "" }, "require": { @@ -4169,11 +4169,11 @@ "email": "deployer-sumo@verkoyen.eu" } ], - "description": "Deployer recipe with SumoCoders specific tasks", + "description": "Deployer recipe with SumoCoders specific tasks for Fork CMS v6", "support": { - "source": "https://github.com/sumocoders/deployer-sumo-forkcms/tree/0.1" + "source": "https://github.com/sumocoders/deployer-sumo-forkcms/tree/0.2" }, - "time": "2023-09-14T18:02:25+00:00" + "time": "2023-09-19T06:32:03+00:00" }, { "name": "symfony/asset", From 491695c970857ba513546729107dfceb18606cf7 Mon Sep 17 00:00:00 2001 From: Bjorn Van Acker Date: Thu, 21 Sep 2023 11:23:49 +0200 Subject: [PATCH 21/21] Pin latest node version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08939c313d..9bac680b93 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ ] }, "volta": { - "node": "18.17.1" + "node": "20.7.0" }, "dependencies": { "stylelint": "^15.10.3",