From 2a34ac86dc23e8f2f319ce011f44ada8d9e37bee Mon Sep 17 00:00:00 2001 From: maxperei Date: Wed, 7 May 2025 12:00:53 +0200 Subject: [PATCH 01/20] chore(codebase): [dir] move to new file structure --- .gitignore | 1 + Makefile | 4 +- README.md | 6 +- composer.json | 13 +- config/config.yaml | 9 + {src/Resources/config => config}/grid.yaml | 0 .../config => config}/resources.yaml | 0 {src/Resources/config => config}/routes.yaml | 2 +- .../routes/admin_controller_routing.yaml | 0 .../Resources/config => config}/services.yaml | 19 +- docs/reference_entity/REFERENCE_ENTITY.md | 2 +- .../Version20200605081308.php | 0 .../Version20201028081617.php | 0 .../Version20210224160400.php | 0 .../Version20220704081604.php | 0 .../Version20221107103437.php | 0 .../Version20221114131553.php | 0 .../Version20221215073239.php | 0 .../Version20230425081120.php | 0 .../Version20230724140208.php | 0 .../Version20231019090303.php | 0 .../Version20231106080715.php | 0 {src/Resources/public => public}/js/form.js | 0 .../Resources/public => public}/js/tooltip.js | 0 {src/Resources/public => public}/main.css | 0 {src/Resources/public => public}/main.js | 0 src/Controller/ApiConfigurationController.php | 74 ----- .../SynoliaSyliusAkeneoExtension.php | 53 +-- src/Manager/ProcessManager.php | 2 +- .../AdminApiConfigurationMenuListener.php | 34 -- src/ProcessManager/ProcessManager.php | 301 ++++++++++++++++++ .../ProcessManagerInterface.php | 37 +++ .../Api/DatabaseApiConfigurationProvider.php | 48 --- .../Api/DotEnvApiConnectionProvider.php | 9 + src/Resources/config/config.yaml | 9 - src/SynoliaSyliusAkeneoPlugin.php | 5 + .../api_configuration.html.twig | 0 .../attributes_configuration.html.twig | 0 .../AkeneoConnector/categories.html.twig | 0 .../filters_configuration.html.twig | 0 .../products_configuration.html.twig | 0 .../Admin/Event/attributes_block.html.twig | 0 .../Event/taxon_attributes_block.html.twig | 0 .../taxon_attributes_edit_block.html.twig | 0 .../Admin/Form/theme.html.twig | 0 .../Attribute/attributesCollection.html.twig | 0 .../Admin/Taxon/Show/Types/default.html.twig | 0 .../Admin/Taxon/Show/Types/text.html.twig | 0 .../Admin/Taxon/Show/Types/textarea.html.twig | 0 .../Admin/layout.html.twig | 0 .../Types/asset.html.twig | 0 .../Types/metric.html.twig | 0 .../Types/reference_entity.html.twig | 0 .../messages.en.yml | 0 .../messages.fr.yml | 0 .../validators.en.yaml | 0 .../validators.fr.yaml | 0 57 files changed, 406 insertions(+), 222 deletions(-) create mode 100644 config/config.yaml rename {src/Resources/config => config}/grid.yaml (100%) rename {src/Resources/config => config}/resources.yaml (100%) rename {src/Resources/config => config}/routes.yaml (84%) rename {src/Resources/config => config}/routes/admin_controller_routing.yaml (100%) rename {src/Resources/config => config}/services.yaml (76%) rename {src/Migrations => migrations}/Version20200605081308.php (100%) rename {src/Migrations => migrations}/Version20201028081617.php (100%) rename {src/Migrations => migrations}/Version20210224160400.php (100%) rename {src/Migrations => migrations}/Version20220704081604.php (100%) rename {src/Migrations => migrations}/Version20221107103437.php (100%) rename {src/Migrations => migrations}/Version20221114131553.php (100%) rename {src/Migrations => migrations}/Version20221215073239.php (100%) rename {src/Migrations => migrations}/Version20230425081120.php (100%) rename {src/Migrations => migrations}/Version20230724140208.php (100%) rename {src/Migrations => migrations}/Version20231019090303.php (100%) rename {src/Migrations => migrations}/Version20231106080715.php (100%) rename {src/Resources/public => public}/js/form.js (100%) rename {src/Resources/public => public}/js/tooltip.js (100%) rename {src/Resources/public => public}/main.css (100%) rename {src/Resources/public => public}/main.js (100%) delete mode 100644 src/Controller/ApiConfigurationController.php delete mode 100644 src/Menu/AdminApiConfigurationMenuListener.php create mode 100644 src/ProcessManager/ProcessManager.php create mode 100644 src/ProcessManager/ProcessManagerInterface.php delete mode 100644 src/Provider/Configuration/Api/DatabaseApiConfigurationProvider.php delete mode 100644 src/Resources/config/config.yaml rename {src/Resources/views => templates}/Admin/AkeneoConnector/api_configuration.html.twig (100%) rename {src/Resources/views => templates}/Admin/AkeneoConnector/attributes_configuration.html.twig (100%) rename {src/Resources/views => templates}/Admin/AkeneoConnector/categories.html.twig (100%) rename {src/Resources/views => templates}/Admin/AkeneoConnector/filters_configuration.html.twig (100%) rename {src/Resources/views => templates}/Admin/AkeneoConnector/products_configuration.html.twig (100%) rename {src/Resources/views => templates}/Admin/Event/attributes_block.html.twig (100%) rename {src/Resources/views => templates}/Admin/Event/taxon_attributes_block.html.twig (100%) rename {src/Resources/views => templates}/Admin/Event/taxon_attributes_edit_block.html.twig (100%) rename {src/Resources/views => templates}/Admin/Form/theme.html.twig (100%) rename {src/Resources/views => templates}/Admin/Taxon/Attribute/attributesCollection.html.twig (100%) rename {src/Resources/views => templates}/Admin/Taxon/Show/Types/default.html.twig (100%) rename {src/Resources/views => templates}/Admin/Taxon/Show/Types/text.html.twig (100%) rename {src/Resources/views => templates}/Admin/Taxon/Show/Types/textarea.html.twig (100%) rename {src/Resources/views => templates}/Admin/layout.html.twig (100%) rename {src/Resources/views => templates}/SyliusAttributeBundle/Types/asset.html.twig (100%) rename {src/Resources/views => templates}/SyliusAttributeBundle/Types/metric.html.twig (100%) rename {src/Resources/views => templates}/SyliusAttributeBundle/Types/reference_entity.html.twig (100%) rename {src/Resources/translations => translations}/messages.en.yml (100%) rename {src/Resources/translations => translations}/messages.fr.yml (100%) rename {src/Resources/translations => translations}/validators.en.yaml (100%) rename {src/Resources/translations => translations}/validators.fr.yaml (100%) diff --git a/.gitignore b/.gitignore index 384c3597..aca8a5b4 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ /tests/Application/ /install/Application/*.local +/install/app-* /behat.yml /phpspec.yml diff --git a/Makefile b/Makefile index da96e0a3..41f3af13 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,8 @@ CONSOLE=cd ${TEST_DIRECTORY} && php bin/console -e test COMPOSER=cd ${TEST_DIRECTORY} && composer YARN=cd ${TEST_DIRECTORY} && yarn -SYLIUS_VERSION=1.14.0 -SYMFONY_VERSION=6.4 +SYLIUS_VERSION=2.0 +SYMFONY_VERSION=7.2 PHP_VERSION=8.2 PLUGIN_NAME=synolia/sylius-akeneo-plugin diff --git a/README.md b/README.md index 60042a95..0f05c6e1 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ | | Version | |:-----------|:--------| | PHP | ^8.2 | -| Sylius | ^1.12 | +| Sylius | ^2.0 | | Akeneo PIM | >=v6.0 | @@ -56,14 +56,14 @@ ```yaml imports: - - { resource: "@SynoliaSyliusAkeneoPlugin/Resources/config/config.yaml" } + - { resource: "@SynoliaSyliusAkeneoPlugin/config/config.yaml" } ``` 4. Import routing in your `config/routes.yaml` file: ```yaml synolia_akeneo: - resource: "@SynoliaSyliusAkeneoPlugin/Resources/config/routes.yaml" + resource: "@SynoliaSyliusAkeneoPlugin/config/routes.yaml" prefix: '/%sylius_admin.path_name%' ``` diff --git a/composer.json b/composer.json index f3f88766..5f4a2a47 100644 --- a/composer.json +++ b/composer.json @@ -14,18 +14,17 @@ "ext-json": "*", "akeneo/api-php-client": ">=8.0 <12.0", "behat/transliterator": "^1.3", - "bluepsyduck/symfony-process-manager": "^1.3", "doctrine/dbal": "^3.0", "doctrine/doctrine-bundle": "^2.0", "http-interop/http-factory-guzzle": "^1.2", "league/pipeline": "^1.0", "psr/event-dispatcher": "^1.0", - "sylius/sylius": "^1.12", - "symfony/framework-bundle": "^6.4", - "symfony/lock": "^6.4", - "symfony/property-access": "^6.4", - "symfony/property-info": "^6.4", - "symfony/serializer": "^6.4", + "sylius/sylius": "^2.0", + "symfony/framework-bundle": "^6.4 || ^7.2", + "symfony/lock": "^6.4 || ^7.2", + "symfony/property-access": "^6.4 || ^7.2", + "symfony/property-info": "^6.4 || ^7.2", + "symfony/serializer": "^6.4 || ^7.2", "symfony/service-contracts": "^3.5", "webmozart/assert": "^1.11" }, diff --git a/config/config.yaml b/config/config.yaml new file mode 100644 index 00000000..aa5d6012 --- /dev/null +++ b/config/config.yaml @@ -0,0 +1,9 @@ +imports: + - { resource: "resources.yaml" } + - { resource: "grid.yaml" } + +#sylius_ui: +# events: +# sylius.admin.taxon.update.form: +# blocks: +# akeneo: '@SynoliaSyliusAkeneoPlugin/Admin/Event/taxon_attributes_edit_block.html.twig' diff --git a/src/Resources/config/grid.yaml b/config/grid.yaml similarity index 100% rename from src/Resources/config/grid.yaml rename to config/grid.yaml diff --git a/src/Resources/config/resources.yaml b/config/resources.yaml similarity index 100% rename from src/Resources/config/resources.yaml rename to config/resources.yaml diff --git a/src/Resources/config/routes.yaml b/config/routes.yaml similarity index 84% rename from src/Resources/config/routes.yaml rename to config/routes.yaml index feb5217a..a3c28bfa 100644 --- a/src/Resources/config/routes.yaml +++ b/config/routes.yaml @@ -1,5 +1,5 @@ sylius_akeneo_controllers: - resource: '@SynoliaSyliusAkeneoPlugin/Resources/config/routes/admin_controller_routing.yaml' + resource: 'routes/admin_controller_routing.yaml' prefix: /akeneo name_prefix: 'sylius_akeneo_connector_' diff --git a/src/Resources/config/routes/admin_controller_routing.yaml b/config/routes/admin_controller_routing.yaml similarity index 100% rename from src/Resources/config/routes/admin_controller_routing.yaml rename to config/routes/admin_controller_routing.yaml diff --git a/src/Resources/config/services.yaml b/config/services.yaml similarity index 76% rename from src/Resources/config/services.yaml rename to config/services.yaml index 26148f18..380b908a 100644 --- a/src/Resources/config/services.yaml +++ b/config/services.yaml @@ -1,6 +1,21 @@ parameters: env(SYNOLIA_AKENEO_MAX_RETRY_COUNT): 3 env(SYNOLIA_AKENEO_RETRY_WAIT_TIME): 5000 + env(SYNOLIA_AKENEO_BASE_URL): 'http://' + env(SYNOLIA_AKENEO_CLIENT_ID): '' + env(SYNOLIA_AKENEO_CLIENT_SECRET): '' + env(SYNOLIA_AKENEO_USERNAME): '' + env(SYNOLIA_AKENEO_PASSWORD): '' + env(SYNOLIA_AKENEO_AXE_AS_MODEL): first + env(SYNOLIA_AKENEO_PAGINATION): 100 + env(SYNOLIA_AKENEO_EDITION): ee + synolia_sylius_akeneo.api_configuration.base_url: '%env(string:SYNOLIA_AKENEO_BASE_URL)%' + synolia_sylius_akeneo.api_configuration.client_id: '%env(string:SYNOLIA_AKENEO_CLIENT_ID)%' + synolia_sylius_akeneo.api_configuration.client_secret: '%env(string:SYNOLIA_AKENEO_CLIENT_SECRET)%' + synolia_sylius_akeneo.api_configuration.username: '%env(string:SYNOLIA_AKENEO_USERNAME)%' + synolia_sylius_akeneo.api_configuration.password: '%env(string:SYNOLIA_AKENEO_PASSWORD)%' + synolia_sylius_akeneo.api_configuration.axe_as_model: '%env(string:SYNOLIA_AKENEO_AXE_AS_MODEL)%' + synolia_sylius_akeneo.api_configuration.pagination: '%env(int:SYNOLIA_AKENEO_PAGINATION)%' services: _defaults: @@ -9,8 +24,8 @@ services: public: false Synolia\SyliusAkeneoPlugin\: - resource: '../../*' - exclude: '../../{DependencyInjection,Model,Migrations,Payload,SynoliaSyliusAkeneoPlugin.php}' + resource: '../src/*' + exclude: '../src/{DependencyInjection,Model,Migrations,Payload,SynoliaSyliusAkeneoPlugin.php}' sylius.product_filters_rules_class_metadata: class: 'Doctrine\Common\Persistence\Mapping\ClassMetadata' diff --git a/docs/reference_entity/REFERENCE_ENTITY.md b/docs/reference_entity/REFERENCE_ENTITY.md index 5e37e461..1bd5be11 100644 --- a/docs/reference_entity/REFERENCE_ENTITY.md +++ b/docs/reference_entity/REFERENCE_ENTITY.md @@ -23,7 +23,7 @@ Reference entities are identifiable by their special type **Reference Entity**. By their special type of beeing an attribute of attributes we decided to only show the code value of the reference entity on the attributes grid. -Therefore, if you would like them to be displayed another way, you can edit the reference entity template `src/Resources/views/SyliusAttributeBundle/Types/reference_entity.html.twig`. +Therefore, if you would like them to be displayed another way, you can edit the reference entity template `templates/SyliusAttributeBundle/Types/reference_entity.html.twig`. ### On the product edition page (BO) diff --git a/src/Migrations/Version20200605081308.php b/migrations/Version20200605081308.php similarity index 100% rename from src/Migrations/Version20200605081308.php rename to migrations/Version20200605081308.php diff --git a/src/Migrations/Version20201028081617.php b/migrations/Version20201028081617.php similarity index 100% rename from src/Migrations/Version20201028081617.php rename to migrations/Version20201028081617.php diff --git a/src/Migrations/Version20210224160400.php b/migrations/Version20210224160400.php similarity index 100% rename from src/Migrations/Version20210224160400.php rename to migrations/Version20210224160400.php diff --git a/src/Migrations/Version20220704081604.php b/migrations/Version20220704081604.php similarity index 100% rename from src/Migrations/Version20220704081604.php rename to migrations/Version20220704081604.php diff --git a/src/Migrations/Version20221107103437.php b/migrations/Version20221107103437.php similarity index 100% rename from src/Migrations/Version20221107103437.php rename to migrations/Version20221107103437.php diff --git a/src/Migrations/Version20221114131553.php b/migrations/Version20221114131553.php similarity index 100% rename from src/Migrations/Version20221114131553.php rename to migrations/Version20221114131553.php diff --git a/src/Migrations/Version20221215073239.php b/migrations/Version20221215073239.php similarity index 100% rename from src/Migrations/Version20221215073239.php rename to migrations/Version20221215073239.php diff --git a/src/Migrations/Version20230425081120.php b/migrations/Version20230425081120.php similarity index 100% rename from src/Migrations/Version20230425081120.php rename to migrations/Version20230425081120.php diff --git a/src/Migrations/Version20230724140208.php b/migrations/Version20230724140208.php similarity index 100% rename from src/Migrations/Version20230724140208.php rename to migrations/Version20230724140208.php diff --git a/src/Migrations/Version20231019090303.php b/migrations/Version20231019090303.php similarity index 100% rename from src/Migrations/Version20231019090303.php rename to migrations/Version20231019090303.php diff --git a/src/Migrations/Version20231106080715.php b/migrations/Version20231106080715.php similarity index 100% rename from src/Migrations/Version20231106080715.php rename to migrations/Version20231106080715.php diff --git a/src/Resources/public/js/form.js b/public/js/form.js similarity index 100% rename from src/Resources/public/js/form.js rename to public/js/form.js diff --git a/src/Resources/public/js/tooltip.js b/public/js/tooltip.js similarity index 100% rename from src/Resources/public/js/tooltip.js rename to public/js/tooltip.js diff --git a/src/Resources/public/main.css b/public/main.css similarity index 100% rename from src/Resources/public/main.css rename to public/main.css diff --git a/src/Resources/public/main.js b/public/main.js similarity index 100% rename from src/Resources/public/main.js rename to public/main.js diff --git a/src/Controller/ApiConfigurationController.php b/src/Controller/ApiConfigurationController.php deleted file mode 100644 index 777207f4..00000000 --- a/src/Controller/ApiConfigurationController.php +++ /dev/null @@ -1,74 +0,0 @@ -apiConfigurationRepository->findOneBy([], ['id' => 'DESC']); - if (!$apiConfiguration instanceof ApiConfiguration) { - /** @var ApiConfiguration $apiConfiguration */ - $apiConfiguration = $this->apiConfigurationFactory->createNew(); - } - - $form = $this->createForm(ApiConfigurationType::class, $apiConfiguration); - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - /** @var \Symfony\Component\Form\SubmitButton $testCredentialsButton */ - $testCredentialsButton = $form->get('testCredentials'); - - try { - Assert::isInstanceOf($apiConfiguration, ApiConfiguration::class); - $client = $this->clientFactory->authenticateByPassword($apiConfiguration); - $client->getCategoryApi()->all(self::PAGING_SIZE); - - $this->entityManager->persist($apiConfiguration); - - if (!$testCredentialsButton->isClicked()) { - $this->entityManager->flush(); - } - - $request->getSession()->getFlashBag()->add('success', $this->translator->trans('akeneo.ui.admin.authentication_successfully_succeeded')); - } catch (\Throwable $throwable) { - $request->getSession()->getFlashBag()->add('error', $throwable->getMessage()); - } - } - - return $this->render('@SynoliaSyliusAkeneoPlugin/Admin/AkeneoConnector/api_configuration.html.twig', [ - 'form' => $form, - ]); - } -} diff --git a/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php b/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php index e4d8ddf7..6b54bf44 100644 --- a/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php +++ b/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php @@ -35,9 +35,7 @@ final class SynoliaSyliusAkeneoExtension extends Extension implements PrependExt public function load(array $configs, ContainerBuilder $container): void { $config = $this->processConfiguration(new Configuration(), $configs); - - $loader = new YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config')); - + $loader = new YamlFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config')); $loader->load('services.yaml'); $this->processApiConfiguration($container, $config); @@ -50,19 +48,6 @@ public function prepend(ContainerBuilder $container): void { $container->prependExtensionConfig('monolog', ['channels' => ['akeneo']]); - if (!$container->hasExtension('twig')) { - return; - } - - $viewsPath = \dirname(__DIR__) . '/Resources/views/'; - // This add our override in twig paths with correct namespace. No need for final user to copy it - $paths = [ - $viewsPath . 'SyliusAttributeBundle' => 'SyliusAttribute', - ]; - - $container->prependExtensionConfig('twig', [ - 'paths' => $paths, - ]); $this->prependDoctrineMigrations($container); } @@ -73,7 +58,7 @@ protected function getMigrationsNamespace(): string protected function getMigrationsDirectory(): string { - return '@SynoliaSyliusAkeneoPlugin/Migrations'; + return '@SynoliaSyliusAkeneoPlugin/migrations'; } protected function getNamespacesOfMigrationsExecutedBefore(): array @@ -83,29 +68,17 @@ protected function getNamespacesOfMigrationsExecutedBefore(): array private function processApiConfiguration(ContainerBuilder $container, array $config): void { - // If DotEnvApiConnectionProvider configuration is not set, use default DatabaseApiConfigurationProvider - if (\count($config) !== 0 && !\array_key_exists('api_configuration', $config)) { - $container->setAlias(ApiConnectionProviderInterface::class, DatabaseApiConfigurationProvider::class); - - return; - } - - // If DotEnvApiConnectionProvider configuration is set, remove the DatabaseApiConfigurationProvider - $container->removeDefinition(DatabaseApiConfigurationProvider::class); - $container->removeDefinition(AdminApiConfigurationMenuListener::class); - $container->removeDefinition(ApiConfigurationController::class); - - $dotEnvDefinition = $container->getDefinition(DotEnvApiConnectionProvider::class); - $dotEnvDefinition - ->setArgument('$baseUrl', $config['api_configuration']['base_url']) - ->setArgument('$clientId', $config['api_configuration']['client_id']) - ->setArgument('$clientSecret', $config['api_configuration']['client_secret']) - ->setArgument('$username', $config['api_configuration']['username']) - ->setArgument('$password', $config['api_configuration']['password']) - ->setArgument('$edition', $config['api_configuration']['edition']) - ->setArgument('$axeAsModel', $config['api_configuration']['axe_as_model']) - ->setArgument('$pagination', $config['api_configuration']['pagination']) - ; +// $dotEnvDefinition = $container->getDefinition(DotEnvApiConnectionProvider::class); +// $dotEnvDefinition +// ->setArgument('$baseUrl', $config['api_configuration']['base_url']) +// ->setArgument('$clientId', $config['api_configuration']['client_id']) +// ->setArgument('$clientSecret', $config['api_configuration']['client_secret']) +// ->setArgument('$username', $config['api_configuration']['username']) +// ->setArgument('$password', $config['api_configuration']['password']) +// ->setArgument('$edition', $config['api_configuration']['edition']) +// ->setArgument('$axeAsModel', $config['api_configuration']['axe_as_model']) +// ->setArgument('$pagination', $config['api_configuration']['pagination']) +// ; $container->setAlias(ApiConnectionProviderInterface::class, DotEnvApiConnectionProvider::class); } diff --git a/src/Manager/ProcessManager.php b/src/Manager/ProcessManager.php index e4ce32c3..735f1367 100644 --- a/src/Manager/ProcessManager.php +++ b/src/Manager/ProcessManager.php @@ -4,7 +4,7 @@ namespace Synolia\SyliusAkeneoPlugin\Manager; -use BluePsyduck\SymfonyProcessManager\ProcessManager as BluePsyduckProcessManager; +use Synolia\SyliusAkeneoPlugin\ProcessManager\ProcessManager as BluePsyduckProcessManager; use Symfony\Component\Process\Process; class ProcessManager implements ProcessManagerInterface diff --git a/src/Menu/AdminApiConfigurationMenuListener.php b/src/Menu/AdminApiConfigurationMenuListener.php deleted file mode 100644 index 8aeb2d84..00000000 --- a/src/Menu/AdminApiConfigurationMenuListener.php +++ /dev/null @@ -1,34 +0,0 @@ -getMenu(); - - if (!$menu->getChild('akeneo') instanceof ItemInterface) { - $menu->addChild('akeneo'); - } - - /** @var ItemInterface $subMenu */ - $subMenu = $menu->getChild('akeneo'); - - $subMenu - ->addChild('sylius_admin_akeneo_api_configuration', [ - 'route' => 'sylius_akeneo_connector_api_configuration', - ]) - ->setAttribute('type', 'link') - ->setLabel('sylius.ui.admin.akeneo.api_configuration.title') - ->setLabelAttribute('icon', 'cogs') - ; - } -} diff --git a/src/ProcessManager/ProcessManager.php b/src/ProcessManager/ProcessManager.php new file mode 100644 index 00000000..1897068d --- /dev/null +++ b/src/ProcessManager/ProcessManager.php @@ -0,0 +1,301 @@ + + * @license http://opensource.org/licenses/GPL-3.0 GPL v3 + */ +class ProcessManager implements ProcessManagerInterface +{ + /** + * The number of processes to run in parallel. + * @var int + */ + protected $numberOfParallelProcesses; + + /** + * The interval to wait between the polls of the processes, in milliseconds. + * @var int + */ + protected $pollInterval; + + /** + * The time to delay the start of processes to space them out, in milliseconds. + * @var int + */ + protected $processStartDelay; + + /** + * The processes currently waiting to be executed. + * @var array, callable|null, array}> + */ + protected $pendingProcessData = []; + + /** + * The processes currently running. + * @var array> + */ + protected $runningProcesses = []; + + /** + * The callback for when a process is about to be started. + * @var callable|null + */ + protected $processStartCallback; + + /** + * The callback for when a process has finished. + * @var callable|null + */ + protected $processFinishCallback; + + /** + * The callback for when a process timed out. + * @var callable|null + */ + protected $processTimeoutCallback; + + /** + * The callback for when a process is checked. + * @var callable|null + */ + protected $processCheckCallback; + + /** + * ProcessManager constructor. + * @param int $numberOfParallelProcesses The number of processes to run in parallel. + * @param int $pollInterval The interval to wait between the polls of the processes, in milliseconds. + * @param int $processStartDelay The time to delay the start of processes to space them out, in milliseconds. + */ + public function __construct( + int $numberOfParallelProcesses = 1, + int $pollInterval = 100, + int $processStartDelay = 0 + ) { + $this->numberOfParallelProcesses = $numberOfParallelProcesses; + $this->pollInterval = $pollInterval; + $this->processStartDelay = $processStartDelay; + } + + /** + * Sets the number of processes to run in parallel. + * @param int $numberOfParallelProcesses + * @return $this + */ + public function setNumberOfParallelProcesses(int $numberOfParallelProcesses) + { + $this->numberOfParallelProcesses = $numberOfParallelProcesses; + $this->executeNextPendingProcess(); // Start new processes in case we increased the limit. + return $this; + } + + /** + * Sets the interval to wait between the polls of the processes, in milliseconds. + * @param int $pollInterval + * @return $this + */ + public function setPollInterval(int $pollInterval) + { + $this->pollInterval = $pollInterval; + return $this; + } + + /** + * Sets the time to delay the start of processes to space them out, in milliseconds. + * @param int $processStartDelay + * @return $this + */ + public function setProcessStartDelay(int $processStartDelay) + { + $this->processStartDelay = $processStartDelay; + return $this; + } + + /** + * Sets the callback for when a process is about to be started. + * @param callable|null $processStartCallback The callback, accepting a Process as only argument. + * @return $this + */ + public function setProcessStartCallback(?callable $processStartCallback) + { + $this->processStartCallback = $processStartCallback; + return $this; + } + + /** + * Sets the callback for when a process has finished. + * @param callable|null $processFinishCallback The callback, accepting a Process as only argument. + * @return $this + */ + public function setProcessFinishCallback(?callable $processFinishCallback) + { + $this->processFinishCallback = $processFinishCallback; + return $this; + } + + /** + * Sets the callback for when a process timed out. + * @param callable|null $processTimeoutCallback + * @return $this + */ + public function setProcessTimeoutCallback(?callable $processTimeoutCallback) + { + $this->processTimeoutCallback = $processTimeoutCallback; + return $this; + } + + /** + * Sets the callback for when a process is checked. + * @param callable|null $processCheckCallback + * @return $this + */ + public function setProcessCheckCallback(?callable $processCheckCallback) + { + $this->processCheckCallback = $processCheckCallback; + return $this; + } + + /** + * Invokes the callback if it is an callable. + * @param callable|null $callback + * @param Process $process + */ + protected function invokeCallback(?callable $callback, Process $process): void + { + if (is_callable($callback)) { + $callback($process); + } + } + + /** + * Adds a process to the manager. + * @param Process $process + * @param callable|null $callback + * @param array $env + * @return $this + */ + public function addProcess(Process $process, callable $callback = null, array $env = []) + { + $this->pendingProcessData[] = [$process, $callback, $env]; + $this->executeNextPendingProcess(); + $this->checkRunningProcesses(); + return $this; + } + + /** + * Executes the next pending process, if the limit of parallel processes is not yet reached. + */ + protected function executeNextPendingProcess(): void + { + if ($this->canExecuteNextPendingRequest()) { + $this->sleep($this->processStartDelay); + + $data = array_shift($this->pendingProcessData); + if ($data !== null) { + [$process, $callback, $env] = $data; + /* @var Process $process */ + $this->invokeCallback($this->processStartCallback, $process); + $process->start($callback, $env); + + $pid = $process->getPid(); + if ($pid === null) { + // The process finished before we were able to check its process id. + $this->checkRunningProcess($pid, $process); + } else { + $this->runningProcesses[$pid] = $process; + } + } + } + } + + /** + * Checks whether a pending request is available and can be executed. + * @return bool + */ + protected function canExecuteNextPendingRequest(): bool + { + return count($this->runningProcesses) < $this->numberOfParallelProcesses + && count($this->pendingProcessData) > 0; + } + + /** + * Checks the running processes whether they have finished. + */ + protected function checkRunningProcesses(): void + { + foreach ($this->runningProcesses as $pid => $process) { + $this->checkRunningProcess($pid, $process); + } + } + + /** + * Checks the process whether it has finished. + * @param int|null $pid + * @param Process $process + */ + protected function checkRunningProcess(?int $pid, Process $process): void + { + $this->invokeCallback($this->processCheckCallback, $process); + $this->checkProcessTimeout($process); + if (!$process->isRunning()) { + $this->invokeCallback($this->processFinishCallback, $process); + + if ($pid !== null) { + unset($this->runningProcesses[$pid]); + } + $this->executeNextPendingProcess(); + } + } + + /** + * Checks whether the process already timed out. + * @param Process $process + */ + protected function checkProcessTimeout(Process $process): void + { + try { + $process->checkTimeout(); + } catch (ProcessTimedOutException $e) { + $this->invokeCallback($this->processTimeoutCallback, $process); + } + } + + /** + * Waits for all processes to be finished. + * @return $this + */ + public function waitForAllProcesses() + { + while ($this->hasUnfinishedProcesses()) { + $this->sleep($this->pollInterval); + $this->checkRunningProcesses(); + } + return $this; + } + + /** + * Sleeps for the specified number of milliseconds. + * @param int $milliseconds + */ + protected function sleep(int $milliseconds): void + { + usleep($milliseconds * 1000); + } + + /** + * Returns whether the manager still has unfinished processes. + * @return bool + */ + public function hasUnfinishedProcesses(): bool + { + return count($this->pendingProcessData) > 0 || count($this->runningProcesses) > 0; + } +} diff --git a/src/ProcessManager/ProcessManagerInterface.php b/src/ProcessManager/ProcessManagerInterface.php new file mode 100644 index 00000000..598c4c70 --- /dev/null +++ b/src/ProcessManager/ProcessManagerInterface.php @@ -0,0 +1,37 @@ + + * @license http://opensource.org/licenses/GPL-3.0 GPL v3 + */ +interface ProcessManagerInterface +{ + /** + * Adds a process to the manager. + * @param Process $process + * @param callable|null $callback + * @param array $env + * @return $this + */ + public function addProcess(Process $process, callable $callback = null, array $env = []); + + /** + * Waits for all processes to be finished. + * @return $this + */ + public function waitForAllProcesses(); + + /** + * Returns whether the manager still has unfinished processes. + * @return bool + */ + public function hasUnfinishedProcesses(): bool; +} diff --git a/src/Provider/Configuration/Api/DatabaseApiConfigurationProvider.php b/src/Provider/Configuration/Api/DatabaseApiConfigurationProvider.php deleted file mode 100644 index 660146d2..00000000 --- a/src/Provider/Configuration/Api/DatabaseApiConfigurationProvider.php +++ /dev/null @@ -1,48 +0,0 @@ -apiConnection instanceof ApiConnectionInterface) { - return $this->apiConnection; - } - - $configuration = $this->apiConfigurationRepository->findOneBy([], ['id' => 'DESC']); - - if (!$configuration instanceof ApiConfiguration) { - throw new ApiNotConfiguredException(); - } - - return $this->apiConnection = $this->databaseApiConfigurationToApiConnectionTransformer->transform($configuration); - } -} diff --git a/src/Provider/Configuration/Api/DotEnvApiConnectionProvider.php b/src/Provider/Configuration/Api/DotEnvApiConnectionProvider.php index 1b2cae35..2d7efdb3 100644 --- a/src/Provider/Configuration/Api/DotEnvApiConnectionProvider.php +++ b/src/Provider/Configuration/Api/DotEnvApiConnectionProvider.php @@ -4,19 +4,28 @@ namespace Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api; +use Symfony\Component\DependencyInjection\Attribute\Autowire; use Synolia\SyliusAkeneoPlugin\Model\Configuration\ApiConnection; use Synolia\SyliusAkeneoPlugin\Model\Configuration\ApiConnectionInterface; class DotEnvApiConnectionProvider implements ApiConnectionProviderInterface { public function __construct( + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_BASE_URL)')] private string $baseUrl, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_CLIENT_ID)')] private string $clientId, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_CLIENT_SECRET)')] private string $clientSecret, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_USERNAME)')] private string $username, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_PASSWORD)')] private string $password, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_EDITION)')] private string $edition, + #[Autowire(param: 'env(string:SYNOLIA_AKENEO_AXE_AS_MODEL)')] private string $axeAsModel, + #[Autowire(param: 'env(int:SYNOLIA_AKENEO_PAGINATION)')] private int $pagination, ) { } diff --git a/src/Resources/config/config.yaml b/src/Resources/config/config.yaml deleted file mode 100644 index 9fa0ace1..00000000 --- a/src/Resources/config/config.yaml +++ /dev/null @@ -1,9 +0,0 @@ -imports: - - { resource: "resources.yaml" } - - { resource: "grid.yaml" } - -sylius_ui: - events: - sylius.admin.taxon.update.form: - blocks: - akeneo: '@SynoliaSyliusAkeneoPlugin/Admin/Event/taxon_attributes_edit_block.html.twig' diff --git a/src/SynoliaSyliusAkeneoPlugin.php b/src/SynoliaSyliusAkeneoPlugin.php index 170ed93b..6b022e6f 100644 --- a/src/SynoliaSyliusAkeneoPlugin.php +++ b/src/SynoliaSyliusAkeneoPlugin.php @@ -15,4 +15,9 @@ public function __toString(): string { return 'SynoliaSyliusAkeneoPlugin'; } + + public function getPath(): string + { + return dirname(__DIR__); + } } diff --git a/src/Resources/views/Admin/AkeneoConnector/api_configuration.html.twig b/templates/Admin/AkeneoConnector/api_configuration.html.twig similarity index 100% rename from src/Resources/views/Admin/AkeneoConnector/api_configuration.html.twig rename to templates/Admin/AkeneoConnector/api_configuration.html.twig diff --git a/src/Resources/views/Admin/AkeneoConnector/attributes_configuration.html.twig b/templates/Admin/AkeneoConnector/attributes_configuration.html.twig similarity index 100% rename from src/Resources/views/Admin/AkeneoConnector/attributes_configuration.html.twig rename to templates/Admin/AkeneoConnector/attributes_configuration.html.twig diff --git a/src/Resources/views/Admin/AkeneoConnector/categories.html.twig b/templates/Admin/AkeneoConnector/categories.html.twig similarity index 100% rename from src/Resources/views/Admin/AkeneoConnector/categories.html.twig rename to templates/Admin/AkeneoConnector/categories.html.twig diff --git a/src/Resources/views/Admin/AkeneoConnector/filters_configuration.html.twig b/templates/Admin/AkeneoConnector/filters_configuration.html.twig similarity index 100% rename from src/Resources/views/Admin/AkeneoConnector/filters_configuration.html.twig rename to templates/Admin/AkeneoConnector/filters_configuration.html.twig diff --git a/src/Resources/views/Admin/AkeneoConnector/products_configuration.html.twig b/templates/Admin/AkeneoConnector/products_configuration.html.twig similarity index 100% rename from src/Resources/views/Admin/AkeneoConnector/products_configuration.html.twig rename to templates/Admin/AkeneoConnector/products_configuration.html.twig diff --git a/src/Resources/views/Admin/Event/attributes_block.html.twig b/templates/Admin/Event/attributes_block.html.twig similarity index 100% rename from src/Resources/views/Admin/Event/attributes_block.html.twig rename to templates/Admin/Event/attributes_block.html.twig diff --git a/src/Resources/views/Admin/Event/taxon_attributes_block.html.twig b/templates/Admin/Event/taxon_attributes_block.html.twig similarity index 100% rename from src/Resources/views/Admin/Event/taxon_attributes_block.html.twig rename to templates/Admin/Event/taxon_attributes_block.html.twig diff --git a/src/Resources/views/Admin/Event/taxon_attributes_edit_block.html.twig b/templates/Admin/Event/taxon_attributes_edit_block.html.twig similarity index 100% rename from src/Resources/views/Admin/Event/taxon_attributes_edit_block.html.twig rename to templates/Admin/Event/taxon_attributes_edit_block.html.twig diff --git a/src/Resources/views/Admin/Form/theme.html.twig b/templates/Admin/Form/theme.html.twig similarity index 100% rename from src/Resources/views/Admin/Form/theme.html.twig rename to templates/Admin/Form/theme.html.twig diff --git a/src/Resources/views/Admin/Taxon/Attribute/attributesCollection.html.twig b/templates/Admin/Taxon/Attribute/attributesCollection.html.twig similarity index 100% rename from src/Resources/views/Admin/Taxon/Attribute/attributesCollection.html.twig rename to templates/Admin/Taxon/Attribute/attributesCollection.html.twig diff --git a/src/Resources/views/Admin/Taxon/Show/Types/default.html.twig b/templates/Admin/Taxon/Show/Types/default.html.twig similarity index 100% rename from src/Resources/views/Admin/Taxon/Show/Types/default.html.twig rename to templates/Admin/Taxon/Show/Types/default.html.twig diff --git a/src/Resources/views/Admin/Taxon/Show/Types/text.html.twig b/templates/Admin/Taxon/Show/Types/text.html.twig similarity index 100% rename from src/Resources/views/Admin/Taxon/Show/Types/text.html.twig rename to templates/Admin/Taxon/Show/Types/text.html.twig diff --git a/src/Resources/views/Admin/Taxon/Show/Types/textarea.html.twig b/templates/Admin/Taxon/Show/Types/textarea.html.twig similarity index 100% rename from src/Resources/views/Admin/Taxon/Show/Types/textarea.html.twig rename to templates/Admin/Taxon/Show/Types/textarea.html.twig diff --git a/src/Resources/views/Admin/layout.html.twig b/templates/Admin/layout.html.twig similarity index 100% rename from src/Resources/views/Admin/layout.html.twig rename to templates/Admin/layout.html.twig diff --git a/src/Resources/views/SyliusAttributeBundle/Types/asset.html.twig b/templates/SyliusAttributeBundle/Types/asset.html.twig similarity index 100% rename from src/Resources/views/SyliusAttributeBundle/Types/asset.html.twig rename to templates/SyliusAttributeBundle/Types/asset.html.twig diff --git a/src/Resources/views/SyliusAttributeBundle/Types/metric.html.twig b/templates/SyliusAttributeBundle/Types/metric.html.twig similarity index 100% rename from src/Resources/views/SyliusAttributeBundle/Types/metric.html.twig rename to templates/SyliusAttributeBundle/Types/metric.html.twig diff --git a/src/Resources/views/SyliusAttributeBundle/Types/reference_entity.html.twig b/templates/SyliusAttributeBundle/Types/reference_entity.html.twig similarity index 100% rename from src/Resources/views/SyliusAttributeBundle/Types/reference_entity.html.twig rename to templates/SyliusAttributeBundle/Types/reference_entity.html.twig diff --git a/src/Resources/translations/messages.en.yml b/translations/messages.en.yml similarity index 100% rename from src/Resources/translations/messages.en.yml rename to translations/messages.en.yml diff --git a/src/Resources/translations/messages.fr.yml b/translations/messages.fr.yml similarity index 100% rename from src/Resources/translations/messages.fr.yml rename to translations/messages.fr.yml diff --git a/src/Resources/translations/validators.en.yaml b/translations/validators.en.yaml similarity index 100% rename from src/Resources/translations/validators.en.yaml rename to translations/validators.en.yaml diff --git a/src/Resources/translations/validators.fr.yaml b/translations/validators.fr.yaml similarity index 100% rename from src/Resources/translations/validators.fr.yaml rename to translations/validators.fr.yaml From 4d6d56e2d68b56141c0e46f4f781f4cbf216d356 Mon Sep 17 00:00:00 2001 From: maxperei Date: Thu, 15 May 2025 12:58:50 +0200 Subject: [PATCH 02/20] feat(codebase): [upgrade] sylius v2.x compatibility --- assets/controllers/form_controller.js | 86 + assets/legacy/js/sylius-form-collection.js | 134 + assets/package.json | 38 +- assets/src/js/form.js | 96 - assets/src/js/tooltip.js | 33 - assets/src/main.js | 1 - assets/src/scss/common/_forms.scss | 52 - assets/src/scss/common/_global.scss | 12 - assets/src/scss/main.scss | 2 - assets/yarn.lock | 2718 ++++------------- composer.json | 3 +- config/config.yaml | 1 + config/twig_hooks.yaml | 156 + public/js/form.js | 1 - public/js/tooltip.js | 1 - public/main.css | 1 - public/main.js | 0 src/Controller/AttributesController.php | 3 +- src/Controller/CategoriesController.php | 6 +- .../ProductFilterRulesController.php | 3 +- src/Controller/ProductsController.php | 4 +- src/Form/Type/AttributesTypeMappingType.php | 4 - src/Form/Type/CategoriesConfigurationType.php | 4 - src/Form/Type/ProductConfigurationType.php | 6 - .../Type/ProductFilterRuleAdvancedType.php | 5 +- src/Form/Type/ProductFilterRuleSimpleType.php | 8 +- src/Form/Type/TaxonAttributeValueType.php | 2 +- .../api_configuration.html.twig | 53 - .../AkeneoConnector/categories.html.twig | 24 - .../filters_configuration.html.twig | 69 - .../products_configuration.html.twig | 42 - templates/Admin/layout.html.twig | 31 - .../content/form.html.twig | 29 + .../content/header/breadcrumbs.html.twig | 7 + .../admin/categories/content/form.html.twig | 24 + .../content/header/breadcrumbs.html.twig | 7 + .../title_block/actions/cancel.html.twig | 5 + .../content/form.html.twig | 56 + .../content/header/breadcrumbs.html.twig | 7 + .../title_block/actions/update.html.twig | 11 + .../Form => admin/form}/theme.html.twig | 45 +- templates/admin/layout.html.twig | 9 + .../content/form.html.twig | 32 + .../content/header/breadcrumbs.html.twig | 7 + translations/messages.en.yml | 2 +- translations/validators.en.yaml | 3 - translations/validators.fr.yaml | 3 - 47 files changed, 1246 insertions(+), 2600 deletions(-) create mode 100644 assets/controllers/form_controller.js create mode 100644 assets/legacy/js/sylius-form-collection.js delete mode 100644 assets/src/js/form.js delete mode 100644 assets/src/js/tooltip.js delete mode 100644 assets/src/main.js delete mode 100644 assets/src/scss/common/_forms.scss delete mode 100644 assets/src/scss/common/_global.scss delete mode 100644 assets/src/scss/main.scss create mode 100644 config/twig_hooks.yaml delete mode 100644 public/js/form.js delete mode 100644 public/js/tooltip.js delete mode 100644 public/main.css delete mode 100644 public/main.js delete mode 100644 templates/Admin/AkeneoConnector/api_configuration.html.twig delete mode 100644 templates/Admin/AkeneoConnector/categories.html.twig delete mode 100644 templates/Admin/AkeneoConnector/filters_configuration.html.twig delete mode 100644 templates/Admin/AkeneoConnector/products_configuration.html.twig delete mode 100644 templates/Admin/layout.html.twig create mode 100644 templates/admin/attributes_configuration/content/form.html.twig create mode 100644 templates/admin/attributes_configuration/content/header/breadcrumbs.html.twig create mode 100644 templates/admin/categories/content/form.html.twig create mode 100644 templates/admin/categories/content/header/breadcrumbs.html.twig create mode 100644 templates/admin/common/content/header/title_block/actions/cancel.html.twig create mode 100644 templates/admin/filters_configuration/content/form.html.twig create mode 100644 templates/admin/filters_configuration/content/header/breadcrumbs.html.twig create mode 100644 templates/admin/filters_configuration/content/header/title_block/actions/update.html.twig rename templates/{Admin/Form => admin/form}/theme.html.twig (50%) create mode 100644 templates/admin/layout.html.twig create mode 100644 templates/admin/products_configuration/content/form.html.twig create mode 100644 templates/admin/products_configuration/content/header/breadcrumbs.html.twig delete mode 100644 translations/validators.en.yaml delete mode 100644 translations/validators.fr.yaml diff --git a/assets/controllers/form_controller.js b/assets/controllers/form_controller.js new file mode 100644 index 00000000..68ba7d91 --- /dev/null +++ b/assets/controllers/form_controller.js @@ -0,0 +1,86 @@ +import { Controller } from '@hotwired/stimulus'; +import $ from 'jquery'; +import '../legacy/js/sylius-form-collection.js'; + +/* stimulusFetch: 'lazy' */ +export default class extends Controller { + static values = { + std: String, + adv: String, + }; + static targets = ['switch']; + initialize() { + this.options = { + locale: { + trigger: "#product_filter_rule_simple_completeness_type", + selector: "#product_filter_rule_simple_locales", + values: [ + "GREATER THAN ON ALL LOCALES", + "GREATER OR EQUALS THAN ON ALL LOCALES", + "LOWER THAN ON ALL LOCALES", + "LOWER OR EQUALS THAN ON ALL LOCALES", + ], + }, + before: { + trigger: "#product_filter_rule_simple_updated_mode", + selector: "#product_filter_rule_simple_updated_before", + values: ["BETWEEN", "<"], + }, + after: { + trigger: "#product_filter_rule_simple_updated_mode", + selector: "#product_filter_rule_simple_updated_after", + values: ["BETWEEN", ">"], + }, + since: { + trigger: "#product_filter_rule_simple_updated_mode", + selector: "#product_filter_rule_simple_updated", + values: ["SINCE LAST N DAYS"], + }, + } + } + connect() { + this.toggleFields(); + $('[data-form-type="collection"]').CollectionForm(); + if (!this.hasSwitchTarget) { + return; + } + if (this.switchTarget.checked || this.switchTarget.querySelector('input:checked')) { + this.switchTarget.dispatchEvent(new CustomEvent('input')); + } + } + toggleForms(e) { + if (this.hasStdValue && this.hasAdvValue) { + $(e.currentTarget).is(':checked') + ? $('button[type=submit]').attr('form', this.advValue) + : $('button[type=submit]').attr('form', this.stdValue); + } + $(".form-switch > label").toggleClass("opacity-50"); + $(".togglable").toggle(); + } + toggleFields() { + const toHide = [ + this.options.locale.selector, + this.options.before.selector, + this.options.after.selector, + this.options.since.selector, + ]; + for (let k in this.options) { + if (this.options[k].values.includes($(this.options[k].trigger).val())) { + let index = toHide.indexOf(this.options[k].selector); + if (index !== -1) { + toHide.splice(index, 1); + } + } + if ($(this.options[k].trigger).length) { + $(this.options[k].trigger).on("change", (e) => { + this.options[k].values.includes($(e.currentTarget).val()) + ? $(this.options[k].selector).parent(".field").removeClass("d-none") + : $(this.options[k].selector).parent(".field").addClass("d-none"); + }); + } + } + if ($(`${toHide.join()}`).length) { + $(`${toHide.join()}`).parent(".field").addClass("d-none"); + } + } +} \ No newline at end of file diff --git a/assets/legacy/js/sylius-form-collection.js b/assets/legacy/js/sylius-form-collection.js new file mode 100644 index 00000000..fbd3cf33 --- /dev/null +++ b/assets/legacy/js/sylius-form-collection.js @@ -0,0 +1,134 @@ +/* + * This file is part of the Sylius package. + * + * (c) Sylius Sp. z o.o. + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +import $ from 'jquery'; + +/** + * Collection Form plugin + * + * @param element + * @constructor + */ +class CollectionForm { + constructor(element) { + this.addItem = this.addItem.bind(this); + this.updateItem = this.updateItem.bind(this); + this.deleteItem = this.constructor.deleteItem; + this.updatePrototype = this.updatePrototype.bind(this); + + this.$element = $(element); + this.$list = this.$element.find('[data-form-collection="list"]:first'); + this.count = this.$list.children().length; + this.lastChoice = null; + this.$element.on('click', '[data-form-collection="add"]:last', this.addItem); + this.$element.on('click', '[data-form-collection="delete"]', this.deleteItem); + this.$element.on('change', '[data-form-collection="update"]', this.updateItem); + $(document).on('change', '[data-form-prototype="update"]', this.updatePrototype); + $(document).on('collection-form-add', (event, addedElement) => { + $(addedElement).find('[data-form-type="collection"]').CollectionForm(); + $(document).trigger('dom-node-inserted', [$(addedElement)]); + }); + } + + /** + * Add a item to the collection. + * @param event + */ + addItem(event) { + event.preventDefault(); + + let prototype = this.$element.data('prototype'); + let prototypeName = new RegExp(this.$element.data('prototype-name'), 'g'); + + prototype = prototype.replace(prototypeName, this.count); + + this.$list.append(prototype); + this.count = this.count + 1; + + $(document).trigger('collection-form-add', [this.$list.children().last()]); + } + + /** + * Update item from the collection + */ + updateItem(event) { + event.preventDefault(); + const $element = $(event.currentTarget); + const url = $element.data('form-url'); + const value = $element.val(); + const $container = $element.closest('[data-form-collection="item"]'); + const index = $container.data('form-collection-index'); + const position = $container.data('form-collection-index'); + + if (url) { + $container.load(url, { id: value, position }); + } else { + let $prototype = this.$element.find(`[data-form-prototype="${value}"]`); + let prototypeName = new RegExp($prototype.data('subprototype-name'), 'g'); + + let prototype = $prototype.val().replace(prototypeName, index); + + $container.replaceWith(prototype); + } + $(document).trigger('collection-form-update', [$(event.currentTarget)]); + } + + /** + * Delete item from the collection + * @param event + */ + static deleteItem(event) { + event.preventDefault(); + + $(event.currentTarget) + .closest('[data-form-collection="item"]') + .remove(); + + $(document).trigger('collection-form-delete', [$(event.currentTarget)]); + } + + /** + * Update the prototype + * @param event + */ + updatePrototype(event) { + const $target = $(event.currentTarget); + let prototypeName = $target.val(); + + if ($target.data('form-prototype-prefix') !== undefined) { + prototypeName = $target.data('form-prototype-prefix') + prototypeName; + } + + if (this.lastChoice !== null && this.lastChoice !== prototypeName) { + this.$list.html(''); + } + + this.lastChoice = prototypeName; + + this.$element.data('prototype', this.$element.find(`[data-form-prototype="${prototypeName}"]`).val()); + } +} + +/* + * Plugin definition + */ + +$.fn.CollectionForm = function CollectionFormPlugin(option) { + this.each((idx, el) => { + const $element = $(el); + const data = $element.data('collectionForm'); + const options = typeof option === 'object' && option; + + if (!data) { + $element.data('collectionForm', new CollectionForm(el, options)); + } + }); +}; + +$.fn.CollectionForm.Constructor = CollectionForm; diff --git a/assets/package.json b/assets/package.json index 29d7f3b0..3dc93c38 100644 --- a/assets/package.json +++ b/assets/package.json @@ -1,14 +1,18 @@ { - "name": "synolia-sylius-akeneo-plugin", - "version": "1.0.0", + "name": "@synolia/sylius-akeneo-plugin", + "version": "2.0.0", + "keywords": [ + "symfony-ux" + ], "description": "Synolia Sylius Akeneo PIM Plugin", - "source": "src/main.js", + "type": "module", + "files": [ + "dist" + ], "repository": "git@bitbucket.org:synolia/sylius-akeneo-plugin.git", "license": "MIT", "private": true, "scripts": { - "build": "parcel build src/main.js src/js/form.js src/js/tooltip.js --dist-dir ../src/Resources/public --no-source-maps", - "dev": "parcel watch src/main.js src/js/form.js src/js/tooltip.js --dist-dir ../tests/Application/public/bundles/synoliasyliusakeneoplugin --no-hmr", "eslint": "eslint -c .eslintrc ./", "fix-eslint": "eslint -c .eslintrc ./ --fix" }, @@ -17,18 +21,30 @@ "last 2 versions", "not ie <= 8" ], + "symfony": { + "controllers": { + "form": { + "main": "controllers/form_controller.js", + "enabled": true, + "webpackMode": "lazy", + "fetch": "lazy" + } + } + }, + "peerDependencies": { + "@hotwired/stimulus": "^3.0.0" + }, "devDependencies": { "@babel/core": "^7.9.0", "@babel/preset-env": "^7.9.5", - "@parcel/transformer-sass": "^2.5.0", + "@hotwired/stimulus": "^3.0.0", "babel-eslint": "^10.1.0", "eslint": "^6.8.0", "eslint-config-prettier": "^6.10.1", "eslint-plugin-prettier": "^3.1.3", - "node-forge": "^1.3", - "parcel": "^2.5.0", - "prettier": "2.0.4", - "sass": "^1.26.3" + "prettier": "2.0.4" }, - "dependencies": {} + "dependencies": { + "jquery": "^3.5.1" + } } diff --git a/assets/src/js/form.js b/assets/src/js/form.js deleted file mode 100644 index 0f543b7a..00000000 --- a/assets/src/js/form.js +++ /dev/null @@ -1,96 +0,0 @@ -const Form = { - /** - * {jQuery} - */ - trigger: $( - "#switchForm, #switchForm + label, #product_configuration_importMediaFiles, #product_configuration_importMediaFiles + label" - ), - /** - * {Object} - */ - options: { - locale: { - trigger: "#product_filter_rule_simple_completeness_type", - selector: "#product_filter_rule_simple_locales", - values: [ - "GREATER THAN ON ALL LOCALES", - "GREATER OR EQUALS THAN ON ALL LOCALES", - "LOWER THAN ON ALL LOCALES", - "LOWER OR EQUALS THAN ON ALL LOCALES", - ], - }, - before: { - trigger: "#product_filter_rule_simple_updated_mode", - selector: "#product_filter_rule_simple_updated_before", - values: ["BETWEEN", "<"], - }, - after: { - trigger: "#product_filter_rule_simple_updated_mode", - selector: "#product_filter_rule_simple_updated_after", - values: ["BETWEEN", ">"], - }, - since: { - trigger: "#product_filter_rule_simple_updated_mode", - selector: "#product_filter_rule_simple_updated", - values: ["SINCE LAST N DAYS"], - }, - }, - /** - * @return {void} - */ - load() { - this.toggleForms(); - this.toggleFields(); - }, - /** - * @return {void} - */ - toggleForms() { - this.trigger.removeClass("hidden"); - if (this.trigger.length) { - this.trigger.on("click", function () { - $(this).is(":checked") - ? $(".switch > span").addClass("muted") - : $(".switch > span").removeClass("muted"); - $(".togglable").toggle(); - }); - } - }, - /** - * @return {void} - */ - toggleFields() { - const self = this; - const toHide = [ - this.options.locale.selector, - this.options.before.selector, - this.options.after.selector, - this.options.since.selector, - ]; - - for (let k in this.options) { - if (this.options[k].values.includes($(this.options[k].trigger).val())) { - let index = toHide.indexOf(this.options[k].selector); - if (index !== -1) { - toHide.splice(index, 1); - } - } - - if ($(this.options[k].trigger).length) { - $(this.options[k].trigger).on("change", function () { - self.options[k].values.includes($(this).val()) - ? $(self.options[k].selector).parent(".field").removeClass("hidden") - : $(self.options[k].selector).parent(".field").addClass("hidden"); - }); - } - } - - if ($(`${toHide.join()}`).length) { - $(`${toHide.join()}`).parent(".field").addClass("hidden"); - } - }, -}; - -$(document).ready(() => { - Form.load(); -}); diff --git a/assets/src/js/tooltip.js b/assets/src/js/tooltip.js deleted file mode 100644 index 60c6ed55..00000000 --- a/assets/src/js/tooltip.js +++ /dev/null @@ -1,33 +0,0 @@ -const Tooltip = { - /** - * {Array} - */ - selectors: [ - "#api_configuration_username", - "#api_configuration_paginationSize", - "#product_filter_rule_simple_completeness_type", - "#product_filter_rule_simple_completeness_value", - "#product_filter_rule_simple_status", - "#product_filter_rule_simple_families", - ], - /** - * @return {void} - */ - load() { - this.toggleTooltip(); - }, - /** - * @return {void} - */ - toggleTooltip() { - if ($(this.selectors.join()).length) { - $(this.selectors.join()).on("click", function () { - $(this).parent(".field").siblings(".pointing").show(); - }); - } - }, -}; - -$(document).ready(() => { - Tooltip.load(); -}); diff --git a/assets/src/main.js b/assets/src/main.js deleted file mode 100644 index fecbc1e8..00000000 --- a/assets/src/main.js +++ /dev/null @@ -1 +0,0 @@ -import "./scss/main.scss"; diff --git a/assets/src/scss/common/_forms.scss b/assets/src/scss/common/_forms.scss deleted file mode 100644 index efccb9fc..00000000 --- a/assets/src/scss/common/_forms.scss +++ /dev/null @@ -1,52 +0,0 @@ -.ui.toggle.switch { - display: inline-flex; - - input { - width: 100%; - } - - & > span { - cursor: pointer; - padding-top: .15em; - padding-right: 1rem; - } -} - -#switchForm + label, -#product_configuration_importMediaFiles + label { - @extend .muted; - cursor: pointer; -} - -form .ui.pointing.below.label:before { - left: 20px; -} - -[id*=Mappings] { - margin: 0 0 1rem; - - @media screen and (min-width: 60em) { - [data-form-collection=item] { - display: flex; - justify-content: flex-start; - - & > div { - display: flex; - margin: 0 0 1rem; - - &.field { - display: block; - } - - & > .field { - margin-right: 1rem; - - & input, - & select { - min-width: 320px; - } - } - } - } - } -} diff --git a/assets/src/scss/common/_global.scss b/assets/src/scss/common/_global.scss deleted file mode 100644 index e8de5028..00000000 --- a/assets/src/scss/common/_global.scss +++ /dev/null @@ -1,12 +0,0 @@ -.muted { - color: rgba(0, 0, 0, .4); -} - -.hidden { - display: none; - visibility: hidden; -} - -.ui.header { - display: table; -} diff --git a/assets/src/scss/main.scss b/assets/src/scss/main.scss deleted file mode 100644 index 6608c0a8..00000000 --- a/assets/src/scss/main.scss +++ /dev/null @@ -1,2 +0,0 @@ -@import "common/_global"; -@import "common/_forms"; diff --git a/assets/yarn.lock b/assets/yarn.lock index cc770ac0..8daae060 100644 --- a/assets/yarn.lock +++ b/assets/yarn.lock @@ -10,89 +10,89 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.22.13", "@babel/code-frame@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" - integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== dependencies: - "@babel/helper-validator-identifier" "^7.25.9" + "@babel/helper-validator-identifier" "^7.27.1" js-tokens "^4.0.0" - picocolors "^1.0.0" + picocolors "^1.1.1" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.5", "@babel/compat-data@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.8.tgz#821c1d35641c355284d4a870b8a4a7b0c141e367" - integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ== +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.2.tgz#4183f9e642fd84e74e3eea7ffa93a412e3b102c9" + integrity sha512-TUtMJYRPyUb/9aU8f3K0mjmjf6M9N5Woshn2CS6nqJSeJtTtQcpLUXjGt9vbF8ZGff0El99sWkLgzwW3VXnxZQ== "@babel/core@^7.9.0": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.10.tgz#5c876f83c8c4dcb233ee4b670c0606f2ac3000f9" - integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ== + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6" + integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ== dependencies: "@ampproject/remapping" "^2.2.0" - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helpers" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/traverse" "^7.26.10" - "@babel/types" "^7.26.10" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helpers" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.23.0", "@babel/generator@^7.26.10": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.10.tgz#a60d9de49caca16744e6340c3658dfef6138c3f7" - integrity sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang== +"@babel/generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230" + integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w== dependencies: - "@babel/parser" "^7.26.10" - "@babel/types" "^7.26.10" + "@babel/parser" "^7.27.1" + "@babel/types" "^7.27.1" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/helper-annotate-as-pure@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" - integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== +"@babel/helper-annotate-as-pure@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d" + integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow== dependencies: - "@babel/types" "^7.25.9" + "@babel/types" "^7.27.1" -"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz#75d92bb8d8d51301c0d49e52a65c9a7fe94514d8" - integrity sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA== +"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== dependencies: - "@babel/compat-data" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" browserslist "^4.24.0" lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.25.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz#d6f83e3039547fbb39967e78043cd3c8b7820c71" - integrity sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg== - dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/helper-replace-supers" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/traverse" "^7.26.9" +"@babel/helper-create-class-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz#5169756ecbe1d95f7866b90bb555b022595302a0" - integrity sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong== +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" regexpu-core "^6.2.0" semver "^6.3.1" @@ -107,199 +107,165 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" -"@babel/helper-environment-visitor@^7.22.20": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" - integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-function-name@^7.23.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2" - integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA== - dependencies: - "@babel/template" "^7.24.7" - "@babel/types" "^7.24.7" - -"@babel/helper-hoist-variables@^7.22.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz#b4ede1cde2fd89436397f30dc9376ee06b0f25ee" - integrity sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ== - dependencies: - "@babel/types" "^7.24.7" - -"@babel/helper-member-expression-to-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" - integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-imports@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" - integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== - dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz#8ce54ec9d592695e58d84cd884b7b5c6a2fdeeae" - integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw== - dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-optimise-call-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" - integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== - dependencies: - "@babel/types" "^7.25.9" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz#18580d00c9934117ad719392c4f6585c9333cc35" - integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg== +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f" + integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-remap-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" - integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-wrap-function" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz#6cb04e82ae291dae8e72335dfe438b0725f14c8d" - integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg== + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== dependencies: - "@babel/helper-member-expression-to-functions" "^7.25.9" - "@babel/helper-optimise-call-expression" "^7.25.9" - "@babel/traverse" "^7.26.5" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" - integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== dependencies: - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz#83949436890e07fa3d6873c61a96e3bbf692d856" - integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA== +"@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== dependencies: - "@babel/types" "^7.24.7" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" -"@babel/helper-string-parser@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" - integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== -"@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" - integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== -"@babel/helper-validator-option@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" - integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== +"@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== -"@babel/helper-wrap-function@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" - integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== dependencies: - "@babel/template" "^7.25.9" - "@babel/traverse" "^7.25.9" - "@babel/types" "^7.25.9" - -"@babel/helpers@^7.26.10": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.26.10.tgz#6baea3cd62ec2d0c1068778d63cb1314f6637384" - integrity sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g== - dependencies: - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" - -"@babel/parser@^7.23.0", "@babel/parser@^7.26.10", "@babel/parser@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.10.tgz#e9bdb82f14b97df6569b0b038edd436839c57749" - integrity sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA== + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4" + integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ== dependencies: - "@babel/types" "^7.26.10" - -"@babel/parser@^7.7.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.5.tgz#4cd2f346261061b2518873ffecdf1612cb032829" - integrity sha512-TM8C+xtH/9n1qzX+JNHi7AN2zHMTiPUtspO0ZdHflW8KaskkALhMmuMHb4bCmNdv9VAPzJX3/bXqkVLnAvsPfg== - -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" - integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/parser@^7.27.1", "@babel/parser@^7.27.2", "@babel/parser@^7.7.0": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.2.tgz#577518bedb17a2ce4212afd052e01f7df0941127" + integrity sha512-QYLs8299NA7WM/bZAdp+CviYYkVoYXlDW2rzliy3chxd1PQjej7JORuMJDJXJUb9g0TT+B99EwaVLKmX+sPXWw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" - -"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" - integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== + "@babel/types" "^7.27.1" + +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.27.1.tgz#61dd8a8e61f7eb568268d1b5f129da3eee364bf9" + integrity sha512-QPG3C9cCVRQLxAVwmefEmwdTanECuUBMQZ/ym5kiw3XKCGA7qkuQLcjWWHcrD/GKbn/WmJwaezfuuAOcyKlRPA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" - integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== - dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" - integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.27.1.tgz#43f70a6d7efd52370eefbdf55ae03d91b293856d" + integrity sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" - integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.27.1.tgz#bb1c25af34d75115ce229a1de7fa44bf8f955670" + integrity sha512-6BpaYGDavZqkI6yT+KSPdpZFfpnd68UKXbcjI9pJ13pvHhPrCKWOOLp+ysvMeA+DxnhuPpgIaRpxRxo5A9t5jw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" "@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2": version "7.21.0-placeholder-for-preset-env.2" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz#7844f9289546efa9febac2de4cfe358a050bd703" integrity sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w== -"@babel/plugin-syntax-import-assertions@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz#620412405058efa56e4a564903b79355020f445f" - integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg== +"@babel/plugin-syntax-import-assertions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-syntax-import-attributes@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz#3b1412847699eea739b4f2602c74ce36f6b0b0f7" - integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A== +"@babel/plugin-syntax-import-attributes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" @@ -309,461 +275,461 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" - integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== +"@babel/plugin-transform-arrow-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-async-generator-functions@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz#5e3991135e3b9c6eaaf5eff56d1ae5a11df45ff8" - integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg== +"@babel/plugin-transform-async-generator-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.27.1.tgz#ca433df983d68e1375398e7ca71bf2a4f6fd89d7" + integrity sha512-eST9RrwlpaoJBDHShc+DS2SG4ATTi2MYNb4OxYkf3n+7eb49LWpnS+HSpVfW4x927qQwgk8A2hGNVaajAEw0EA== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-remap-async-to-generator" "^7.25.9" - "@babel/traverse" "^7.26.8" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-async-to-generator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" - integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== +"@babel/plugin-transform-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== dependencies: - "@babel/helper-module-imports" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" -"@babel/plugin-transform-block-scoped-functions@^7.26.5": - version "7.26.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz#3dc4405d31ad1cbe45293aa57205a6e3b009d53e" - integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ== +"@babel/plugin-transform-block-scoped-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-block-scoping@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" - integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== +"@babel/plugin-transform-block-scoping@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.1.tgz#bc0dbe8ac6de5602981ba58ef68c6df8ef9bfbb3" + integrity sha512-QEcFlMl9nGTgh1rn2nIeU5bkfb9BAjaQcWbiP4LvKxUot52ABcTkpcyJ7f2Q2U2RuQ84BNLgts3jRme2dTx6Fw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" - integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== +"@babel/plugin-transform-class-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz#dd40a6a370dfd49d32362ae206ddaf2bb082a925" + integrity sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-class-static-block@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz#6c8da219f4eb15cae9834ec4348ff8e9e09664a0" - integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ== +"@babel/plugin-transform-class-static-block@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.27.1.tgz#7e920d5625b25bbccd3061aefbcc05805ed56ce4" + integrity sha512-s734HmYU78MVzZ++joYM+NkJusItbdRcbm+AGRgJCt3iA+yux0QpD9cBVdz3tKyrjVYWRl7j0mHSmv4lhV0aoA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-classes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" - integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== +"@babel/plugin-transform-classes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz#03bb04bea2c7b2f711f0db7304a8da46a85cced4" + integrity sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.27.1" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" - integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== +"@babel/plugin-transform-computed-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/template" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" -"@babel/plugin-transform-destructuring@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" - integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== +"@babel/plugin-transform-destructuring@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.1.tgz#d5916ef7089cb254df0418ae524533c1b72ba656" + integrity sha512-ttDCqhfvpE9emVkXbPD8vyxxh4TWYACVybGkDj+oReOGwnp066ITEivDlLwe0b1R0+evJ13IXQuLNB5w1fhC5Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dotall-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" - integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== +"@babel/plugin-transform-dotall-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-keys@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" - integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== +"@babel/plugin-transform-duplicate-keys@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" - integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz#5043854ca620a94149372e69030ff8cb6a9eb0ec" + integrity sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-dynamic-import@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" - integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== +"@babel/plugin-transform-dynamic-import@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.27.1.tgz#4c78f35552ac0e06aa1f6e3c573d67695e8af5a4" + integrity sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-exponentiation-operator@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz#e29f01b6de302c7c2c794277a48f04a9ca7f03bc" - integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ== +"@babel/plugin-transform-exponentiation-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-export-namespace-from@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" - integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== +"@babel/plugin-transform-export-namespace-from@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.27.1.tgz#71ca69d3471edd6daa711cf4dfc3400415df9c23" + integrity sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-for-of@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz#27231f79d5170ef33b5111f07fe5cafeb2c96a56" - integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg== +"@babel/plugin-transform-for-of@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-function-name@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" - integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== +"@babel/plugin-transform-function-name@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-json-strings@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" - integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== +"@babel/plugin-transform-json-strings@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz#a2e0ce6ef256376bd527f290da023983527a4f4c" + integrity sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" - integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== +"@babel/plugin-transform-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-logical-assignment-operators@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" - integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== +"@babel/plugin-transform-logical-assignment-operators@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.27.1.tgz#890cb20e0270e0e5bebe3f025b434841c32d5baa" + integrity sha512-SJvDs5dXxiae4FbSL1aBJlG4wvl594N6YEVVn9e3JGulwioy6z3oPjx/sQBO3Y4NwUu5HNix6KJ3wBZoewcdbw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-member-expression-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" - integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== +"@babel/plugin-transform-member-expression-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-amd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" - integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== +"@babel/plugin-transform-modules-amd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-commonjs@^7.26.3": - version "7.26.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz#8f011d44b20d02c3de44d8850d971d8497f981fb" - integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ== +"@babel/plugin-transform-modules-commonjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== dependencies: - "@babel/helper-module-transforms" "^7.26.0" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-modules-systemjs@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" - integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== +"@babel/plugin-transform-modules-systemjs@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - "@babel/traverse" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" -"@babel/plugin-transform-modules-umd@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" - integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== +"@babel/plugin-transform-modules-umd@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== dependencies: - "@babel/helper-module-transforms" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" - integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== +"@babel/plugin-transform-named-capturing-groups-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-new-target@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" - integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== +"@babel/plugin-transform-new-target@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6": - version "7.26.6" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz#fbf6b3c92cb509e7b319ee46e3da89c5bedd31fe" - integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz#4f9d3153bf6782d73dd42785a9d22d03197bc91d" + integrity sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-numeric-separator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" - integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== +"@babel/plugin-transform-numeric-separator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz#614e0b15cc800e5997dadd9bd6ea524ed6c819c6" + integrity sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-object-rest-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" - integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== +"@babel/plugin-transform-object-rest-spread@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.2.tgz#67f9ab822347aa2bcee91e8996763da79bdea973" + integrity sha512-AIUHD7xJ1mCrj3uPozvtngY3s0xpv7Nu7DoUSnzNY6Xam1Cy4rUznR//pvMHOhQ4AvbCexhbqXCtpxGHOGOO6g== dependencies: - "@babel/helper-compilation-targets" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.1" -"@babel/plugin-transform-object-super@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" - integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== +"@babel/plugin-transform-object-super@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" -"@babel/plugin-transform-optional-catch-binding@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" - integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== +"@babel/plugin-transform-optional-catch-binding@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz#84c7341ebde35ccd36b137e9e45866825072a30c" + integrity sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-optional-chaining@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" - integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-parameters@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" - integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== +"@babel/plugin-transform-parameters@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz#80334b54b9b1ac5244155a0c8304a187a618d5a7" + integrity sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-methods@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" - integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== +"@babel/plugin-transform-private-methods@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz#fdacbab1c5ed81ec70dfdbb8b213d65da148b6af" + integrity sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA== dependencies: - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-private-property-in-object@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" - integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== +"@babel/plugin-transform-private-property-in-object@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz#4dbbef283b5b2f01a21e81e299f76e35f900fb11" + integrity sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ== dependencies: - "@babel/helper-annotate-as-pure" "^7.25.9" - "@babel/helper-create-class-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-create-class-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-property-literals@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" - integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== +"@babel/plugin-transform-property-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regenerator@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" - integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== +"@babel/plugin-transform-regenerator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.1.tgz#0a471df9213416e44cd66bf67176b66f65768401" + integrity sha512-B19lbbL7PMrKr52BNPjCqg1IyNUIjTcxKj8uX9zHO+PmWN93s19NDr/f69mIkEp2x9nmDJ08a7lgHaTTzvW7mw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - regenerator-transform "^0.15.2" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-regexp-modifiers@^7.26.0": - version "7.26.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz#2f5837a5b5cd3842a919d8147e9903cc7455b850" - integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw== +"@babel/plugin-transform-regexp-modifiers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz#df9ba5577c974e3f1449888b70b76169998a6d09" + integrity sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-reserved-words@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" - integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== +"@babel/plugin-transform-reserved-words@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-shorthand-properties@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" - integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== +"@babel/plugin-transform-shorthand-properties@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-spread@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" - integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== +"@babel/plugin-transform-spread@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" - "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" -"@babel/plugin-transform-sticky-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" - integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== +"@babel/plugin-transform-sticky-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-template-literals@^7.26.8": - version "7.26.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz#966b15d153a991172a540a69ad5e1845ced990b5" - integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q== +"@babel/plugin-transform-template-literals@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-typeof-symbol@^7.26.7": - version "7.26.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.26.7.tgz#d0e33acd9223744c1e857dbd6fa17bd0a3786937" - integrity sha512-jfoTXXZTgGg36BmhqT3cAYK5qkmqvJpvNrPhaK/52Vgjhw4Rq29s9UqpWWV0D6yuRmgiFH/BUVlkl96zJWqnaw== +"@babel/plugin-transform-typeof-symbol@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== dependencies: - "@babel/helper-plugin-utils" "^7.26.5" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-escapes@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" - integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== +"@babel/plugin-transform-unicode-escapes@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== dependencies: - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-property-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" - integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== +"@babel/plugin-transform-unicode-property-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz#bdfe2d3170c78c5691a3c3be934c8c0087525956" + integrity sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" - integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== +"@babel/plugin-transform-unicode-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" -"@babel/plugin-transform-unicode-sets-regex@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" - integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== +"@babel/plugin-transform-unicode-sets-regex@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz#6ab706d10f801b5c72da8bb2548561fa04193cd1" + integrity sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.25.9" - "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" "@babel/preset-env@^7.9.5": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.26.9.tgz#2ec64e903d0efe743699f77a10bdf7955c2123c3" - integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ== - dependencies: - "@babel/compat-data" "^7.26.8" - "@babel/helper-compilation-targets" "^7.26.5" - "@babel/helper-plugin-utils" "^7.26.5" - "@babel/helper-validator-option" "^7.25.9" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" - "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.27.2.tgz#106e6bfad92b591b1f6f76fd4cf13b7725a7bf9a" + integrity sha512-Ma4zSuYSlGNRlCLO+EAzLnCmJK2vdstgv+n7aUP+/IKZrOfWHOJVdSJtuub8RzHTj3ahD37k5OKJWvzf16TQyQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-option" "^7.27.1" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.27.1" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.27.1" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.27.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.27.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.27.1" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-import-assertions" "^7.26.0" - "@babel/plugin-syntax-import-attributes" "^7.26.0" + "@babel/plugin-syntax-import-assertions" "^7.27.1" + "@babel/plugin-syntax-import-attributes" "^7.27.1" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.25.9" - "@babel/plugin-transform-async-generator-functions" "^7.26.8" - "@babel/plugin-transform-async-to-generator" "^7.25.9" - "@babel/plugin-transform-block-scoped-functions" "^7.26.5" - "@babel/plugin-transform-block-scoping" "^7.25.9" - "@babel/plugin-transform-class-properties" "^7.25.9" - "@babel/plugin-transform-class-static-block" "^7.26.0" - "@babel/plugin-transform-classes" "^7.25.9" - "@babel/plugin-transform-computed-properties" "^7.25.9" - "@babel/plugin-transform-destructuring" "^7.25.9" - "@babel/plugin-transform-dotall-regex" "^7.25.9" - "@babel/plugin-transform-duplicate-keys" "^7.25.9" - "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-dynamic-import" "^7.25.9" - "@babel/plugin-transform-exponentiation-operator" "^7.26.3" - "@babel/plugin-transform-export-namespace-from" "^7.25.9" - "@babel/plugin-transform-for-of" "^7.26.9" - "@babel/plugin-transform-function-name" "^7.25.9" - "@babel/plugin-transform-json-strings" "^7.25.9" - "@babel/plugin-transform-literals" "^7.25.9" - "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" - "@babel/plugin-transform-member-expression-literals" "^7.25.9" - "@babel/plugin-transform-modules-amd" "^7.25.9" - "@babel/plugin-transform-modules-commonjs" "^7.26.3" - "@babel/plugin-transform-modules-systemjs" "^7.25.9" - "@babel/plugin-transform-modules-umd" "^7.25.9" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" - "@babel/plugin-transform-new-target" "^7.25.9" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6" - "@babel/plugin-transform-numeric-separator" "^7.25.9" - "@babel/plugin-transform-object-rest-spread" "^7.25.9" - "@babel/plugin-transform-object-super" "^7.25.9" - "@babel/plugin-transform-optional-catch-binding" "^7.25.9" - "@babel/plugin-transform-optional-chaining" "^7.25.9" - "@babel/plugin-transform-parameters" "^7.25.9" - "@babel/plugin-transform-private-methods" "^7.25.9" - "@babel/plugin-transform-private-property-in-object" "^7.25.9" - "@babel/plugin-transform-property-literals" "^7.25.9" - "@babel/plugin-transform-regenerator" "^7.25.9" - "@babel/plugin-transform-regexp-modifiers" "^7.26.0" - "@babel/plugin-transform-reserved-words" "^7.25.9" - "@babel/plugin-transform-shorthand-properties" "^7.25.9" - "@babel/plugin-transform-spread" "^7.25.9" - "@babel/plugin-transform-sticky-regex" "^7.25.9" - "@babel/plugin-transform-template-literals" "^7.26.8" - "@babel/plugin-transform-typeof-symbol" "^7.26.7" - "@babel/plugin-transform-unicode-escapes" "^7.25.9" - "@babel/plugin-transform-unicode-property-regex" "^7.25.9" - "@babel/plugin-transform-unicode-regex" "^7.25.9" - "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" + "@babel/plugin-transform-arrow-functions" "^7.27.1" + "@babel/plugin-transform-async-generator-functions" "^7.27.1" + "@babel/plugin-transform-async-to-generator" "^7.27.1" + "@babel/plugin-transform-block-scoped-functions" "^7.27.1" + "@babel/plugin-transform-block-scoping" "^7.27.1" + "@babel/plugin-transform-class-properties" "^7.27.1" + "@babel/plugin-transform-class-static-block" "^7.27.1" + "@babel/plugin-transform-classes" "^7.27.1" + "@babel/plugin-transform-computed-properties" "^7.27.1" + "@babel/plugin-transform-destructuring" "^7.27.1" + "@babel/plugin-transform-dotall-regex" "^7.27.1" + "@babel/plugin-transform-duplicate-keys" "^7.27.1" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-dynamic-import" "^7.27.1" + "@babel/plugin-transform-exponentiation-operator" "^7.27.1" + "@babel/plugin-transform-export-namespace-from" "^7.27.1" + "@babel/plugin-transform-for-of" "^7.27.1" + "@babel/plugin-transform-function-name" "^7.27.1" + "@babel/plugin-transform-json-strings" "^7.27.1" + "@babel/plugin-transform-literals" "^7.27.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.27.1" + "@babel/plugin-transform-member-expression-literals" "^7.27.1" + "@babel/plugin-transform-modules-amd" "^7.27.1" + "@babel/plugin-transform-modules-commonjs" "^7.27.1" + "@babel/plugin-transform-modules-systemjs" "^7.27.1" + "@babel/plugin-transform-modules-umd" "^7.27.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.27.1" + "@babel/plugin-transform-new-target" "^7.27.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.27.1" + "@babel/plugin-transform-numeric-separator" "^7.27.1" + "@babel/plugin-transform-object-rest-spread" "^7.27.2" + "@babel/plugin-transform-object-super" "^7.27.1" + "@babel/plugin-transform-optional-catch-binding" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + "@babel/plugin-transform-parameters" "^7.27.1" + "@babel/plugin-transform-private-methods" "^7.27.1" + "@babel/plugin-transform-private-property-in-object" "^7.27.1" + "@babel/plugin-transform-property-literals" "^7.27.1" + "@babel/plugin-transform-regenerator" "^7.27.1" + "@babel/plugin-transform-regexp-modifiers" "^7.27.1" + "@babel/plugin-transform-reserved-words" "^7.27.1" + "@babel/plugin-transform-shorthand-properties" "^7.27.1" + "@babel/plugin-transform-spread" "^7.27.1" + "@babel/plugin-transform-sticky-regex" "^7.27.1" + "@babel/plugin-transform-template-literals" "^7.27.1" + "@babel/plugin-transform-typeof-symbol" "^7.27.1" + "@babel/plugin-transform-unicode-escapes" "^7.27.1" + "@babel/plugin-transform-unicode-property-regex" "^7.27.1" + "@babel/plugin-transform-unicode-regex" "^7.27.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.27.1" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" babel-plugin-polyfill-corejs3 "^0.11.0" @@ -780,75 +746,40 @@ "@babel/types" "^7.4.4" esutils "^2.0.2" -"@babel/runtime@^7.8.4": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.26.10.tgz#a07b4d8fa27af131a633d7b3524db803eb4764c2" - integrity sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw== - dependencies: - regenerator-runtime "^0.14.0" - -"@babel/template@^7.24.7", "@babel/template@^7.25.9", "@babel/template@^7.26.9": - version "7.26.9" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.26.9.tgz#4577ad3ddf43d194528cff4e1fa6b232fa609bb2" - integrity sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/parser" "^7.26.9" - "@babel/types" "^7.26.9" - -"@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.26.9": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.10.tgz#43cca33d76005dbaa93024fae536cc1946a4c380" - integrity sha512-k8NuDrxr0WrPH5Aupqb2LCVURP/S0vBEn5mK6iH+GIYob66U5EtoZvcdudR2jQ4cmTwhEwW1DLB+Yyas9zjF6A== - dependencies: - "@babel/code-frame" "^7.26.2" - "@babel/generator" "^7.26.10" - "@babel/parser" "^7.26.10" - "@babel/template" "^7.26.9" - "@babel/types" "^7.26.10" +"@babel/template@^7.27.1": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.27.1", "@babel/traverse@^7.7.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291" + integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.27.1" + "@babel/parser" "^7.27.1" + "@babel/template" "^7.27.1" + "@babel/types" "^7.27.1" debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.7.0": - version "7.23.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.2.tgz#329c7a06735e144a506bdb2cad0268b7f46f4ad8" - integrity sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw== - dependencies: - "@babel/code-frame" "^7.22.13" - "@babel/generator" "^7.23.0" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.0" - "@babel/types" "^7.23.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.10", "@babel/types@^7.26.9", "@babel/types@^7.4.4": - version "7.26.10" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.10.tgz#396382f6335bd4feb65741eacfc808218f859259" - integrity sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ== - dependencies: - "@babel/helper-string-parser" "^7.25.9" - "@babel/helper-validator-identifier" "^7.25.9" - -"@babel/types@^7.7.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== +"@babel/types@^7.27.1", "@babel/types@^7.4.4", "@babel/types@^7.7.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.27.1.tgz#9defc53c16fc899e46941fc6901a9eea1c9d8560" + integrity sha512-+EzkxvLNfiUeKMgy/3luqfsCWFRXLb7U6wNQTk60tovuckwB15B191tJWvpp4HjiQWdJkCxO3Wbvc6jlk3Xb2Q== dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - to-fast-properties "^2.0.0" + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" -"@jridgewell/gen-mapping@^0.3.0": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" - integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== - dependencies: - "@jridgewell/set-array" "^1.0.1" - "@jridgewell/sourcemap-codec" "^1.4.10" - "@jridgewell/trace-mapping" "^0.3.9" +"@hotwired/stimulus@^3.0.0": + version "3.2.2" + resolved "https://registry.yarnpkg.com/@hotwired/stimulus/-/stimulus-3.2.2.tgz#071aab59c600fed95b97939e605ff261a4251608" + integrity sha512-eGeIqNOQpXoPAIP7tC1+1Yc1yl1xnwYqg+3mzqxyrbE5pg5YFBZcA6YoTiByJB6DKAEsiWtl6tjTJS4IYtbB7A== "@jridgewell/gen-mapping@^0.3.5": version "0.3.8" @@ -864,25 +795,17 @@ resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== -"@jridgewell/set-array@^1.0.1", "@jridgewell/set-array@^1.2.1": +"@jridgewell/set-array@^1.2.1": version "1.2.1" resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== -"@jridgewell/source-map@^0.3.2": - version "0.3.2" - resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb" - integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw== - dependencies: - "@jridgewell/gen-mapping" "^0.3.0" - "@jridgewell/trace-mapping" "^0.3.9" - "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": version "1.5.0" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== -"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.9": +"@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": version "0.3.25" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== @@ -890,789 +813,6 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@lezer/common@^0.15.0", "@lezer/common@^0.15.7": - version "0.15.12" - resolved "https://registry.yarnpkg.com/@lezer/common/-/common-0.15.12.tgz#2f21aec551dd5fd7d24eb069f90f54d5bc6ee5e9" - integrity sha512-edfwCxNLnzq5pBA/yaIhwJ3U3Kz8VAUOTRg0hhxaizaI1N+qxV7EXDv/kLCkLeq2RzSFvxexlaj5Mzfn2kY0Ig== - -"@lezer/lr@^0.15.4": - version "0.15.8" - resolved "https://registry.yarnpkg.com/@lezer/lr/-/lr-0.15.8.tgz#1564a911e62b0a0f75ca63794a6aa8c5dc63db21" - integrity sha512-bM6oE6VQZ6hIFxDNKk8bKPa14hqFrV07J/vHGOeiAbJReIaQXmkVb6xQu4MR+JBTLa5arGRyAAjJe1qaQt3Uvg== - dependencies: - "@lezer/common" "^0.15.0" - -"@mischnic/json-sourcemap@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@mischnic/json-sourcemap/-/json-sourcemap-0.1.0.tgz#38af657be4108140a548638267d02a2ea3336507" - integrity sha512-dQb3QnfNqmQNYA4nFSN/uLaByIic58gOXq4Y4XqLOWmOrw73KmJPt/HLyG0wvn1bnR6mBKs/Uwvkh+Hns1T0XA== - dependencies: - "@lezer/common" "^0.15.7" - "@lezer/lr" "^0.15.4" - json5 "^2.2.1" - -"@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.2.tgz#44d752c1a2dc113f15f781b7cc4f53a307e3fa38" - integrity sha512-9bfjwDxIDWmmOKusUcqdS4Rw+SETlp9Dy39Xui9BEGEk19dDwH0jhipwFzEff/pFg95NKymc6TOTbRKcWeRqyQ== - -"@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.2.tgz#f954f34355712212a8e06c465bc06c40852c6bb3" - integrity sha512-lwriRAHm1Yg4iDf23Oxm9n/t5Zpw1lVnxYU3HnJPTi2lJRkKTrps1KVgvL6m7WvmhYVt/FIsssWay+k45QHeuw== - -"@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.2.tgz#45c63037f045c2b15c44f80f0393fa24f9655367" - integrity sha512-FU20Bo66/f7He9Fp9sP2zaJ1Q8L9uLPZQDub/WlUip78JlPeMbVL8546HbZfcW9LNciEXc8d+tThSJjSC+tmsg== - -"@msgpackr-extract/msgpackr-extract-linux-arm@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.2.tgz#35707efeafe6d22b3f373caf9e8775e8920d1399" - integrity sha512-MOI9Dlfrpi2Cuc7i5dXdxPbFIgbDBGgKR5F2yWEa6FVEtSWncfVNKW5AKjImAQ6CZlBK9tympdsZJ2xThBiWWA== - -"@msgpackr-extract/msgpackr-extract-linux-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.2.tgz#091b1218b66c341f532611477ef89e83f25fae4f" - integrity sha512-gsWNDCklNy7Ajk0vBBf9jEx04RUxuDQfBse918Ww+Qb9HCPoGzS+XJTLe96iN3BVK7grnLiYghP/M4L8VsaHeA== - -"@msgpackr-extract/msgpackr-extract-win32-x64@3.0.2": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.2.tgz#0f164b726869f71da3c594171df5ebc1c4b0a407" - integrity sha512-O+6Gs8UeDbyFpbSh2CPEz/UOrrdWPTBYNblZK5CxxLisYt4kGX3Sc+czffFonyjiGSq3jWLwJS/CCJc7tBr4sQ== - -"@parcel/bundler-default@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/bundler-default/-/bundler-default-2.5.0.tgz#1f0b6d4893bb1a24f49fc7254a423134fb03741e" - integrity sha512-7CJzE17SirCXjcRgBcnqWO/5EOA1raq/3OIKtT4cxbjpDQGHZpjpEEZiMNRpEpdNMxDSlsG8mAkXTYGL2VVWRw== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/cache@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/cache/-/cache-2.5.0.tgz#957620b1b26bfd4f9bd7256ea25ef86e7d6f2816" - integrity sha512-3kOO3cZQv0FAKhrMHGLdb4Qtzpmy78Q6jPN3u8eCY4yqeDTnyQBZvWNHoyCm5WlmL8y6Q6REYMbETLxSH1ggAQ== - dependencies: - "@parcel/fs" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/utils" "2.5.0" - lmdb "2.2.4" - -"@parcel/codeframe@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/codeframe/-/codeframe-2.5.0.tgz#de73dcd69a36e9d0fed1f4361cabfd83df13244a" - integrity sha512-qafqL8Vu2kr932cCWESoDEEoAeKVi7/xdzTBuhzEJng1AfmRT0rCbt/P4ao3RjiDyozPSjXsHOqM6GDZcto4eQ== - dependencies: - chalk "^4.1.0" - -"@parcel/compressor-raw@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/compressor-raw/-/compressor-raw-2.5.0.tgz#8675d7474b84920e1e4682a5bbd9b417ebfc0bc5" - integrity sha512-I5Zs+2f1ue4sTPdfT8BNsLfTZl48sMWLk2Io3elUJjH/SS9kO7ut5ChkuJtt77ZS35m0OF+ZCt3ICTJdnDG8eA== - dependencies: - "@parcel/plugin" "2.5.0" - -"@parcel/config-default@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/config-default/-/config-default-2.5.0.tgz#31caa12f6d37f3ae1df68e639dc276039f927603" - integrity sha512-r30V61958SONvP9I8KV8s44ZOFq0H219VyFjPysraSabHjZ+KMaCTQOuqaDtUMa272sHUQkBcZxKYj5jYPJlZg== - dependencies: - "@parcel/bundler-default" "2.5.0" - "@parcel/compressor-raw" "2.5.0" - "@parcel/namer-default" "2.5.0" - "@parcel/optimizer-css" "2.5.0" - "@parcel/optimizer-htmlnano" "2.5.0" - "@parcel/optimizer-image" "2.5.0" - "@parcel/optimizer-svgo" "2.5.0" - "@parcel/optimizer-terser" "2.5.0" - "@parcel/packager-css" "2.5.0" - "@parcel/packager-html" "2.5.0" - "@parcel/packager-js" "2.5.0" - "@parcel/packager-raw" "2.5.0" - "@parcel/packager-svg" "2.5.0" - "@parcel/reporter-dev-server" "2.5.0" - "@parcel/resolver-default" "2.5.0" - "@parcel/runtime-browser-hmr" "2.5.0" - "@parcel/runtime-js" "2.5.0" - "@parcel/runtime-react-refresh" "2.5.0" - "@parcel/runtime-service-worker" "2.5.0" - "@parcel/transformer-babel" "2.5.0" - "@parcel/transformer-css" "2.5.0" - "@parcel/transformer-html" "2.5.0" - "@parcel/transformer-image" "2.5.0" - "@parcel/transformer-js" "2.5.0" - "@parcel/transformer-json" "2.5.0" - "@parcel/transformer-postcss" "2.5.0" - "@parcel/transformer-posthtml" "2.5.0" - "@parcel/transformer-raw" "2.5.0" - "@parcel/transformer-react-refresh-wrap" "2.5.0" - "@parcel/transformer-svg" "2.5.0" - -"@parcel/core@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/core/-/core-2.5.0.tgz#13f60be9124a6a3e33aff32715acfc5ebade9dd2" - integrity sha512-dygDmPsfAYJKTnUftcbEzjCik7AAaPbFvJW8ETYz8diyjkAG9y6hvCAZIrJE5pNOjFzg32en4v4UWv8Sqlzl9g== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - "@parcel/cache" "2.5.0" - "@parcel/diagnostic" "2.5.0" - "@parcel/events" "2.5.0" - "@parcel/fs" "2.5.0" - "@parcel/graph" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/package-manager" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - "@parcel/workers" "2.5.0" - abortcontroller-polyfill "^1.1.9" - base-x "^3.0.8" - browserslist "^4.6.6" - clone "^2.1.1" - dotenv "^7.0.0" - dotenv-expand "^5.1.0" - json5 "^2.2.0" - msgpackr "^1.5.4" - nullthrows "^1.1.1" - semver "^5.7.1" - -"@parcel/css-darwin-arm64@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-arm64/-/css-darwin-arm64-1.8.2.tgz#ac26b249e9f2ade2b674f51b8b1684901cf79449" - integrity sha512-p5etxX3kPCuEQcipjqH9yc5j0x5/Yc++uB4MvG/sFbRgL2gI2zUuRo9sIgqA21boOP8lE4bQgz1ovPD/W1hj+Q== - -"@parcel/css-darwin-x64@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-darwin-x64/-/css-darwin-x64-1.8.2.tgz#cf976783475e93f3feea09404bb946181b12bef6" - integrity sha512-c3xi5DXRZYec5db4KPTxp69eHbomOuasgZNiuPPOi80k7jlOwfzCFQs0h6/KwWvTcJrKEFsLl8BKJU/aX7mETw== - -"@parcel/css-linux-arm-gnueabihf@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm-gnueabihf/-/css-linux-arm-gnueabihf-1.8.2.tgz#e87ce228a81a5147e4d10c4b0c041beb4b28ad2a" - integrity sha512-+ih3+mMpwbwtOjr/XW5pP0frsV1PMN+Qz7jCAM84h8xX+8UE/1IR0UVi3EPa8wQiIlcVcEwszQ1MV2UHacvo/A== - -"@parcel/css-linux-arm64-gnu@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-gnu/-/css-linux-arm64-gnu-1.8.2.tgz#bedae0a7ff3f52003a6c4df0b20b65bced9dcc3a" - integrity sha512-jIoyXbjJ1trUHXtyJhi3hlF1ck6xM4CDyaY5N6eN+3+ovkdw6wxog9IiheYJ1jf9ellYevLvTF5kiYE9MiP04A== - -"@parcel/css-linux-arm64-musl@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-arm64-musl/-/css-linux-arm64-musl-1.8.2.tgz#be3b912c0127745dda70757e18d7e7628118076d" - integrity sha512-QVTc5a+HatoywIei3djKYmp3s5dbI2Q3QaYZf3gqhyjOkeC7bm6j5eeNzFO+wa5xtga5jdHkIuTRrJ/wCojKKw== - -"@parcel/css-linux-x64-gnu@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-gnu/-/css-linux-x64-gnu-1.8.2.tgz#b38a07f461fd45657676326ee50ee5b6abccfd2b" - integrity sha512-9r2tSfa6i3ZQ3a6C9XufJWuTv3LB7JYzxzEqsI35SSA8D/DrfAHMaIhqog5wSxKZRWmQxckh2wdT96eIIGHSGA== - -"@parcel/css-linux-x64-musl@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-linux-x64-musl/-/css-linux-x64-musl-1.8.2.tgz#e7ce666f76943bfb73998e0b3908c2636f239f99" - integrity sha512-5SetLWkxXRQ3NU6QwwbGf9tOmGW2m1cGt07Moybbe4RCXOY6R5wAYUtauZUp7pD/fJlE9mHge4jnNHKpVO9pvw== - -"@parcel/css-win32-x64-msvc@1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css-win32-x64-msvc/-/css-win32-x64-msvc-1.8.2.tgz#cbef99d007d19511c1d6bd0b0124d988f180d343" - integrity sha512-/EdW5Ejlnkvc/AYrAi/FmLNvM6a6eAx+A4Y7oW+8JSMvk6bYa2zmXi7XLU/QOQuH2VQa/3gIIMA+sYjPndvDpw== - -"@parcel/css@^1.8.1": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@parcel/css/-/css-1.8.2.tgz#98647159c8f1c7ce23675cd3c742dacbd55f73f5" - integrity sha512-3vTyKHy2LnZ3YJEut+UQPVIxsaY/mdGk7cDXtmvH4xR48Pd6rYzChHCMl4Ru2DUkCBpr0KCQRPZTdYcsJhUmIA== - dependencies: - detect-libc "^1.0.3" - optionalDependencies: - "@parcel/css-darwin-arm64" "1.8.2" - "@parcel/css-darwin-x64" "1.8.2" - "@parcel/css-linux-arm-gnueabihf" "1.8.2" - "@parcel/css-linux-arm64-gnu" "1.8.2" - "@parcel/css-linux-arm64-musl" "1.8.2" - "@parcel/css-linux-x64-gnu" "1.8.2" - "@parcel/css-linux-x64-musl" "1.8.2" - "@parcel/css-win32-x64-msvc" "1.8.2" - -"@parcel/diagnostic@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/diagnostic/-/diagnostic-2.5.0.tgz#8c6891924e04b625d50176aae141d24dc8dddf87" - integrity sha512-KiMGGRpEV7wl5gjcxBKcgX84a+cG+IEn94gwy5LK3lENR09nuKShqqgKGAmj/17CobJgw1QNP94/H4Md+oxIWg== - dependencies: - "@mischnic/json-sourcemap" "^0.1.0" - nullthrows "^1.1.1" - -"@parcel/events@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/events/-/events-2.5.0.tgz#5e108a01a5aa3075038d2a2081fde0432d2559e7" - integrity sha512-Gc2LPwL1H34Ony5MENbKZg7wvCscZ4x9y7Fu92sfbdWpLo3K13hVtsX3TMIIgYt3B7R7OmO8yR880U2T+JfVkQ== - -"@parcel/fs-search@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/fs-search/-/fs-search-2.5.0.tgz#d96b7c46c2326398e52c9c14cdd07559d598436d" - integrity sha512-uBONkz9ZCNSOqbPGWJY3MNl+pqBTfvzHH9+4UhzHEHPArvK2oD0+syYPVE60+zGrxybXTESYMCJp4bHvH6Z2hA== - dependencies: - detect-libc "^1.0.3" - -"@parcel/fs@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/fs/-/fs-2.5.0.tgz#2bcb6ccf43826f2bfca9e1ca644be3bf5252c400" - integrity sha512-YYr14BWtx/bJ+hu6PPQQ6G/3omOTWgVqEw+UFI3iQH3P6+e0LRXW/Ja1yAcJeepGcTwIP0opnXZBQOm8PBQ2SA== - dependencies: - "@parcel/fs-search" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - "@parcel/watcher" "^2.0.0" - "@parcel/workers" "2.5.0" - -"@parcel/graph@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/graph/-/graph-2.5.0.tgz#bd8898d555366a4b261766e22c8652ad869efaff" - integrity sha512-qa2VtG08dJyTaWrxYAkMIlkoDRSPoiqLDNxxHKplkcxAjXBUw0/AkWaz82VO5r1G6jfOj+nM30ajH9uygZYwbw== - dependencies: - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/hash@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/hash/-/hash-2.5.0.tgz#f2a05f7090f8f27ce8b53afd6272183763101ba7" - integrity sha512-47JL0XpB7UvIW6Ijf8vv+yVMt9dLvB/lRlBHFmAkmovisueVMVbYD7smxVZnCSehD8UH8BcymKbMzyL5dimgoQ== - dependencies: - detect-libc "^1.0.3" - xxhash-wasm "^0.4.2" - -"@parcel/logger@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/logger/-/logger-2.5.0.tgz#c618b780b80984d821c5bc53f27527fd540f4d0f" - integrity sha512-pT1L3ceH6trL1N3I3r2HawPjz/PCubOo/Kazu7IeXsMsKVjj1a6AeieZHzkNZIbhiGPtm/cHbBNLz2zTWDLeOA== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/events" "2.5.0" - -"@parcel/markdown-ansi@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/markdown-ansi/-/markdown-ansi-2.5.0.tgz#e0751d6c8fcd0aa4c8ee0a08d27e9d4d64705410" - integrity sha512-ixkNF3KWIqxMlfxTe9Gb2cp/uNmklQev8VEUxujMVxmUfGyQs4859zdJIQlIinabWYhArhsXATkVf3MzCUN6TQ== - dependencies: - chalk "^4.1.0" - -"@parcel/namer-default@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/namer-default/-/namer-default-2.5.0.tgz#1e1950a74aca825a753c9aa8e8c37dfb46ef7ef3" - integrity sha512-ahGQqHJzsWE5Qux8zXMAU+lyNBOl+ZpcOFzRGE2DWOsmAlytsHl7DBVCQvzUyNBFg1/HmIj+7D4efv2kjR7rTg== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/node-resolver-core@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/node-resolver-core/-/node-resolver-core-2.5.0.tgz#4aaf5c8eb57b56d1257ca02cae5b88be790be6bd" - integrity sha512-XQvpguiIwQcu75cscLDFOVhjsjuPzXbuMaaZ7XxxUEl0PscIgu/GfKYxTfTruN3cRl+CaQH6qBAMfjLaFng6lQ== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/optimizer-css@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-css/-/optimizer-css-2.5.0.tgz#4f64bd0aa29727802b29eaea31aedfbb15ead5e9" - integrity sha512-J00bLF+4SsnKc+YbYrNuBr44/zz3cg++CoXteXhH27PxP1rScGQx36Rui8WORgil5mlX2VYN79DuqJC7V3Ynbg== - dependencies: - "@parcel/css" "^1.8.1" - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - -"@parcel/optimizer-htmlnano@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-htmlnano/-/optimizer-htmlnano-2.5.0.tgz#ffd8b3ef16300f957209cf20e7908a81d6f5b4af" - integrity sha512-Fr0zPqgxoNaOVdROAjNGDWCts3+wByNQ82Mxhu8Tzc25A2cPjcr1H2sa/TE3hf79c92DxdKf2FaC1ZOgR5YPdg== - dependencies: - "@parcel/plugin" "2.5.0" - htmlnano "^2.0.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - svgo "^2.4.0" - -"@parcel/optimizer-image@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-image/-/optimizer-image-2.5.0.tgz#c80a463bf1dd82782a1f80504c8d660ec7917bc0" - integrity sha512-nbo2pdnAt21WLGjzTpsE8ZEL0xNoP7c3wBj9y70Pysmasg1SrRVCbfE8jTy+lHBQwq2yjC6lV/Usv+9lfA7S/w== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - "@parcel/workers" "2.5.0" - detect-libc "^1.0.3" - -"@parcel/optimizer-svgo@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-svgo/-/optimizer-svgo-2.5.0.tgz#b1c809aa2fbf9229dc3cb62bab399b4576fd8b35" - integrity sha512-pgZqwU0RLc/wr4WcQY/W1GJmddnEANDEpz1mdppUOqBz1EfTQ7zh5NgUA3hV1i05Hbecp3mHSvXJPV0mhNOl5Q== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - svgo "^2.4.0" - -"@parcel/optimizer-terser@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/optimizer-terser/-/optimizer-terser-2.5.0.tgz#16b3320b34135edac69751ab2f3537a346133086" - integrity sha512-PZ3UHBGfjE49/Jloopsd38Hxg4qzsrdepWP53mCuVP7Aw605Y4QtYuB1ho3VV0oXfKQVq+uI7lVIBsuW4K6vqA== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - terser "^5.2.0" - -"@parcel/package-manager@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/package-manager/-/package-manager-2.5.0.tgz#9c82236e4e0fa158008b5bc5298def1085913b30" - integrity sha512-zTuF55/lITUjw9dUU/X0HiF++589xbPXw/zUiG9T6s8BQThLvrxAhYP89S719pw7cTqDimGkTxnIuK+a0djEkg== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/fs" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - "@parcel/workers" "2.5.0" - semver "^5.7.1" - -"@parcel/packager-css@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-css/-/packager-css-2.5.0.tgz#54e36cfee9b32a8be05db7e3a2c37b28f26fa0d1" - integrity sha512-c0mGBFdVSPhAxaX3+zN8KEIqOOUhkIPKbZex1pnGYfy03Qe2/Mb4nyt5DAGlw9gjka1UCHIN/wszLmKC8YyUeg== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/packager-html@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-html/-/packager-html-2.5.0.tgz#c390ca232753d6df73cdae7eff6f96ab6c973600" - integrity sha512-ZFGUPRMWKrm8kQHdkEJ5S22C05qpSymx+o+57EfuNjCrGyj3M59WyGYYXYJ175bFYZ/jp5yy+VxMh6fZefe+Pw== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - -"@parcel/packager-js@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-js/-/packager-js-2.5.0.tgz#3a696207587f57bf5e0c93b2e36db0758f896bea" - integrity sha512-aJAKOTgXdxO3V9O7+2DCVOtne128WwXmUAOVThnMRo7f3zMVSAR7Mxc9pEsuTzPfj8UBXgFBRfdJUSCgsMxiSw== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - globals "^13.2.0" - nullthrows "^1.1.1" - -"@parcel/packager-raw@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-raw/-/packager-raw-2.5.0.tgz#ce0103c26667c93e5c04eda92691363e93aecb1a" - integrity sha512-aHV0oogeiqxhxS1lsttw15EvG3DDWK3FV7+F+7hoaAy+xg89K56NTp6j43Jtw9iyU1/HnZRGBE2hF3C7N73oKw== - dependencies: - "@parcel/plugin" "2.5.0" - -"@parcel/packager-svg@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/packager-svg/-/packager-svg-2.5.0.tgz#c6c62cc534ca4107bb724d81dc872ed64faa304d" - integrity sha512-XSMFn30K/kpjcPpQqt88GmPJsNUSVL3RNeigXkIAcLpfO6Tb2eV4iOt4yVCagaDrRJ19alXut0TxjMm5bm41/g== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - posthtml "^0.16.4" - -"@parcel/plugin@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/plugin/-/plugin-2.5.0.tgz#ae24d9a709581483e0d494a9e09100f0e40956cf" - integrity sha512-obtb6/Gql6YFQ86bdv75A2Noabx8679reFZeyfKKf0L7Lppx4DFQetXwM9XVy7Gx6hJ1Ekm3UMuuIyVJk33YHQ== - dependencies: - "@parcel/types" "2.5.0" - -"@parcel/reporter-cli@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-cli/-/reporter-cli-2.5.0.tgz#f64ab15f5faef9c017ea67bf3378343684f267f3" - integrity sha512-miJt2YbRJBmYSVeoUWUj8YL85Pwj1CmGQB0/btqhulGLH/Fvkbv6T4sJ4gl4l5xIt9mJQsZ70pOWwa8BId3rWw== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - chalk "^4.1.0" - term-size "^2.2.1" - -"@parcel/reporter-dev-server@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/reporter-dev-server/-/reporter-dev-server-2.5.0.tgz#043daa2116358d8f806a89d4a7385fe9555a089f" - integrity sha512-wvxAiW42AxJ3B8jtvowJcP4/cTV8zY48SfKg61YKYu1yUO+TtyJIjHQzDW2XuT34cIGFY97Gr0i+AVu44RyUuQ== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - -"@parcel/resolver-default@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/resolver-default/-/resolver-default-2.5.0.tgz#b107c59b4f8bbb013091916f349f5fc58e5dfab9" - integrity sha512-39PkZpVr/+iYS11u+lA84vIsKm/yisltTVmUjlYsDnExiuV1c8OSbSdYZ3JMx+7CYPE0bWbosX2AGilIwIMWpQ== - dependencies: - "@parcel/node-resolver-core" "2.5.0" - "@parcel/plugin" "2.5.0" - -"@parcel/runtime-browser-hmr@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-browser-hmr/-/runtime-browser-hmr-2.5.0.tgz#5da8b803cc6bd8a0aac143521ea709f2d13a403f" - integrity sha512-oPAo8Zf06gXCpt41nyvK7kv2HH1RrHAGgOqttyjStwAFlm5MZKs7BgtJzO58LfJN8g3sMY0cNdG17fB/4f8q6Q== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - -"@parcel/runtime-js@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-js/-/runtime-js-2.5.0.tgz#270369beef008f72e2c0814022f573817a12dba1" - integrity sha512-gPC2PbNAiooULP71wF5twe4raekuXsR1Hw/ahITDoqsZdXHzG3CkoCjYL3CkmBGiKQgMMocCyN1E2oBzAH8Kyw== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/runtime-react-refresh@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-react-refresh/-/runtime-react-refresh-2.5.0.tgz#fc74342d77848ea61f364246df70673e83b5430f" - integrity sha512-+8RuDKFdFYIQTrXG4MRhG9XqkkYEHn0zxKyOJ/IkDDfSEhY0na+EyhrneFUwIvDX63gLPkxceXAg0gwBqXPK/Q== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - react-refresh "^0.9.0" - -"@parcel/runtime-service-worker@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/runtime-service-worker/-/runtime-service-worker-2.5.0.tgz#609ea02b27cae378f7d9f54820384f7e3494a749" - integrity sha512-STuDlU0fPXeWpAmbayY7o04F0eHy6FTOFeT5KQ0PTxtdEa3Ey8QInP/NVE52Yv0aVQtesWukGrNEFCERlkbFRw== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/source-map@^2.0.0": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@parcel/source-map/-/source-map-2.0.2.tgz#9aa0b00518cee31d5634de6e9c924a5539b142c1" - integrity sha512-NnUrPYLpYB6qyx2v6bcRPn/gVigmGG6M6xL8wIg/i0dP1GLkuY1nf+Hqdf63FzPTqqT7K3k6eE5yHPQVMO5jcA== - dependencies: - detect-libc "^1.0.3" - -"@parcel/transformer-babel@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-babel/-/transformer-babel-2.5.0.tgz#f7f7563a2be9e8bccf7ef48dc61ef8b7be1c0ff0" - integrity sha512-EFb866C9jCoBHIcebWF7goAcYj1wkObx0GDxshlazFtvym1RM27xSWWjRYyqb5+HNOxB3voaNvQOVjcD+DXjCA== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - browserslist "^4.6.6" - json5 "^2.2.0" - nullthrows "^1.1.1" - semver "^5.7.0" - -"@parcel/transformer-css@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-css/-/transformer-css-2.5.0.tgz#8cbe2bd7299a8ef7a965b315da488dcbba1c43d3" - integrity sha512-p8FOvKWWSbS6H8PbD9a0KZqyaKNpSD2BUTzSRYnNj3TBUv7/ZXaP6Om295XTQ/MPht1o7XTQzvfpF/7yEhr02Q== - dependencies: - "@parcel/css" "^1.8.1" - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - browserslist "^4.6.6" - nullthrows "^1.1.1" - -"@parcel/transformer-html@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-html/-/transformer-html-2.5.0.tgz#665fecbcb05cf1a4148e752ab99bfaeabfa31051" - integrity sha512-iEjNyAF0wQmY3DMw7FS+UzoOMng76UsSngh+WWA1E5lv5XyqrP8Mk2QLTJp1nWetUhSLhZr58LGmPYBTB4l9ZQ== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/plugin" "2.5.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-image@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-image/-/transformer-image-2.5.0.tgz#c0523ea88fb4b6ae18fc7c65b08a5ba6dcd23abd" - integrity sha512-vVEXTHZl8m/9yopgK0dWHLOQX2zOnghq6pZnWdWVG6fsvXZln7kP1YN5iwWDoADQYkiKzP+Ymn6UwP9pZpHFzA== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/workers" "2.5.0" - nullthrows "^1.1.1" - -"@parcel/transformer-js@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-js/-/transformer-js-2.5.0.tgz#268a6d34898d7c6515c5a64bae535d2c1a7f57a0" - integrity sha512-Cp8Ic+Au3OcskCRZszmo47z3bqcZ7rfPv2xZYXpXY2TzEc3IV0bKje57bZektoY8LW9LkYM9iBO/WhkVoT6LIg== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/utils" "2.5.0" - "@parcel/workers" "2.5.0" - "@swc/helpers" "^0.3.6" - browserslist "^4.6.6" - detect-libc "^1.0.3" - nullthrows "^1.1.1" - regenerator-runtime "^0.13.7" - semver "^5.7.1" - -"@parcel/transformer-json@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-json/-/transformer-json-2.5.0.tgz#9406b8f0cdd58e65f20fd381a75ece64d346858d" - integrity sha512-661sByA7TkR6Lmxt+hqV4h2SAt+7lgc58DzmUYArpEl1fQnMuQuaB0kQeHzi6fDD2+2G6o7EC+DuwBZKa479TA== - dependencies: - "@parcel/plugin" "2.5.0" - json5 "^2.2.0" - -"@parcel/transformer-postcss@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-postcss/-/transformer-postcss-2.5.0.tgz#bff3a36d5a1eb1af4b8c73b9fe5dc50804e449fa" - integrity sha512-IPNlWElekdQHMTBqhdwJNBCQomuYyo7xgNBdnTrt9VJ+R5ihy6n7ZJSWIAJXAH9VZxETTtunfrzRtgkmtjTeZQ== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - clone "^2.1.1" - nullthrows "^1.1.1" - postcss-value-parser "^4.2.0" - semver "^5.7.1" - -"@parcel/transformer-posthtml@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-posthtml/-/transformer-posthtml-2.5.0.tgz#d4c6558b0443ce94ec5ca823c265ebdf05f3af08" - integrity sha512-AZxg1XD8OXOS4bEGEmBBR+X9T9qoFdVsbVUg498zzejYSka1ZQHF7TgLI/+pUnE+ZVYNIp7/G0xXqsRVKMKmdQ== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/transformer-raw@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-raw/-/transformer-raw-2.5.0.tgz#5561945e2fd220ac38c0a21aad72175377d048bc" - integrity sha512-I3zjE1u9+Wj90Qqs1V2FTm6iC6SAyOVUthwVZkZey+qbQG/ok682Ez2XjLu7MyQCo9BJNwF/nfOa1hHr3MaJEQ== - dependencies: - "@parcel/plugin" "2.5.0" - -"@parcel/transformer-react-refresh-wrap@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-react-refresh-wrap/-/transformer-react-refresh-wrap-2.5.0.tgz#e1ef71218efb21a78677e8770fb6bcf753caf35c" - integrity sha512-VPqVBxhTN4OQwcjsdyxrv+smjAm4s6dbSWAplgPwdOITMv+a0tjhhJU37WnRC+xxTrbEqRcOt96JvGOkPb8i7g== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/utils" "2.5.0" - react-refresh "^0.9.0" - -"@parcel/transformer-sass@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-sass/-/transformer-sass-2.5.0.tgz#bc3f84b84a8c05946cc6981ef6b873cf30638541" - integrity sha512-tio+LcQvP2RUt2SqBPpxGvEJGeYyLjT87xKPuvYRmQ38h/FjG2j7WgvcHgii02YkZNyajCmMIoGwVYgovm5+bw== - dependencies: - "@parcel/plugin" "2.5.0" - "@parcel/source-map" "^2.0.0" - sass "^1.38.0" - -"@parcel/transformer-svg@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/transformer-svg/-/transformer-svg-2.5.0.tgz#78fd321e395923f720a886cb5b5c4fae7101c6b3" - integrity sha512-zCGJcrCpICFe0Q/dgjQZfW7sYFkbJEC7NGT4zEJnMo8Cm/kq8Qh6+2ApX6c+vv5Q0WZn5Ic+N0OvxIMkvgdC/w== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/plugin" "2.5.0" - nullthrows "^1.1.1" - posthtml "^0.16.5" - posthtml-parser "^0.10.1" - posthtml-render "^3.0.0" - semver "^5.7.1" - -"@parcel/types@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/types/-/types-2.5.0.tgz#e3818d4358f849ac2593605b98366b8e156ab533" - integrity sha512-bA0fhG6aXSGYEVo5Dt96x6lseUQHeVZVzgmiRdZsvb614Gvx22ItfaKhPmAVbM9vzbObZDHl9l9G2Ovw8Xve4g== - dependencies: - "@parcel/cache" "2.5.0" - "@parcel/diagnostic" "2.5.0" - "@parcel/fs" "2.5.0" - "@parcel/package-manager" "2.5.0" - "@parcel/source-map" "^2.0.0" - "@parcel/workers" "2.5.0" - utility-types "^3.10.0" - -"@parcel/utils@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/utils/-/utils-2.5.0.tgz#96d2c7e7226128cc84418ba41770b38aff23ca20" - integrity sha512-kaLGXtQuOOH55KZqXdYDvczhh3mk2eeTVqrrXuuihGjbLKYFlUW2tFDm+5r2s9nCPwTQxOO43ZEOCKSnia+e4w== - dependencies: - "@parcel/codeframe" "2.5.0" - "@parcel/diagnostic" "2.5.0" - "@parcel/hash" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/markdown-ansi" "2.5.0" - "@parcel/source-map" "^2.0.0" - chalk "^4.1.0" - -"@parcel/watcher-android-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz#507f836d7e2042f798c7d07ad19c3546f9848ac1" - integrity sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA== - -"@parcel/watcher-darwin-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz#3d26dce38de6590ef79c47ec2c55793c06ad4f67" - integrity sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw== - -"@parcel/watcher-darwin-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz#99f3af3869069ccf774e4ddfccf7e64fd2311ef8" - integrity sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg== - -"@parcel/watcher-freebsd-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz#14d6857741a9f51dfe51d5b08b7c8afdbc73ad9b" - integrity sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ== - -"@parcel/watcher-linux-arm-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz#43c3246d6892381db473bb4f663229ad20b609a1" - integrity sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA== - -"@parcel/watcher-linux-arm-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz#663750f7090bb6278d2210de643eb8a3f780d08e" - integrity sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q== - -"@parcel/watcher-linux-arm64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz#ba60e1f56977f7e47cd7e31ad65d15fdcbd07e30" - integrity sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w== - -"@parcel/watcher-linux-arm64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz#f7fbcdff2f04c526f96eac01f97419a6a99855d2" - integrity sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg== - -"@parcel/watcher-linux-x64-glibc@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz#4d2ea0f633eb1917d83d483392ce6181b6a92e4e" - integrity sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A== - -"@parcel/watcher-linux-x64-musl@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz#277b346b05db54f55657301dd77bdf99d63606ee" - integrity sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg== - -"@parcel/watcher-win32-arm64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz#7e9e02a26784d47503de1d10e8eab6cceb524243" - integrity sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw== - -"@parcel/watcher-win32-ia32@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz#2d0f94fa59a873cdc584bf7f6b1dc628ddf976e6" - integrity sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ== - -"@parcel/watcher-win32-x64@2.5.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz#ae52693259664ba6f2228fa61d7ee44b64ea0947" - integrity sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA== - -"@parcel/watcher@^2.0.0": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.0.5.tgz#f913a54e1601b0aac972803829b0eece48de215b" - integrity sha512-x0hUbjv891omnkcHD7ZOhiyyUqUUR6MNjq89JhEI3BxppeKWAm6NPQsqqRrAkCJBogdT/o/My21sXtTI9rJIsw== - dependencies: - node-addon-api "^3.2.1" - node-gyp-build "^4.3.0" - -"@parcel/watcher@^2.4.1": - version "2.5.1" - resolved "https://registry.yarnpkg.com/@parcel/watcher/-/watcher-2.5.1.tgz#342507a9cfaaf172479a882309def1e991fb1200" - integrity sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg== - dependencies: - detect-libc "^1.0.3" - is-glob "^4.0.3" - micromatch "^4.0.5" - node-addon-api "^7.0.0" - optionalDependencies: - "@parcel/watcher-android-arm64" "2.5.1" - "@parcel/watcher-darwin-arm64" "2.5.1" - "@parcel/watcher-darwin-x64" "2.5.1" - "@parcel/watcher-freebsd-x64" "2.5.1" - "@parcel/watcher-linux-arm-glibc" "2.5.1" - "@parcel/watcher-linux-arm-musl" "2.5.1" - "@parcel/watcher-linux-arm64-glibc" "2.5.1" - "@parcel/watcher-linux-arm64-musl" "2.5.1" - "@parcel/watcher-linux-x64-glibc" "2.5.1" - "@parcel/watcher-linux-x64-musl" "2.5.1" - "@parcel/watcher-win32-arm64" "2.5.1" - "@parcel/watcher-win32-ia32" "2.5.1" - "@parcel/watcher-win32-x64" "2.5.1" - -"@parcel/workers@2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@parcel/workers/-/workers-2.5.0.tgz#c7f1a4bcd491c7422212724dedbcf7d1e980146e" - integrity sha512-/Ow5OKJWs+9OzV3Jy4J++VnbNx0j3ls/M1CGVBLiBWyCada9DMtquYoBQ4Sk6Uam50BKkIFYetGOeXPNQyyMjg== - dependencies: - "@parcel/diagnostic" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/types" "2.5.0" - "@parcel/utils" "2.5.0" - chrome-trace-event "^1.0.2" - nullthrows "^1.1.1" - -"@swc/helpers@^0.3.6": - version "0.3.13" - resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.3.13.tgz#b9af856aaa3804fefdd1544632dde35b7b6ff978" - integrity sha512-A1wswJhnqaLRn8uYVQ8YiNTtY5i/JIPmV08EXXjjTresIkUVUEUaFv/wXVhGXfRNYMvHPkuoMR1Nb6NgpxGjNg== - dependencies: - tslib "^2.4.0" - -"@trysound/sax@0.2.0": - version "0.2.0" - resolved "https://registry.yarnpkg.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad" - integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== - -"@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== - -abortcontroller-polyfill@^1.1.9: - version "1.7.3" - resolved "https://registry.yarnpkg.com/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.3.tgz#1b5b487bd6436b5b764fd52a612509702c3144b5" - integrity sha512-zetDJxd89y3X99Kvo4qFx8GKlt6GsvN3UcRZHwU6iFA/0KiOmhkTVhe8oRoTBiTVPZu09x3vCra47+w8Yz1+2Q== - acorn-jsx@^5.2.0: version "5.3.2" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" @@ -1683,11 +823,6 @@ acorn@^7.1.1: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.5.0: - version "8.7.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" - integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== - ajv@^6.10.0, ajv@^6.10.2: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -1729,14 +864,6 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" -anymatch@~3.1.2: - version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" - integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - argparse@^1.0.7: version "1.0.10" resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" @@ -1790,23 +917,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base-x@^3.0.8: - version "3.0.8" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.8.tgz#1e1106c2537f0162e8b52474a557ebb09000018d" - integrity sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA== - dependencies: - safe-buffer "^5.0.1" - -binary-extensions@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" - integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== - -boolbase@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" - integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= - brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1815,48 +925,25 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -braces@^3.0.3, braces@~3.0.2: - version "3.0.3" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" - integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== - dependencies: - fill-range "^7.1.1" - browserslist@^4.24.0, browserslist@^4.24.4: - version "4.24.4" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.4.tgz#c6b2865a3f08bcb860a0e827389003b9fe686e4b" - integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A== + version "4.24.5" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.5.tgz#aa0f5b8560fe81fde84c6dcb38f759bafba0e11b" + integrity sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw== dependencies: - caniuse-lite "^1.0.30001688" - electron-to-chromium "^1.5.73" + caniuse-lite "^1.0.30001716" + electron-to-chromium "^1.5.149" node-releases "^2.0.19" - update-browserslist-db "^1.1.1" - -browserslist@^4.6.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + update-browserslist-db "^1.1.3" callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== -caniuse-lite@^1.0.30001219, caniuse-lite@^1.0.30001688: - version "1.0.30001706" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001706.tgz#902c3f896f4b2968031c3a546ab2ef8b465a2c8f" - integrity sha512-3ZczoTApMAZwPKYWmwVbQMFpXBDds3/0VciVoUwPUbldlYyVLmRVuRs/PcUZtHpbLRpzzDvrvnFuREsGt6lUug== +caniuse-lite@^1.0.30001716: + version "1.0.30001718" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz#dae13a9c80d517c30c6197515a96131c194d8f82" + integrity sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw== chalk@^2.1.0: version "2.4.2" @@ -1880,33 +967,6 @@ chardet@^0.7.0: resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== -"chokidar@>=3.0.0 <4.0.0": - version "3.6.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" - integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" - optionalDependencies: - fsevents "~2.3.2" - -chokidar@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" - integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== - dependencies: - readdirp "^4.0.1" - -chrome-trace-event@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac" - integrity sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg== - cli-cursor@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" @@ -1919,11 +979,6 @@ cli-width@^3.0.0: resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== -clone@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" - integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= - color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -1948,21 +1003,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.2: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" - integrity sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g== - -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - -commander@^7.0.0, commander@^7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" - integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== - concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -1974,23 +1014,12 @@ convert-source-map@^2.0.0: integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== core-js-compat@^3.40.0: - version "3.41.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.41.0.tgz#4cdfce95f39a8f27759b667cf693d96e5dda3d17" - integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A== + version "3.42.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.42.0.tgz#ce19c29706ee5806e26d3cb3c542d4cfc0ed51bb" + integrity sha512-bQasjMfyDGyaeWKBIu33lHh9qlSR0MFE/Nmc6nMjf/iU9b3rSMdAYz1Baxrv4lPdGUsTqZudHA4jIGSJy0SWZQ== dependencies: browserslist "^4.24.4" -cosmiconfig@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" - integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== - dependencies: - "@types/parse-json" "^4.0.0" - import-fresh "^3.2.1" - parse-json "^5.0.0" - path-type "^4.0.0" - yaml "^1.10.0" - cross-spawn@^6.0.5: version "6.0.6" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.6.tgz#30d0efa0712ddb7eb5a76e1e8721bffafa6b5d57" @@ -2002,41 +1031,10 @@ cross-spawn@^6.0.5: shebang-command "^1.2.0" which "^1.2.9" -css-select@^4.1.3: - version "4.3.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" - integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== - dependencies: - boolbase "^1.0.0" - css-what "^6.0.1" - domhandler "^4.3.1" - domutils "^2.8.0" - nth-check "^2.0.1" - -css-tree@^1.1.2, css-tree@^1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" - integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== - dependencies: - mdn-data "2.0.14" - source-map "^0.6.1" - -css-what@^6.0.1: - version "6.1.0" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" - integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== - -csso@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529" - integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA== - dependencies: - css-tree "^1.1.2" - debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" - integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== dependencies: ms "^2.1.3" @@ -2045,11 +1043,6 @@ deep-is@~0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== -detect-libc@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -2057,57 +1050,10 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" -dom-serializer@^1.0.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" - integrity sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.0" - entities "^2.0.0" - -domelementtype@^2.0.1, domelementtype@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" - integrity sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A== - -domhandler@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" - integrity sha512-zk7sgt970kzPks2Bf+dwT/PLzghLnsivb9CcxkvR8Mzr66Olr0Ofd8neSbglHJHaHa2MadfoSdNlKYAaafmWfA== - dependencies: - domelementtype "^2.2.0" - -domhandler@^4.2.2, domhandler@^4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" - integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== - dependencies: - domelementtype "^2.2.0" - -domutils@^2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" - integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== - dependencies: - dom-serializer "^1.0.1" - domelementtype "^2.2.0" - domhandler "^4.2.0" - -dotenv-expand@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/dotenv-expand/-/dotenv-expand-5.1.0.tgz#3fbaf020bfd794884072ea26b1e9791d45a629f0" - integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA== - -dotenv@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-7.0.0.tgz#a2be3cd52736673206e8a85fb5210eea29628e7c" - integrity sha512-M3NhsLbV1i6HuGzBUH8vXrtxOk+tWmzWKDMbAVSUp3Zsjm7ywFeuwrUXhmhQyRK1q5B5GGy7hcXPbj3bnfZg2g== - -electron-to-chromium@^1.3.723, electron-to-chromium@^1.5.73: - version "1.5.120" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.120.tgz#ccfdd28e9795fb8c2221cefa2c9a071501c86247" - integrity sha512-oTUp3gfX1gZI+xfD2djr2rzQdHCwHzPQrrK0CD7WpTdF0nPdQ/INcRVjWgLdCT4a9W3jFObR9DAfsuyFQnI8CQ== +electron-to-chromium@^1.5.149: + version "1.5.154" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.154.tgz#82430d66848efef703a3b643fb2a682bd08ae26b" + integrity sha512-G4VCFAyKbp1QJ+sWdXYIRYsPGvlV5sDACfCmoMFog3rjm1syLhI41WXm/swZypwCIWIm4IFLWzHY14joWMQ5Fw== emoji-regex@^7.0.1: version "7.0.3" @@ -2119,24 +1065,7 @@ emoji-regex@^8.0.0: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== -entities@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" - integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== - -entities@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/entities/-/entities-3.0.1.tgz#2b887ca62585e96db3903482d336c1006c3001d4" - integrity sha512-WiyBqoomrwMdFG1e0kqvASYfnlb0lp8M5o5Fw2OFq1hNZxxcNk8Ik0Xm7LxzBhuidnZB/UtBqVCgUz3kBOP51Q== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escalade@^3.1.1, escalade@^3.2.0: +escalade@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== @@ -2309,13 +1238,6 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -fill-range@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" - integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== - dependencies: - to-regex-range "^5.0.1" - flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -2335,11 +1257,6 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@~2.3.2: - version "2.3.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" - integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== - function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" @@ -2355,17 +1272,12 @@ gensync@^1.0.0-beta.2: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-port@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/get-port/-/get-port-4.2.0.tgz#e37368b1e863b7629c43c5a323625f95cf24b119" - integrity sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw== - get-stdin@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -glob-parent@^5.0.0, glob-parent@~5.1.2: +glob-parent@^5.0.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -2396,13 +1308,6 @@ globals@^12.1.0: dependencies: type-fest "^0.8.1" -globals@^13.2.0: - version "13.9.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" - integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== - dependencies: - type-fest "^0.20.2" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" @@ -2420,25 +1325,6 @@ hasown@^2.0.2: dependencies: function-bind "^1.1.2" -htmlnano@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/htmlnano/-/htmlnano-2.0.2.tgz#3e3170941e2446a86211196d740272ebca78f878" - integrity sha512-+ZrQFS4Ub+zd+/fWwfvoYCEGNEa0/zrpys6CyXxvZDwtL7Pl+pOtRkiujyvBQ7Lmfp7/iEPxtOFgxWA16Gkj3w== - dependencies: - cosmiconfig "^7.0.1" - posthtml "^0.16.5" - timsort "^0.3.0" - -htmlparser2@^7.1.1: - version "7.2.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-7.2.0.tgz#8817cdea38bbc324392a90b1990908e81a65f5a5" - integrity sha512-H7MImA4MS6cw7nbyURtLPO1Tms7C5H602LRETv95z1MxO/7CP7rDVROehUYeYBUYEON94NXXDEPmZuq+hX4sog== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.2.2" - domutils "^2.8.0" - entities "^3.0.1" - iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -2451,16 +1337,6 @@ ignore@^4.0.6: resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== -immutable@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" - integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== - -immutable@^5.0.2: - version "5.0.3" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-5.0.3.tgz#aa037e2313ea7b5d400cd9298fa14e404c933db1" - integrity sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw== - import-fresh@^3.0.0: version "3.3.1" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" @@ -2469,14 +1345,6 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" -import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" @@ -2514,19 +1382,7 @@ inquirer@^7.0.0: strip-ansi "^6.0.0" through "^2.3.6" -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-core-module@^2.16.0, is-core-module@^2.2.0: +is-core-module@^2.16.0: version "2.16.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== @@ -2548,28 +1404,23 @@ is-fullwidth-code-point@^3.0.0: resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" -is-json@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-json/-/is-json-2.0.1.tgz#6be166d144828a131d686891b983df62c39491ff" - integrity sha1-a+Fm0USCihMdaGiRuYPfYsOUkf8= - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== +jquery@^3.5.1: + version "3.7.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.7.1.tgz#083ef98927c9a6a74d05a6af02806566d16274de" + integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -2593,11 +1444,6 @@ jsesc@~3.0.2: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" @@ -2608,7 +1454,7 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== -json5@^2.2.0, json5@^2.2.1, json5@^2.2.3: +json5@^2.2.3: version "2.2.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== @@ -2621,22 +1467,6 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" -lines-and-columns@^1.1.6: - version "1.2.4" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" - integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== - -lmdb@2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/lmdb/-/lmdb-2.2.4.tgz#6494d5a1d1db152e0be759edcfa06893e4cbdb53" - integrity sha512-gto+BB2uEob8qRiTlOq+R3uX0YNHsX9mjxj9Sbdue/LIKqu6IlZjrsjKeGyOMquc/474GEqFyX2pdytpydp0rQ== - dependencies: - msgpackr "^1.5.4" - nan "^2.14.2" - node-gyp-build "^4.2.3" - ordered-binary "^1.2.4" - weak-lru-cache "^1.2.2" - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -2654,19 +1484,6 @@ lru-cache@^5.1.1: dependencies: yallist "^3.0.2" -mdn-data@2.0.14: - version "2.0.14" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" - integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== - -micromatch@^4.0.5: - version "4.0.8" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" - integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== - dependencies: - braces "^3.0.3" - picomatch "^2.3.1" - mimic-fn@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" @@ -2696,37 +1513,11 @@ ms@^2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== -msgpackr-extract@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/msgpackr-extract/-/msgpackr-extract-3.0.2.tgz#e05ec1bb4453ddf020551bcd5daaf0092a2c279d" - integrity sha512-SdzXp4kD/Qf8agZ9+iTu6eql0m3kWm1A2y1hkpTeVNENutaB0BwHlSvAIaMxwntmRUAUjon2V4L8Z/njd0Ct8A== - dependencies: - node-gyp-build-optional-packages "5.0.7" - optionalDependencies: - "@msgpackr-extract/msgpackr-extract-darwin-arm64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-darwin-x64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-arm" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-arm64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-linux-x64" "3.0.2" - "@msgpackr-extract/msgpackr-extract-win32-x64" "3.0.2" - -msgpackr@^1.5.4: - version "1.10.1" - resolved "https://registry.yarnpkg.com/msgpackr/-/msgpackr-1.10.1.tgz#51953bb4ce4f3494f0c4af3f484f01cfbb306555" - integrity sha512-r5VRLv9qouXuLiIBrLpl2d5ZvPt8svdQTl5/vMvE4nzDMyEX4sgW5yWhuBBj5UmgwOTWj8CIdSXn5sAfsHAWIQ== - optionalDependencies: - msgpackr-extract "^3.0.2" - mute-stream@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== -nan@^2.14.2: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -2737,63 +1528,11 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== -node-addon-api@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" - integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== - -node-addon-api@^7.0.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-7.1.1.tgz#1aba6693b0f255258a049d621329329322aad558" - integrity sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ== - -node-forge@^1.3: - version "1.3.0" - resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.0.tgz#37a874ea723855f37db091e6c186e5b67a01d4b2" - integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== - -node-gyp-build-optional-packages@5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.7.tgz#5d2632bbde0ab2f6e22f1bbac2199b07244ae0b3" - integrity sha512-YlCCc6Wffkx0kHkmam79GKvDQ6x+QZkMjFGrIMxgFNILFvGSbCp2fCBC55pGTT9gVaz8Na5CLmxt/urtzRv36w== - -node-gyp-build@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.3.tgz#ce6277f853835f718829efb47db20f3e4d9c4739" - integrity sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg== - -node-gyp-build@^4.3.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz#42e99687ce87ddeaf3a10b99dc06abc11021f3f4" - integrity sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ== - -node-releases@^1.1.71: - version "1.1.77" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.77.tgz#50b0cfede855dd374e7585bf228ff34e57c1c32e" - integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== - node-releases@^2.0.19: version "2.0.19" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -nth-check@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" - integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== - dependencies: - boolbase "^1.0.0" - -nullthrows@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" - integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== - once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2820,36 +1559,11 @@ optionator@^0.8.3: type-check "~0.3.2" word-wrap "~1.2.3" -ordered-binary@^1.2.4: - version "1.2.5" - resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.2.5.tgz#6208c45067eae9d14b8f44791a1d7037adad9147" - integrity sha512-djRmZoEpOGvIRW7ufsCDHtvcUa18UC9TxnPbHhSVFZHsoyg0dtut1bWtBZ/fmxdPN62oWXrV6adM7NoWU+CneA== - os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== -parcel@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/parcel/-/parcel-2.5.0.tgz#b6f01c665b6085e4eb58957ff11bc8f4027bd8f7" - integrity sha512-er0mj/BaMjWyzQ/jedLUi/LNAuQcFT8lCvoNqANF+jTaX9rohaBwxIvKVJVAZgyCnmyfbbldp496wPMW0R0+CA== - dependencies: - "@parcel/config-default" "2.5.0" - "@parcel/core" "2.5.0" - "@parcel/diagnostic" "2.5.0" - "@parcel/events" "2.5.0" - "@parcel/fs" "2.5.0" - "@parcel/logger" "2.5.0" - "@parcel/package-manager" "2.5.0" - "@parcel/reporter-cli" "2.5.0" - "@parcel/reporter-dev-server" "2.5.0" - "@parcel/utils" "2.5.0" - chalk "^4.1.0" - commander "^7.0.0" - get-port "^4.2.0" - v8-compile-cache "^2.0.0" - parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -2857,16 +1571,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== - dependencies: - "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2877,60 +1581,16 @@ path-key@^2.0.1: resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw== -path-parse@^1.0.6, path-parse@^1.0.7: +path-parse@^1.0.7: version "1.0.7" resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picocolors@^1.0.0, picocolors@^1.1.1: +picocolors@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - -postcss-value-parser@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" - integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== - -posthtml-parser@^0.10.1: - version "0.10.2" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.10.2.tgz#df364d7b179f2a6bf0466b56be7b98fd4e97c573" - integrity sha512-PId6zZ/2lyJi9LiKfe+i2xv57oEjJgWbsHGGANwos5AvdQp98i6AtamAl8gzSVFGfQ43Glb5D614cvZf012VKg== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-parser@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/posthtml-parser/-/posthtml-parser-0.11.0.tgz#25d1c7bf811ea83559bc4c21c189a29747a24b7a" - integrity sha512-QecJtfLekJbWVo/dMAA+OSwY79wpRmbqS5TeXvXSX+f0c6pW4/SE6inzZ2qkU7oAMCPqIDkZDvd/bQsSFUnKyw== - dependencies: - htmlparser2 "^7.1.1" - -posthtml-render@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/posthtml-render/-/posthtml-render-3.0.0.tgz#97be44931496f495b4f07b99e903cc70ad6a3205" - integrity sha512-z+16RoxK3fUPgwaIgH9NGnK1HKY9XIDpydky5eQGgAFVXTCSezalv9U2jQuNV+Z9qV1fDWNzldcw4eK0SSbqKA== - dependencies: - is-json "^2.0.1" - -posthtml@^0.16.4, posthtml@^0.16.5: - version "0.16.6" - resolved "https://registry.yarnpkg.com/posthtml/-/posthtml-0.16.6.tgz#e2fc407f67a64d2fa3567afe770409ffdadafe59" - integrity sha512-JcEmHlyLK/o0uGAlj65vgg+7LIms0xKXe60lcDOTU7oVX/3LuEuLwrQpW3VJ7de5TaFKiW4kWkaIpJL42FEgxQ== - dependencies: - posthtml-parser "^0.11.0" - posthtml-render "^3.0.0" - prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" @@ -2958,23 +1618,6 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== -react-refresh@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.9.0.tgz#71863337adc3e5c2f8a6bfddd12ae3bfe32aafbf" - integrity sha512-Gvzk7OZpiqKSkxsQvO/mbTN1poglhmAV7gR/DdIrRrSMXraRQQlfikRJOr3Nb9GTMPC5kof948Zy6jJZIFtDvQ== - -readdirp@^4.0.1: - version "4.1.2" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" - integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - regenerate-unicode-properties@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" @@ -2987,23 +1630,6 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== -regenerator-runtime@^0.13.7: - version "0.13.9" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" - integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== - -regenerator-runtime@^0.14.0: - version "0.14.1" - resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz#356ade10263f685dda125100cd862c1db895327f" - integrity sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw== - -regenerator-transform@^0.15.2: - version "0.15.2" - resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.15.2.tgz#5bbae58b522098ebdf09bca2f83838929001c7a4" - integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg== - dependencies: - "@babel/runtime" "^7.8.4" - regexpp@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" @@ -3038,15 +1664,7 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve@^1.12.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -resolve@^1.14.2: +resolve@^1.12.0, resolve@^1.14.2: version "1.22.10" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== @@ -3082,37 +1700,12 @@ rxjs@^6.6.0: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - "safer-buffer@>= 2.1.2 < 3": version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass@^1.26.3: - version "1.86.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.86.0.tgz#f49464fb6237a903a93f4e8760ef6e37a5030114" - integrity sha512-zV8vGUld/+mP4KbMLJMX7TyGCuUp7hnkOScgCMsWuHtns8CWBoz+vmEhoGMXsaJrbUP8gj+F1dLvVe79sK8UdA== - dependencies: - chokidar "^4.0.0" - immutable "^5.0.2" - source-map-js ">=0.6.2 <2.0.0" - optionalDependencies: - "@parcel/watcher" "^2.4.1" - -sass@^1.38.0: - version "1.51.0" - resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" - integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== - dependencies: - chokidar ">=3.0.0 <4.0.0" - immutable "^4.0.0" - source-map-js ">=0.6.2 <2.0.0" - -semver@^5.5.0, semver@^5.7.0, semver@^5.7.1: +semver@^5.5.0: version "5.7.2" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== @@ -3148,34 +1741,11 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.0.0" -"source-map-js@>=0.6.2 <2.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" - integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== - -source-map-support@~0.5.20: - version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" - integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== -stable@^0.1.8: - version "0.1.8" - resolved "https://registry.yarnpkg.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf" - integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w== - string-width@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -3232,19 +1802,6 @@ supports-preserve-symlinks-flag@^1.0.0: resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== -svgo@^2.4.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24" - integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg== - dependencies: - "@trysound/sax" "0.2.0" - commander "^7.2.0" - css-select "^4.1.3" - css-tree "^1.1.3" - csso "^4.2.0" - picocolors "^1.0.0" - stable "^0.1.8" - table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" @@ -3255,21 +1812,6 @@ table@^5.2.3: slice-ansi "^2.1.0" string-width "^3.0.0" -term-size@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" - integrity sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg== - -terser@^5.2.0: - version "5.14.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" - integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== - dependencies: - "@jridgewell/source-map" "^0.3.2" - acorn "^8.5.0" - commander "^2.20.0" - source-map-support "~0.5.20" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -3280,11 +1822,6 @@ through@^2.3.6: resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== -timsort@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" - integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= - tmp@^0.0.33: version "0.0.33" resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" @@ -3292,28 +1829,11 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== - -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" - integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== - type-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -3321,11 +1841,6 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - type-fest@^0.21.3: version "0.21.3" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" @@ -3359,7 +1874,7 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== -update-browserslist-db@^1.1.1: +update-browserslist-db@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== @@ -3374,26 +1889,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" -utility-types@^3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" - integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== - -v8-compile-cache@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" - integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== - v8-compile-cache@^2.0.3: version "2.4.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz#cdada8bec61e15865f05d097c5f4fd30e94dc128" integrity sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw== -weak-lru-cache@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/weak-lru-cache/-/weak-lru-cache-1.2.2.tgz#fdbb6741f36bae9540d12f480ce8254060dccd19" - integrity sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw== - which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" @@ -3418,17 +1918,7 @@ write@1.0.3: dependencies: mkdirp "^0.5.1" -xxhash-wasm@^0.4.2: - version "0.4.2" - resolved "https://registry.yarnpkg.com/xxhash-wasm/-/xxhash-wasm-0.4.2.tgz#752398c131a4dd407b5132ba62ad372029be6f79" - integrity sha512-/eyHVRJQCirEkSZ1agRSCwriMhwlyUcFkXD5TPVSLP+IPzjsqMVzZwdoczLp1SoQU0R3dxz1RpIK+4YNQbCVOA== - yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - -yaml@^1.10.0: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== diff --git a/composer.json b/composer.json index 5f4a2a47..927e5d6c 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,8 @@ "sylius", "sylius-plugin", "akeneo", - "connector" + "connector", + "symfony-ux" ], "description": "Akeneo connector for Sylius.", "license": "EUPL-1.2", diff --git a/config/config.yaml b/config/config.yaml index aa5d6012..dd3e3d69 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -1,6 +1,7 @@ imports: - { resource: "resources.yaml" } - { resource: "grid.yaml" } + - { resource: "twig_hooks.yaml" } #sylius_ui: # events: diff --git a/config/twig_hooks.yaml b/config/twig_hooks.yaml new file mode 100644 index 00000000..098ff8ad --- /dev/null +++ b/config/twig_hooks.yaml @@ -0,0 +1,156 @@ +sylius_twig_hooks: + hooks: + 'synolia.sylius_admin.akeneo': &base + sidebar: + template: '@SyliusAdmin/shared/crud/common/sidebar.html.twig' + priority: 200 + navbar: + template: '@SyliusAdmin/shared/crud/common/navbar.html.twig' + priority: 100 + content: + template: '@SyliusAdmin/shared/crud/common/content.html.twig' + priority: 0 + + 'synolia.sylius_admin.akeneo.content': &content + flashes: + template: '@SyliusAdmin/shared/crud/common/content/flashes.html.twig' + priority: 400 + header: + template: '@SyliusAdmin/shared/crud/common/content/header.html.twig' + priority: 300 + footer: + template: '@SyliusAdmin/shared/crud/common/content/footer.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.content.header': &header + title_block: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block.html.twig' + priority: 0 + + 'synolia.sylius_admin.akeneo.content.header.title_block': &title_block + title: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/title.html.twig' + priority: 100 + actions: + template: '@SyliusAdmin/shared/crud/update/content/header/title_block/actions.html.twig' + priority: 0 + + 'synolia.sylius_admin.akeneo.content.header.title_block.actions': &actions + cancel: + template: '@SynoliaSyliusAkeneoPlugin/admin/common/content/header/title_block/actions/cancel.html.twig' + priority: 100 + update: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/actions/update.html.twig' + priority: 0 + + 'synolia.sylius_admin.akeneo.categories': *base + + 'synolia.sylius_admin.akeneo.categories.content': + <<: *content + form: + template: '@SynoliaSyliusAkeneoPlugin/admin/categories/content/form.html.twig' + priority: 200 + + 'synolia.sylius_admin.akeneo.categories.content.header': + <<: *header + breadcrumbs: + template: '@SynoliaSyliusAkeneoPlugin/admin/categories/content/header/breadcrumbs.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.categories.content.header.title_block': + <<: *title_block + title: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/title.html.twig' + configuration: + title: sylius.ui.admin.akeneo.categories.title + icon: tabler:settings + subheader: sylius.ui.admin.akeneo.categories.subtitle + priority: 100 + + 'synolia.sylius_admin.akeneo.categories.content.header.title_block.actions': + <<: *actions + cancel: + template: '@SynoliaSyliusAkeneoPlugin/admin/common/content/header/title_block/actions/cancel.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.filters_configuration': *base + + 'synolia.sylius_admin.akeneo.filters_configuration.content': + <<: *content + form: + template: '@SynoliaSyliusAkeneoPlugin/admin/filters_configuration/content/form.html.twig' + priority: 200 + + 'synolia.sylius_admin.akeneo.filters_configuration.content.header': + <<: *header + breadcrumbs: + template: '@SynoliaSyliusAkeneoPlugin/admin/filters_configuration/content/header/breadcrumbs.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.filters_configuration.content.header.title_block': + <<: *title_block + title: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/title.html.twig' + configuration: + title: sylius.ui.admin.akeneo.product_filter_rules.title + icon: tabler:settings + subheader: sylius.ui.admin.akeneo.product_filter_rules.subtitle + priority: 100 + + 'synolia.sylius_admin.akeneo.filters_configuration.content.header.title_block.actions': + <<: *actions + update: + template: '@SynoliaSyliusAkeneoPlugin/admin/filters_configuration/content/header/title_block/actions/update.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.products_configuration': *base + + 'synolia.sylius_admin.akeneo.products_configuration.content': + <<: *content + form: + template: '@SynoliaSyliusAkeneoPlugin/admin/products_configuration/content/form.html.twig' + priority: 200 + + 'synolia.sylius_admin.akeneo.products_configuration.content.header': + <<: *header + breadcrumbs: + template: '@SynoliaSyliusAkeneoPlugin/admin/products_configuration/content/header/breadcrumbs.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.products_configuration.content.header.title_block': + <<: *title_block + title: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/title.html.twig' + configuration: + title: sylius.ui.admin.akeneo.products.title + icon: tabler:settings + subheader: sylius.ui.admin.akeneo.products.subtitle + priority: 100 + + 'synolia.sylius_admin.akeneo.products_configuration.content.header.title_block.actions': *actions + + 'synolia.sylius_admin.akeneo.attributes_configuration': *base + + 'synolia.sylius_admin.akeneo.attributes_configuration.content': + <<: *content + form: + template: '@SynoliaSyliusAkeneoPlugin/admin/attributes_configuration/content/form.html.twig' + priority: 200 + + 'synolia.sylius_admin.akeneo.attributes_configuration.content.header': + <<: *header + breadcrumbs: + template: '@SynoliaSyliusAkeneoPlugin/admin/attributes_configuration/content/header/breadcrumbs.html.twig' + priority: 100 + + 'synolia.sylius_admin.akeneo.attributes_configuration.content.header.title_block': + <<: *title_block + title: + template: '@SyliusAdmin/shared/crud/common/content/header/title_block/title.html.twig' + configuration: + title: sylius.ui.admin.akeneo.attributes.title + icon: tabler:settings + subheader: sylius.ui.admin.akeneo.attributes.subtitle + priority: 100 + + 'synolia.sylius_admin.akeneo.attributes_configuration.content.header.title_block.actions': *actions diff --git a/public/js/form.js b/public/js/form.js deleted file mode 100644 index b442ccbc..00000000 --- a/public/js/form.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var e={trigger:$("#switchForm, #switchForm + label, #product_configuration_importMediaFiles, #product_configuration_importMediaFiles + label"),options:{locale:{trigger:"#product_filter_rule_simple_completeness_type",selector:"#product_filter_rule_simple_locales",values:["GREATER THAN ON ALL LOCALES","GREATER OR EQUALS THAN ON ALL LOCALES","LOWER THAN ON ALL LOCALES","LOWER OR EQUALS THAN ON ALL LOCALES"]},before:{trigger:"#product_filter_rule_simple_updated_mode",selector:"#product_filter_rule_simple_updated_before",values:["BETWEEN","<"]},after:{trigger:"#product_filter_rule_simple_updated_mode",selector:"#product_filter_rule_simple_updated_after",values:["BETWEEN",">"]},since:{trigger:"#product_filter_rule_simple_updated_mode",selector:"#product_filter_rule_simple_updated",values:["SINCE LAST N DAYS"]}},load:function(){this.toggleForms(),this.toggleFields()},toggleForms:function(){this.trigger.removeClass("hidden"),this.trigger.length&&this.trigger.on("click",(function(){$(this).is(":checked")?$(".switch > span").addClass("muted"):$(".switch > span").removeClass("muted"),$(".togglable").toggle()}))},toggleFields:function(){var e=this,t=function(t){if(e.options[t].values.includes($(e.options[t].trigger).val())){var r=o.indexOf(e.options[t].selector);-1!==r&&o.splice(r,1)}$(e.options[t].trigger).length&&$(e.options[t].trigger).on("change",(function(){i.options[t].values.includes($(e).val())?$(i.options[t].selector).parent(".field").removeClass("hidden"):$(i.options[t].selector).parent(".field").addClass("hidden")}))},i=this,o=[this.options.locale.selector,this.options.before.selector,this.options.after.selector,this.options.since.selector];for(var r in this.options)t(r);$("".concat(o.join())).length&&$("".concat(o.join())).parent(".field").addClass("hidden")}};$(document).ready((function(){e.load()}))}(); \ No newline at end of file diff --git a/public/js/tooltip.js b/public/js/tooltip.js deleted file mode 100644 index da93b903..00000000 --- a/public/js/tooltip.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var i={selectors:["#api_configuration_username","#api_configuration_paginationSize","#product_filter_rule_simple_completeness_type","#product_filter_rule_simple_completeness_value","#product_filter_rule_simple_status","#product_filter_rule_simple_families"],load:function(){this.toggleTooltip()},toggleTooltip:function(){$(this.selectors.join()).length&&$(this.selectors.join()).on("click",(function(){$(this).parent(".field").siblings(".pointing").show()}))}};$(document).ready((function(){i.load()}))}(); \ No newline at end of file diff --git a/public/main.css b/public/main.css deleted file mode 100644 index 338f6c08..00000000 --- a/public/main.css +++ /dev/null @@ -1 +0,0 @@ -.muted,#switchForm+label,#product_configuration_importMediaFiles+label{color:rgba(0,0,0,.4)}.hidden{visibility:hidden;display:none}.ui.header{display:table}.ui.toggle.switch{display:-ms-inline-flexbox;display:inline-flex}.ui.toggle.switch input{width:100%}.ui.toggle.switch>span{cursor:pointer;padding-top:.15em;padding-right:1rem}#switchForm+label,#product_configuration_importMediaFiles+label{cursor:pointer}form .ui.pointing.below.label:before{left:20px}[id*=Mappings]{margin:0 0 1rem}@media screen and (min-width:60em){[id*=Mappings] [data-form-collection=item]{-ms-flex-pack:start;justify-content:flex-start;display:-ms-flexbox;display:flex}[id*=Mappings] [data-form-collection=item]>div{margin:0 0 1rem;display:-ms-flexbox;display:flex}[id*=Mappings] [data-form-collection=item]>div.field{display:block}[id*=Mappings] [data-form-collection=item]>div>.field{margin-right:1rem}[id*=Mappings] [data-form-collection=item]>div>.field input,[id*=Mappings] [data-form-collection=item]>div>.field select{min-width:320px}} \ No newline at end of file diff --git a/public/main.js b/public/main.js deleted file mode 100644 index e69de29b..00000000 diff --git a/src/Controller/AttributesController.php b/src/Controller/AttributesController.php index dc8642ef..ea0f8c1a 100644 --- a/src/Controller/AttributesController.php +++ b/src/Controller/AttributesController.php @@ -80,7 +80,8 @@ public function __invoke(Request $request): Response return $this->redirectToRoute('sylius_akeneo_connector_attributes'); } - return $this->render('@SynoliaSyliusAkeneoPlugin/Admin/AkeneoConnector/attributes_configuration.html.twig', [ + return $this->render('@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + 'hook_suffix' => 'akeneo.attributes_configuration', 'form' => $form, ]); } diff --git a/src/Controller/CategoriesController.php b/src/Controller/CategoriesController.php index ac204a8e..6f450eb5 100644 --- a/src/Controller/CategoriesController.php +++ b/src/Controller/CategoriesController.php @@ -37,7 +37,7 @@ public function __invoke(Request $request): Response return $this->redirectToRoute('sylius_akeneo_connector_api_configuration'); } $categoriesConfigurations = $this->categoriesConfigurationRepository->getCategoriesConfiguration(); - if (!$categoriesConfigurations instanceof \Synolia\SyliusAkeneoPlugin\Entity\CategoryConfiguration) { + if (!$categoriesConfigurations instanceof CategoryConfiguration) { $categoriesConfigurations = new CategoryConfiguration(); } @@ -52,8 +52,8 @@ public function __invoke(Request $request): Response } return $this->render( - '@SynoliaSyliusAkeneoPlugin/Admin/AkeneoConnector/categories.html.twig', - [ + '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + 'hook_suffix' => 'akeneo.categories', 'form' => $form, ], ); diff --git a/src/Controller/ProductFilterRulesController.php b/src/Controller/ProductFilterRulesController.php index 9d5f1733..7d7febf1 100644 --- a/src/Controller/ProductFilterRulesController.php +++ b/src/Controller/ProductFilterRulesController.php @@ -58,7 +58,8 @@ public function __invoke(Request $request): Response $this->update($request, $advancedForm); } - return $this->render('@SynoliaSyliusAkeneoPlugin/Admin/AkeneoConnector/filters_configuration.html.twig', [ + return $this->render('@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + 'hook_suffix' => 'akeneo.filters_configuration', 'simple_form' => $simpleForm, 'advanced_form' => $advancedForm, ]); diff --git a/src/Controller/ProductsController.php b/src/Controller/ProductsController.php index 4b7abc78..59a356ef 100644 --- a/src/Controller/ProductsController.php +++ b/src/Controller/ProductsController.php @@ -58,8 +58,8 @@ public function __invoke(Request $request): Response } return $this->render( - '@SynoliaSyliusAkeneoPlugin/Admin/AkeneoConnector/products_configuration.html.twig', - [ + '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + 'hook_suffix' => 'akeneo.products_configuration', 'form' => $form, ], ); diff --git a/src/Form/Type/AttributesTypeMappingType.php b/src/Form/Type/AttributesTypeMappingType.php index 90157d99..27e8c2d7 100644 --- a/src/Form/Type/AttributesTypeMappingType.php +++ b/src/Form/Type/AttributesTypeMappingType.php @@ -42,10 +42,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'by_reference' => false, 'label' => 'Attributes Akeneo to Sylius Mapping', ]) - ->add('submit', SubmitType::class, [ - 'label' => 'sylius.ui.save', - 'attr' => ['class' => 'ui primary button'], - ]) ; } diff --git a/src/Form/Type/CategoriesConfigurationType.php b/src/Form/Type/CategoriesConfigurationType.php index 019062a9..bd0d5fb3 100644 --- a/src/Form/Type/CategoriesConfigurationType.php +++ b/src/Form/Type/CategoriesConfigurationType.php @@ -31,10 +31,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'sylius.ui.admin.akeneo.categories.use_akeneo_positions', 'required' => false, ]) - ->add('submit', SubmitType::class, [ - 'attr' => ['class' => 'ui icon primary button'], - 'label' => 'sylius.ui.admin.akeneo.save', - ]) ; } } diff --git a/src/Form/Type/ProductConfigurationType.php b/src/Form/Type/ProductConfigurationType.php index 5eb7dcf2..12000f1a 100644 --- a/src/Form/Type/ProductConfigurationType.php +++ b/src/Form/Type/ProductConfigurationType.php @@ -51,12 +51,6 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'sylius.ui.admin.akeneo.products.regenerate_url_rewrites', 'required' => false, ]) - ->add('submit', SubmitType::class, [ - 'label' => 'sylius.ui.admin.akeneo.save', - 'attr' => [ - 'class' => 'ui icon button primary', - ], - ]) ; } } diff --git a/src/Form/Type/ProductFilterRuleAdvancedType.php b/src/Form/Type/ProductFilterRuleAdvancedType.php index 62d5dec1..f9d9e656 100644 --- a/src/Form/Type/ProductFilterRuleAdvancedType.php +++ b/src/Form/Type/ProductFilterRuleAdvancedType.php @@ -26,10 +26,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ]) ->add('advanced_filter', TextareaType::class, [ 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.advanced_filter', - ]) - ->add('submit', SubmitType::class, [ - 'label' => 'sylius.ui.save', - 'attr' => ['class' => 'ui primary button'], + 'help' => 'sylius.ui.admin.akeneo.product_filter_rules.advanced_help', ]) ; } diff --git a/src/Form/Type/ProductFilterRuleSimpleType.php b/src/Form/Type/ProductFilterRuleSimpleType.php index 5affae68..061c3365 100644 --- a/src/Form/Type/ProductFilterRuleSimpleType.php +++ b/src/Form/Type/ProductFilterRuleSimpleType.php @@ -40,6 +40,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.completeness_type', 'placeholder' => 'sylius.ui.admin.akeneo.product_filter_rules.no_condition', 'required' => false, + 'help' => 'sylius.ui.admin.akeneo.product_filter_rules.completeness_type_help', ]) ->add('locales', LocalesChoiceType::class, [ 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.locales', @@ -52,6 +53,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'max' => self::MAX_COMPLETENESS, ]), ], + 'help' => 'sylius.ui.admin.akeneo.product_filter_rules.completeness_value_help', ]) ->add('status', ChoiceType::class, [ 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.status', @@ -60,6 +62,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void 'sylius.ui.admin.akeneo.product_filter_rules.enabled' => ProductFilterStatusEnum::ENABLED, 'sylius.ui.admin.akeneo.product_filter_rules.disabled' => ProductFilterStatusEnum::DISABLED, ], + 'help' => 'sylius.ui.admin.akeneo.product_filter_rules.status_help', ]) ->add('updated_mode', ChoiceType::class, [ 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.updated_mode', @@ -84,10 +87,7 @@ public function buildForm(FormBuilderInterface $builder, array $options): void ]) ->add('exclude_families', FamiliesChoiceType::class, [ 'label' => 'sylius.ui.admin.akeneo.product_filter_rules.families', - ]) - ->add('submit', SubmitType::class, [ - 'label' => 'sylius.ui.save', - 'attr' => ['class' => 'ui primary button'], + 'help' => 'sylius.ui.admin.akeneo.product_filter_rules.families_help', ]) ; } diff --git a/src/Form/Type/TaxonAttributeValueType.php b/src/Form/Type/TaxonAttributeValueType.php index 257380d5..4771fee0 100644 --- a/src/Form/Type/TaxonAttributeValueType.php +++ b/src/Form/Type/TaxonAttributeValueType.php @@ -26,7 +26,7 @@ class TaxonAttributeValueType extends AbstractResourceType public function __construct( #[Autowire(TaxonAttributeValue::class)] string $dataClass, - #[Autowire('sylius_taxon_attribute_value.validation_groups')] + #[Autowire('%sylius.form.type.product_attribute_value.validation_groups%')] array $validationGroups, #[Autowire(TaxonAttributeChoiceType::class)] protected string $attributeChoiceType, diff --git a/templates/Admin/AkeneoConnector/api_configuration.html.twig b/templates/Admin/AkeneoConnector/api_configuration.html.twig deleted file mode 100644 index c0ca420a..00000000 --- a/templates/Admin/AkeneoConnector/api_configuration.html.twig +++ /dev/null @@ -1,53 +0,0 @@ -{% extends '@SynoliaSyliusAkeneoPlugin/Admin/layout.html.twig' %} - -{% import '@SyliusUi/Macro/headers.html.twig' as headers %} - -{% block title %}{{ 'sylius.ui.admin.akeneo.api_configuration.title'|trans }} {{ parent() }}{% endblock %} - -{% block content %} -
- - -
-
- Deprecated configuration -
-

This section has been deprecated and will be removed in the next major release. See Upgrade documentation.

-
-
- - {{ headers.default( - 'sylius.ui.admin.akeneo.api_configuration.title'|trans, - 'cogs', - 'sylius.ui.admin.akeneo.api_configuration.subtitle'|trans - ) }} - {% block breadcrumb %} - {% set breadcrumbs = breadcrumbs|merge([ - {label: 'sylius.ui.admin.akeneo.api_configuration.title'|trans} - ]) %} - {{ parent() }} - {% endblock %} -
- {{ form_start(form, {'attr': {'class': 'ui form'}}) }} -
- {{ form_row(form.baseUrl) }} - - {{ form_row(form.username) }} - {{ form_row(form.password) }} - {{ form_row(form.apiClientId) }} - {{ form_row(form.apiClientSecret) }} - {{ form_row(form.testCredentials) }} -
-
- - {{ form_row(form.paginationSize) }} - {{ form_row(form.edition) }} -
- {{ form_end(form) }} -
-{% endblock %} - -{% block javascripts %} - {{ parent() }} - -{% endblock %} diff --git a/templates/Admin/AkeneoConnector/categories.html.twig b/templates/Admin/AkeneoConnector/categories.html.twig deleted file mode 100644 index af8f2344..00000000 --- a/templates/Admin/AkeneoConnector/categories.html.twig +++ /dev/null @@ -1,24 +0,0 @@ -{% extends '@SynoliaSyliusAkeneoPlugin/Admin/layout.html.twig' %} - -{% import '@SyliusUi/Macro/headers.html.twig' as headers %} - -{% block title %}{{ 'sylius.ui.admin.akeneo.categories.title'|trans }} {{ parent() }}{% endblock %} - -{% block content %} - {{ headers.default( - 'sylius.ui.admin.akeneo.categories.title'|trans, - 'cogs', - 'sylius.ui.admin.akeneo.categories.subtitle'|trans - ) }} - {% block breadcrumb %} - {% set breadcrumbs = breadcrumbs|merge([ - {label: 'sylius.ui.admin.akeneo.categories.title'|trans} - ]) %} - {{ parent() }} - {% endblock %} - {{ form_start(form, {'attr': {'class': 'ui loadable form'}}) }} -
- {{ form_row(form) }} -
- {{ form_end(form) }} -{% endblock %} diff --git a/templates/Admin/AkeneoConnector/filters_configuration.html.twig b/templates/Admin/AkeneoConnector/filters_configuration.html.twig deleted file mode 100644 index e4fb116b..00000000 --- a/templates/Admin/AkeneoConnector/filters_configuration.html.twig +++ /dev/null @@ -1,69 +0,0 @@ -{% extends '@SynoliaSyliusAkeneoPlugin/Admin/layout.html.twig' %} - -{% form_theme advanced_form '@SyliusUi/Form/theme.html.twig' %} -{% form_theme simple_form '@SyliusUi/Form/theme.html.twig' %} - -{% import '@SyliusUi/Macro/headers.html.twig' as headers %} - -{% block title %}{{ 'sylius.ui.admin.akeneo.product_filter_rules.title'|trans }} {{ parent() }}{% endblock %} - -{% block content %} - {{ headers.default( - 'sylius.ui.admin.akeneo.product_filter_rules.title'|trans, - 'cogs', - 'sylius.ui.admin.akeneo.product_filter_rules.subtitle'|trans - ) }} - {% block breadcrumb %} - {% set breadcrumbs = breadcrumbs|merge([ - {label: 'sylius.ui.admin.akeneo.product_filter_rules.title'|trans} - ]) %} - {{ parent() }} - {% endblock %} -
-
- Standard mode - - -
-
- {{ form_start(simple_form, {'attr': {'class': 'ui form'}}) }} - {{ form_row(simple_form.mode) }} - {{ form_row(simple_form.channel) }} -
- - {{ form_row(simple_form.completeness_type) }} -
- {{ form_row(simple_form.locales) }} -
- - {{ form_row(simple_form.completeness_value) }} -
-
- - {{ form_row(simple_form.status) }} -
- {{ form_row(simple_form.updated_mode) }} - {{ form_row(simple_form.updated_before) }} - {{ form_row(simple_form.updated_after) }} - {{ form_row(simple_form.updated) }} -
- - {{ form_row(simple_form.exclude_families) }} -
- {{ form_end(simple_form) }} -
- -
-{% endblock %} - -{% block javascripts %} - {{ parent() }} - - -{% endblock %} diff --git a/templates/Admin/AkeneoConnector/products_configuration.html.twig b/templates/Admin/AkeneoConnector/products_configuration.html.twig deleted file mode 100644 index d99f5037..00000000 --- a/templates/Admin/AkeneoConnector/products_configuration.html.twig +++ /dev/null @@ -1,42 +0,0 @@ -{% extends '@SynoliaSyliusAkeneoPlugin/Admin/layout.html.twig' %} - -{% import '@SyliusUi/Macro/headers.html.twig' as headers %} - -{% block title %}{{ 'sylius.ui.admin.akeneo.products.title'|trans }} {{ parent() }}{% endblock %} - -{% block content %} - {{ headers.default( - 'sylius.ui.admin.akeneo.products.title'|trans, - 'cogs', - 'sylius.ui.admin.akeneo.products.subtitle'|trans - ) }} - {% block breadcrumb %} - {% set breadcrumbs = breadcrumbs|merge([ - {label: 'sylius.ui.admin.akeneo.products.title'|trans} - ]) %} - {{ parent() }} - {% endblock %} -
- {{ form_start(form, {'attr': {'class': 'ui loadable form', 'novalidate': 'novalidate'}}) }} - {{ form_row(form.akeneoPriceAttribute) }} - {{ form_row(form.akeneoEnabledChannelsAttribute) }} -
- {{ form_row(form.importMediaFiles) }} -
-
- {{ form_row(form.akeneoImageAttributes) }} -
-
- {{ form_row(form.productImagesMapping) }} -
-
- {{ form_row(form.regenerateUrlRewrites) }} -
- {{ form_end(form) }} -
-{% endblock %} - -{% block javascripts %} - {{ parent() }} - -{% endblock %} diff --git a/templates/Admin/layout.html.twig b/templates/Admin/layout.html.twig deleted file mode 100644 index 6bc6aef4..00000000 --- a/templates/Admin/layout.html.twig +++ /dev/null @@ -1,31 +0,0 @@ -{% extends '@SyliusAdmin/layout.html.twig' %} -{% import '@SyliusAdmin/Macro/breadcrumb.html.twig' as breadcrumb %} - -{% if form is defined %} - {% form_theme form '@SynoliaSyliusAkeneoPlugin/Admin/Form/theme.html.twig' %} -{% endif %} - -{% block title %} | Synolia Sylius Akeneo Plugin{% endblock %} - -{% set breadcrumbs = breadcrumbs|default([ - {label: 'sylius.ui.administration'|trans, url: path('sylius_admin_dashboard')} -]) %} - -{% block breadcrumb %} - {{ breadcrumb.crumble(breadcrumbs) }} -{% endblock %} - -{% block stylesheets %} - {{ parent() }} - -{% endblock %} - -{% block footer %} - {{ parent() }} -
Plugin version : {{ constant('Synolia\\SyliusAkeneoPlugin\\SynoliaSyliusAkeneoPlugin::VERSION') }}
-{% endblock %} - -{% block javascripts %} - {{ parent() }} - -{% endblock %} diff --git a/templates/admin/attributes_configuration/content/form.html.twig b/templates/admin/attributes_configuration/content/form.html.twig new file mode 100644 index 00000000..7d716eb6 --- /dev/null +++ b/templates/admin/attributes_configuration/content/form.html.twig @@ -0,0 +1,29 @@ +{% if form is not defined %} + {% set form = hookable_metadata.context.form %} + {% form_theme form '@SynoliaSyliusAkeneoPlugin/admin/form/theme.html.twig' %} +{% endif %} + +
+
+
+
+
+
+ {{ form_start(form, {'attr': {'novalidate': 'novalidate', 'id': form.vars.id}}) }} + {{ form_row(form.settings, {attr: { + 'data-action': 'input->synolia--sylius-akeneo-plugin--form#toggleForms' + }}) }} +
+ {{ form_row(form.attributeType) }} +
+
+ {{ form_row(form.attributeAkeneoSylius) }} +
+ {{ form_rest(form) }} + {{ form_end(form) }} +
+
+
+
+
+
\ No newline at end of file diff --git a/templates/admin/attributes_configuration/content/header/breadcrumbs.html.twig b/templates/admin/attributes_configuration/content/header/breadcrumbs.html.twig new file mode 100644 index 00000000..a6a843f2 --- /dev/null +++ b/templates/admin/attributes_configuration/content/header/breadcrumbs.html.twig @@ -0,0 +1,7 @@ +{% from '@SyliusAdmin/shared/helper/breadcrumbs.html.twig' import breadcrumbs %} + +{{ breadcrumbs([ + { name: 'sylius.ui.administration', url: path('sylius_admin_dashboard'), active: false }, + { name: 'sylius.ui.admin.akeneo.attributes.title'|trans }, + { name: 'sylius.ui.edit'|trans, active: false } +]) }} diff --git a/templates/admin/categories/content/form.html.twig b/templates/admin/categories/content/form.html.twig new file mode 100644 index 00000000..4b76b5aa --- /dev/null +++ b/templates/admin/categories/content/form.html.twig @@ -0,0 +1,24 @@ +{% if form is not defined %} + {% set form = hookable_metadata.context.form %} + {% form_theme form '@SynoliaSyliusAkeneoPlugin/admin/form/theme.html.twig' %} +{% endif %} + +
+
+ {{ form_start(form, {'attr': {'novalidate': 'novalidate', 'id': form.vars.id}}) }} +
+
+
+
+
+
+ {{ form_row(form) }} +
+
+
+
+
+
+ {{ form_end(form) }} +
+
diff --git a/templates/admin/categories/content/header/breadcrumbs.html.twig b/templates/admin/categories/content/header/breadcrumbs.html.twig new file mode 100644 index 00000000..1515b4ee --- /dev/null +++ b/templates/admin/categories/content/header/breadcrumbs.html.twig @@ -0,0 +1,7 @@ +{% from '@SyliusAdmin/shared/helper/breadcrumbs.html.twig' import breadcrumbs %} + +{{ breadcrumbs([ + { name: 'sylius.ui.administration', url: path('sylius_admin_dashboard'), active: false }, + { name: 'sylius.ui.admin.akeneo.categories.title'|trans }, + { name: 'sylius.ui.edit'|trans, active: false } +]) }} diff --git a/templates/admin/common/content/header/title_block/actions/cancel.html.twig b/templates/admin/common/content/header/title_block/actions/cancel.html.twig new file mode 100644 index 00000000..67fbc940 --- /dev/null +++ b/templates/admin/common/content/header/title_block/actions/cancel.html.twig @@ -0,0 +1,5 @@ +{% import '@SyliusAdmin/shared/helper/button.html.twig' as button %} + +{% set index_url = sylius_generate_redirect_path(app.request.headers.get('referer')) %} + +{{ button.cancel(sylius_test_form_attribute('cancel-changes-button')|merge({ text: 'sylius.ui.cancel'|trans, url: index_url, class: 'btn' })) }} diff --git a/templates/admin/filters_configuration/content/form.html.twig b/templates/admin/filters_configuration/content/form.html.twig new file mode 100644 index 00000000..d4acbc74 --- /dev/null +++ b/templates/admin/filters_configuration/content/form.html.twig @@ -0,0 +1,56 @@ +{% if simple_form is not defined %} + {% set simple_form = hookable_metadata.context.simple_form %} + {% form_theme simple_form '@SynoliaSyliusAkeneoPlugin/admin/form/theme.html.twig' %} +{% endif %} + +{% if advanced_form is not defined %} + {% set advanced_form = hookable_metadata.context.advanced_form %} + {% form_theme advanced_form '@SynoliaSyliusAkeneoPlugin/admin/form/theme.html.twig' %} +{% endif %} + +
+
+
+ + + +
+
+
+
+
+ {{ form_start(simple_form, {'attr': {'novalidate': 'novalidate', 'id': simple_form.vars.id}}) }} + {{ form_row(simple_form) }} + {{ form_end(simple_form) }} +
+
+
+
+ +
+
diff --git a/templates/admin/filters_configuration/content/header/breadcrumbs.html.twig b/templates/admin/filters_configuration/content/header/breadcrumbs.html.twig new file mode 100644 index 00000000..3d5faac3 --- /dev/null +++ b/templates/admin/filters_configuration/content/header/breadcrumbs.html.twig @@ -0,0 +1,7 @@ +{% from '@SyliusAdmin/shared/helper/breadcrumbs.html.twig' import breadcrumbs %} + +{{ breadcrumbs([ + { name: 'sylius.ui.administration', url: path('sylius_admin_dashboard'), active: false }, + { name: 'sylius.ui.admin.akeneo.product_filter_rules.title'|trans }, + { name: 'sylius.ui.edit'|trans, active: false } +]) }} diff --git a/templates/admin/filters_configuration/content/header/title_block/actions/update.html.twig b/templates/admin/filters_configuration/content/header/title_block/actions/update.html.twig new file mode 100644 index 00000000..d184c30e --- /dev/null +++ b/templates/admin/filters_configuration/content/header/title_block/actions/update.html.twig @@ -0,0 +1,11 @@ +{% import '@SyliusAdmin/shared/helper/button.html.twig' as button %} + +{% set form = hookable_metadata.context.simple_form %} + +{{ button.primary( + sylius_test_form_attribute('update-changes-button')|merge({ + text: 'sylius.ui.update'|trans, + type: 'submit', + form: form.vars.id + }) +) }} diff --git a/templates/Admin/Form/theme.html.twig b/templates/admin/form/theme.html.twig similarity index 50% rename from templates/Admin/Form/theme.html.twig rename to templates/admin/form/theme.html.twig index 624afbeb..9f13659c 100644 --- a/templates/Admin/Form/theme.html.twig +++ b/templates/admin/form/theme.html.twig @@ -1,4 +1,4 @@ -{% extends '@SyliusUi/Form/theme.html.twig' %} +{% extends '@SyliusAdmin/shared/form_theme.html.twig' %} {% block collection_widget -%} {% from '@SyliusResource/Macros/notification.html.twig' import error %} @@ -7,10 +7,10 @@ {% apply spaceless %}
{{ error(form.vars.errors) }} @@ -25,13 +25,13 @@
{% for child in form %} - {{ self.collection_item(child, allow_delete, button_delete_label, loop.index0) }} + {{ _self.collection_item(child, allow_delete, button_delete_label, loop.index0) }} {% endfor %}
{% if prototype is defined and allow_add %} - - + + {{ ux_icon('tabler:plus') }} {{ button_add_label|trans }} {% endif %} @@ -41,17 +41,24 @@ {% macro collection_item(form, allow_delete, button_delete_label, index) %} {% apply spaceless %} -
- {{ form_widget(form) }} - {% if allow_delete %} - - {% endif %} +
+
+ {% if not form.children|length %} + {{ form_widget(form) }} + {% else %} + {{ form_rest(form) }} + {% endif %} + {% if allow_delete %} +

+ + {{ ux_icon('tabler:trash') }} + {{ button_delete_label|trans }} + +

+ {% endif %} +
{% endapply %} {% endmacro %} diff --git a/templates/admin/layout.html.twig b/templates/admin/layout.html.twig new file mode 100644 index 00000000..e6f82311 --- /dev/null +++ b/templates/admin/layout.html.twig @@ -0,0 +1,9 @@ +{% extends '@SyliusAdmin/shared/layout/base.html.twig' %} + +{% block title %}Synolia Sylius Akeneo Plugin{% endblock %} + +{% block body %} +
+ {% hook 'synolia.sylius_admin.' ~ (hook_suffix|default('akeneo')) %} +
+{% endblock %} diff --git a/templates/admin/products_configuration/content/form.html.twig b/templates/admin/products_configuration/content/form.html.twig new file mode 100644 index 00000000..8c42c907 --- /dev/null +++ b/templates/admin/products_configuration/content/form.html.twig @@ -0,0 +1,32 @@ +{% if form is not defined %} + {% set form = hookable_metadata.context.form %} + {% form_theme form '@SynoliaSyliusAkeneoPlugin/admin/form/theme.html.twig' %} +{% endif %} + +
+
+
+
+
+
+ {{ form_start(form, {'attr': {'novalidate': 'novalidate', 'id': form.vars.id}}) }} + {{ form_row(form.akeneoPriceAttribute) }} + {{ form_row(form.akeneoEnabledChannelsAttribute) }} + {{ form_row(form.importMediaFiles, {attr: { + 'data-action': 'input->synolia--sylius-akeneo-plugin--form#toggleForms' + }}) }} +
+ {{ form_row(form.akeneoImageAttributes) }} +
+
+ {{ form_row(form.productImagesMapping) }} +
+ {{ form_row(form.regenerateUrlRewrites) }} + {{ form_rest(form) }} + {{ form_end(form) }} +
+
+
+
+
+
diff --git a/templates/admin/products_configuration/content/header/breadcrumbs.html.twig b/templates/admin/products_configuration/content/header/breadcrumbs.html.twig new file mode 100644 index 00000000..3869aef6 --- /dev/null +++ b/templates/admin/products_configuration/content/header/breadcrumbs.html.twig @@ -0,0 +1,7 @@ +{% from '@SyliusAdmin/shared/helper/breadcrumbs.html.twig' import breadcrumbs %} + +{{ breadcrumbs([ + { name: 'sylius.ui.administration', url: path('sylius_admin_dashboard'), active: false }, + { name: 'sylius.ui.admin.akeneo.products.title'|trans }, + { name: 'sylius.ui.edit'|trans, active: false } +]) }} diff --git a/translations/messages.en.yml b/translations/messages.en.yml index 5f92095a..2debe163 100644 --- a/translations/messages.en.yml +++ b/translations/messages.en.yml @@ -28,7 +28,7 @@ sylius: simple: Simple advanced: Advanced advanced_filter: Advanced filter - advanced_help: The advanced filter is use to configure the request /api/rest/v1/products query, + advanced_help: The advanced filter aim to configure the request /api/rest/v1/products query, the plugin adapt the query to the products models request channel: Akeneo channel completeness_type: Completeness type diff --git a/translations/validators.en.yaml b/translations/validators.en.yaml deleted file mode 100644 index a7ee0567..00000000 --- a/translations/validators.en.yaml +++ /dev/null @@ -1,3 +0,0 @@ -synolia_sylius_akeneo_plugin: - base_url: - not_blank: Akeneo base URL cannot be blank. diff --git a/translations/validators.fr.yaml b/translations/validators.fr.yaml deleted file mode 100644 index 5ab49918..00000000 --- a/translations/validators.fr.yaml +++ /dev/null @@ -1,3 +0,0 @@ -synolia_sylius_akeneo_plugin: - base_url: - not_blank: URL base Akeneo doit être renseigné. From f9cc7d00d1c1432ae88a360eee23cf1aff634686 Mon Sep 17 00:00:00 2001 From: maxperei Date: Thu, 15 May 2025 17:46:35 +0200 Subject: [PATCH 03/20] chore(ci): [actions] bump to match latest versions --- .github/workflows/analysis.yaml | 1 + .github/workflows/sylius.yaml | 7 +++---- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/analysis.yaml b/.github/workflows/analysis.yaml index 4ca16167..c24e42d9 100644 --- a/.github/workflows/analysis.yaml +++ b/.github/workflows/analysis.yaml @@ -20,6 +20,7 @@ jobs: - 8.3 symfony: - '6.4.*' + - '7.2.*' env: APP_ENV: test steps: diff --git a/.github/workflows/sylius.yaml b/.github/workflows/sylius.yaml index 411ff0d2..cb9236bd 100644 --- a/.github/workflows/sylius.yaml +++ b/.github/workflows/sylius.yaml @@ -20,13 +20,12 @@ jobs: - 8.2 - 8.3 sylius: - - 1.12.0 - - 1.13.0 - - 1.14.0 + - 2.0.0 symfony: - 6.4 + - 7.2 node: - - 16.x + - 20.x env: APP_ENV: test package-name: synolia/sylius-akeneo-plugin From 0bc04d5ebaf9de51a3600a8d3896fc6a1b208262 Mon Sep 17 00:00:00 2001 From: maxperei Date: Thu, 15 May 2025 17:52:13 +0200 Subject: [PATCH 04/20] chore(lint): [grumphp] quality tools --- ruleset/phpstan-baseline.neon | 218 ++++++------------ ruleset/phpstan.neon | 1 - src/Controller/CategoriesController.php | 3 +- src/Controller/ProductsController.php | 3 +- .../SynoliaSyliusAkeneoExtension.php | 19 +- src/Form/Type/AttributesTypeMappingType.php | 1 - src/Form/Type/CategoriesConfigurationType.php | 1 - src/Form/Type/ProductConfigurationType.php | 1 - .../Type/ProductFilterRuleAdvancedType.php | 1 - src/Form/Type/ProductFilterRuleSimpleType.php | 1 - src/Manager/ProcessManager.php | 2 +- src/ProcessManager/ProcessManager.php | 56 +++-- .../ProcessManagerInterface.php | 8 +- 13 files changed, 121 insertions(+), 194 deletions(-) diff --git a/ruleset/phpstan-baseline.neon b/ruleset/phpstan-baseline.neon index 409e1185..378b4908 100644 --- a/ruleset/phpstan-baseline.neon +++ b/ruleset/phpstan-baseline.neon @@ -42,30 +42,6 @@ parameters: count: 1 path: ../src/Builder/Attribute/MultiSelectProductAttributeValueValueBuilder.php - - - message: '#^Cannot access constant class on mixed\.$#' - identifier: classConstant.nonObject - count: 1 - path: ../src/Builder/Attribute/ProductAttributeValueValueBuilder.php - - - - message: '#^Cannot call method build\(\) on mixed\.$#' - identifier: method.nonObject - count: 1 - path: ../src/Builder/Attribute/ProductAttributeValueValueBuilder.php - - - - message: '#^Cannot call method support\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: ../src/Builder/Attribute/ProductAttributeValueValueBuilder.php - - - - message: '#^Parameter \#2 \.\.\.\$values of function sprintf expects bool\|float\|int\|string\|null, mixed given\.$#' - identifier: argument.type - count: 1 - path: ../src/Builder/Attribute/ProductAttributeValueValueBuilder.php - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' identifier: foreach.nonIterable @@ -204,12 +180,6 @@ parameters: count: 1 path: ../src/Builder/ProductOptionValue/NonLocalizableOptionValueBuilder.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Builder\\ProductOptionValue\\ProductOptionValueBuilder\:\:\$dynamicProductOptionValueBuilders \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Builder/ProductOptionValue/ProductOptionValueBuilder.php - - message: '#^Parameter \#1 \$measureCode of method Synolia\\SyliusAkeneoPlugin\\Retriever\\FamilyMeasureRetriever\:\:getMeasurable\(\) expects string, mixed given\.$#' identifier: argument.type @@ -228,12 +198,6 @@ parameters: count: 1 path: ../src/Builder/ProductOptionValueTranslation/MetricProductOptionValueTranslationBuilder.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Builder\\ProductOptionValueTranslation\\ProductOptionValueTranslationBuilder\:\:\$productOptionValueTranslationBuilders \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Builder/ProductOptionValueTranslation/ProductOptionValueTranslationBuilder.php - - message: '#^Cannot access constant class on mixed\.$#' identifier: classConstant.nonObject @@ -270,18 +234,6 @@ parameters: count: 1 path: ../src/Command/Context/CommandContext.php - - - message: '#^Call to static method Webmozart\\Assert\\Assert\:\:isInstanceOf\(\) with Synolia\\SyliusAkeneoPlugin\\Entity\\ApiConfiguration and ''Synolia\\\\SyliusAkeneoPlugin\\\\Entity\\\\ApiConfiguration'' will always evaluate to true\.$#' - identifier: staticMethod.alreadyNarrowedType - count: 1 - path: ../src/Controller/ApiConfigurationController.php - - - - message: '#^Cannot call method add\(\) on mixed\.$#' - identifier: method.nonObject - count: 2 - path: ../src/Controller/ApiConfigurationController.php - - message: '#^Argument of an invalid type mixed supplied for foreach, only iterables are supported\.$#' identifier: foreach.nonIterable @@ -438,54 +390,12 @@ parameters: count: 3 path: ../src/Creator/AttributeCreator.php - - - message: '#^Cannot access offset ''axe_as_model'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - - message: '#^Cannot access offset ''base_url'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - - message: '#^Cannot access offset ''client_id'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - - message: '#^Cannot access offset ''client_secret'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - - message: '#^Cannot access offset ''edition'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - message: '#^Cannot access offset ''excluded_category_codes'' on mixed\.$#' identifier: offsetAccess.nonOffsetAccessible count: 1 path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - message: '#^Cannot access offset ''pagination'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - - message: '#^Cannot access offset ''password'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - message: '#^Cannot access offset ''root_category_codes'' on mixed\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -498,12 +408,6 @@ parameters: count: 1 path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - - message: '#^Cannot access offset ''username'' on mixed\.$#' - identifier: offsetAccess.nonOffsetAccessible - count: 1 - path: ../src/DependencyInjection/SynoliaSyliusAkeneoExtension.php - - message: '#^Parameter \#1 \$allowParallel of method Synolia\\SyliusAkeneoPlugin\\Configuration\\ConfigurationContextInterface\:\:setAllowParallel\(\) expects bool, mixed given\.$#' identifier: argument.type @@ -570,6 +474,12 @@ parameters: count: 1 path: ../src/Filter/ProductFilter.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:scalarNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/ApiConfigurationFixture.php + - message: '#^Cannot call method booleanNode\(\) on mixed\.$#' identifier: method.nonObject @@ -666,6 +576,12 @@ parameters: count: 1 path: ../src/Fixture/ApiConfigurationFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:booleanNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/AssociationTypesFixture.php + - message: '#^Cannot call method defaultTrue\(\) on mixed\.$#' identifier: method.nonObject @@ -696,6 +612,12 @@ parameters: count: 1 path: ../src/Fixture/AttributeAkeneoSyliusMappingFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:scalarNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/AttributeAkeneoSyliusMappingFixture.php + - message: '#^Cannot access offset ''akeneo_attribute'' on mixed\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -726,6 +648,12 @@ parameters: count: 1 path: ../src/Fixture/AttributeAkeneoSyliusMappingFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:booleanNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/AttributesFixture.php + - message: '#^Cannot call method arrayNode\(\) on mixed\.$#' identifier: method.nonObject @@ -762,12 +690,24 @@ parameters: count: 1 path: ../src/Fixture/AttributesFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:end\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/CategoriesFixture.php + - message: '#^Cannot call method end\(\) on mixed\.$#' identifier: method.nonObject count: 1 path: ../src/Fixture/CategoriesFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:end\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/CategoryConfigurationFixture.php + - message: '#^Cannot call method arrayNode\(\) on mixed\.$#' identifier: method.nonObject @@ -828,6 +768,12 @@ parameters: count: 2 path: ../src/Fixture/ProductConfigurationFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:scalarNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/ProductConfigurationFixture.php + - message: '#^Cannot access offset ''akeneo_attribute'' on mixed\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -948,6 +894,12 @@ parameters: count: 1 path: ../src/Fixture/ProductFilterConfigurationFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:enumNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/ProductFilterConfigurationFixture.php + - message: '#^Cannot call method arrayNode\(\) on mixed\.$#' identifier: method.nonObject @@ -1074,6 +1026,12 @@ parameters: count: 2 path: ../src/Fixture/ProductFilterConfigurationFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:booleanNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/ProductModelsFixture.php + - message: '#^Cannot call method arrayNode\(\) on mixed\.$#' identifier: method.nonObject @@ -1110,6 +1068,12 @@ parameters: count: 1 path: ../src/Fixture/ProductModelsFixture.php + - + message: '#^Call to an undefined method Symfony\\Component\\Config\\Definition\\Builder\\NodeParentInterface\:\:booleanNode\(\)\.$#' + identifier: method.notFound + count: 1 + path: ../src/Fixture/ProductsFixture.php + - message: '#^Cannot call method arrayNode\(\) on mixed\.$#' identifier: method.nonObject @@ -1368,6 +1332,18 @@ parameters: count: 1 path: ../src/Logger/Messages.php + - + message: '#^Argument of an invalid type object supplied for foreach, only iterables are supported\.$#' + identifier: foreach.nonIterable + count: 1 + path: ../src/Manager/Doctrine/DoctrineSortableManager.php + + - + message: '#^Method Doctrine\\Common\\EventManager\:\:getListeners\(\) invoked with 0 parameters, 1 required\.$#' + identifier: arguments.count + count: 1 + path: ../src/Manager/Doctrine/DoctrineSortableManager.php + - message: '#^Parameter \#2 \$listener of method Doctrine\\Common\\EventManager\:\:addEventListener\(\) expects object, mixed given\.$#' identifier: argument.type @@ -1375,7 +1351,7 @@ parameters: path: ../src/Manager/Doctrine/DoctrineSortableManager.php - - message: '#^Parameter \#1 \$process of method BluePsyduck\\SymfonyProcessManager\\ProcessManager\:\:addProcess\(\) expects Symfony\\Component\\Process\\Process, mixed given\.$#' + message: '#^Parameter \#1 \$process of method Synolia\\SyliusAkeneoPlugin\\ProcessManager\\ProcessManager\:\:addProcess\(\) expects Symfony\\Component\\Process\\Process, mixed given\.$#' identifier: argument.type count: 1 path: ../src/Manager/ProcessManager.php @@ -1614,12 +1590,6 @@ parameters: count: 1 path: ../src/Processor/Category/AttributeProcessor.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Processor\\Category\\CategoryProcessorChain\:\:\$categoryProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Processor/Category/CategoryProcessorChain.php - - message: '#^Parameter \#1 \$position of method Sylius\\Component\\Taxonomy\\Model\\TaxonInterface\:\:setPosition\(\) expects int\|null, mixed given\.$#' identifier: argument.type @@ -1776,12 +1746,6 @@ parameters: count: 1 path: ../src/Processor/Product/ProductChannelEnablerProcessor.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Processor\\Product\\ProductProcessorChain\:\:\$productProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Processor/Product/ProductProcessorChain.php - - message: '#^Instanceof between Sylius\\Component\\Core\\Model\\ProductTaxonInterface and Sylius\\Component\\Core\\Model\\ProductTaxonInterface will always evaluate to true\.$#' identifier: instanceof.alwaysTrue @@ -2496,12 +2460,6 @@ parameters: count: 1 path: ../src/Processor/ProductVariant/PricingProcessor.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Processor\\ProductVariant\\ProductVariantProcessorChain\:\:\$productVariantProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Processor/ProductVariant/ProductVariantProcessorChain.php - - message: '#^Parameter \#1 \$code of method Sylius\\Resource\\Model\\CodeAwareInterface\:\:setCode\(\) expects string\|null, mixed given\.$#' identifier: argument.type @@ -2616,12 +2574,6 @@ parameters: count: 1 path: ../src/Processor/Resource/ProductVariant/SimpleProductVariantResourceProcessor.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Provider\\AkeneoAttributeProcessorProvider\:\:\$akeneoAttributeProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Provider/AkeneoAttributeProcessorProvider.php - - message: '#^Cannot access offset ''data'' on mixed\.$#' identifier: offsetAccess.nonOffsetAccessible @@ -2706,18 +2658,6 @@ parameters: count: 1 path: ../src/Provider/Asset/AkeneoAssetAttributePropertiesProvider.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Provider\\ChainOptionValuesProcessorProvider\:\:\$optionValuesProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Provider/ChainOptionValuesProcessorProvider.php - - - - message: '#^Method Doctrine\\Persistence\\ObjectRepository\\:\:findOneBy\(\) invoked with 2 parameters, 1 required\.$#' - identifier: arguments.count - count: 1 - path: ../src/Provider/Configuration/Api/DatabaseApiConfigurationProvider.php - - message: '#^Method Synolia\\SyliusAkeneoPlugin\\Provider\\Configuration\\ExcludedAttributesConfiguration\:\:get\(\) should return array\ but returns array\.$#' identifier: return.type @@ -2922,18 +2862,6 @@ parameters: count: 1 path: ../src/Provider/Filter/SearchFilterProvider.php - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Provider\\ProductAttributeValue\\TableAttributeValueProcessorProvider\:\:\$tableAttributeValueProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Provider/ProductAttributeValue/TableAttributeValueProcessorProvider.php - - - - message: '#^Property Synolia\\SyliusAkeneoPlugin\\Provider\\ProductRefEntityAttributeValueValueBuilderProvider\:\:\$referenceEntityAttributeValueProcessors \(array\\) does not accept array\.$#' - identifier: assign.propertyType - count: 1 - path: ../src/Provider/ProductRefEntityAttributeValueValueBuilderProvider.php - - message: '#^Parameter \#1 \$syliusLocale of method Synolia\\SyliusAkeneoPlugin\\Provider\\SyliusAkeneoLocaleCodeProvider\:\:getAkeneoLocale\(\) expects string, mixed given\.$#' identifier: argument.type diff --git a/ruleset/phpstan.neon b/ruleset/phpstan.neon index 7cd89da7..746d6ed6 100644 --- a/ruleset/phpstan.neon +++ b/ruleset/phpstan.neon @@ -12,7 +12,6 @@ parameters: # Makes PHPStan crash - ../src/Configuration/SettingConfiguration.php - ../src/DependencyInjection/Configuration.php - - ../src/Migrations/ - ../src/Entity/ - ../tests/PHPUnit - ../src/Manager/SettingsManager.php diff --git a/src/Controller/CategoriesController.php b/src/Controller/CategoriesController.php index 6f450eb5..a86fa242 100644 --- a/src/Controller/CategoriesController.php +++ b/src/Controller/CategoriesController.php @@ -52,7 +52,8 @@ public function __invoke(Request $request): Response } return $this->render( - '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', + [ 'hook_suffix' => 'akeneo.categories', 'form' => $form, ], diff --git a/src/Controller/ProductsController.php b/src/Controller/ProductsController.php index 59a356ef..021d37d0 100644 --- a/src/Controller/ProductsController.php +++ b/src/Controller/ProductsController.php @@ -58,7 +58,8 @@ public function __invoke(Request $request): Response } return $this->render( - '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', [ + '@SynoliaSyliusAkeneoPlugin/admin/layout.html.twig', + [ 'hook_suffix' => 'akeneo.products_configuration', 'form' => $form, ], diff --git a/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php b/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php index 6b54bf44..6037129a 100644 --- a/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php +++ b/src/DependencyInjection/SynoliaSyliusAkeneoExtension.php @@ -10,14 +10,11 @@ use Symfony\Component\DependencyInjection\Extension\Extension; use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; -use Synolia\SyliusAkeneoPlugin\Controller\ApiConfigurationController; use Synolia\SyliusAkeneoPlugin\Controller\CategoriesController; -use Synolia\SyliusAkeneoPlugin\Menu\AdminApiConfigurationMenuListener; use Synolia\SyliusAkeneoPlugin\Menu\AdminCategoryMenuListener; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\ApiConnectionProviderInterface; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\CategoryConfigurationProvider; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\CategoryConfigurationProviderInterface; -use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\DatabaseApiConfigurationProvider; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\DatabaseCategoryConfigurationProvider; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\DotEnvApiConnectionProvider; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\ExcludedAttributesConfiguration; @@ -38,7 +35,7 @@ public function load(array $configs, ContainerBuilder $container): void $loader = new YamlFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config')); $loader->load('services.yaml'); - $this->processApiConfiguration($container, $config); + $this->processApiConfiguration($container); $this->processCategoryConfiguration($container, $config); $this->processLocaleMapping($container, $config); $this->processExcludedAttributes($container, $config); @@ -66,20 +63,8 @@ protected function getNamespacesOfMigrationsExecutedBefore(): array return ['Sylius\Bundle\CoreBundle\Migrations']; } - private function processApiConfiguration(ContainerBuilder $container, array $config): void + private function processApiConfiguration(ContainerBuilder $container): void { -// $dotEnvDefinition = $container->getDefinition(DotEnvApiConnectionProvider::class); -// $dotEnvDefinition -// ->setArgument('$baseUrl', $config['api_configuration']['base_url']) -// ->setArgument('$clientId', $config['api_configuration']['client_id']) -// ->setArgument('$clientSecret', $config['api_configuration']['client_secret']) -// ->setArgument('$username', $config['api_configuration']['username']) -// ->setArgument('$password', $config['api_configuration']['password']) -// ->setArgument('$edition', $config['api_configuration']['edition']) -// ->setArgument('$axeAsModel', $config['api_configuration']['axe_as_model']) -// ->setArgument('$pagination', $config['api_configuration']['pagination']) -// ; - $container->setAlias(ApiConnectionProviderInterface::class, DotEnvApiConnectionProvider::class); } diff --git a/src/Form/Type/AttributesTypeMappingType.php b/src/Form/Type/AttributesTypeMappingType.php index 27e8c2d7..4cc9d229 100644 --- a/src/Form/Type/AttributesTypeMappingType.php +++ b/src/Form/Type/AttributesTypeMappingType.php @@ -6,7 +6,6 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; diff --git a/src/Form/Type/CategoriesConfigurationType.php b/src/Form/Type/CategoriesConfigurationType.php index bd0d5fb3..ced7ea3e 100644 --- a/src/Form/Type/CategoriesConfigurationType.php +++ b/src/Form/Type/CategoriesConfigurationType.php @@ -6,7 +6,6 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; final class CategoriesConfigurationType extends AbstractType diff --git a/src/Form/Type/ProductConfigurationType.php b/src/Form/Type/ProductConfigurationType.php index 12000f1a..399ca59e 100644 --- a/src/Form/Type/ProductConfigurationType.php +++ b/src/Form/Type/ProductConfigurationType.php @@ -7,7 +7,6 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\CollectionType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; final class ProductConfigurationType extends AbstractType diff --git a/src/Form/Type/ProductFilterRuleAdvancedType.php b/src/Form/Type/ProductFilterRuleAdvancedType.php index f9d9e656..8173d110 100644 --- a/src/Form/Type/ProductFilterRuleAdvancedType.php +++ b/src/Form/Type/ProductFilterRuleAdvancedType.php @@ -6,7 +6,6 @@ use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\FormBuilderInterface; diff --git a/src/Form/Type/ProductFilterRuleSimpleType.php b/src/Form/Type/ProductFilterRuleSimpleType.php index 061c3365..fb2c5d58 100644 --- a/src/Form/Type/ProductFilterRuleSimpleType.php +++ b/src/Form/Type/ProductFilterRuleSimpleType.php @@ -10,7 +10,6 @@ use Symfony\Component\Form\Extension\Core\Type\DateType; use Symfony\Component\Form\Extension\Core\Type\HiddenType; use Symfony\Component\Form\Extension\Core\Type\IntegerType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints as Assert; use Synolia\SyliusAkeneoPlugin\Enum\ProductFilterStatusEnum; diff --git a/src/Manager/ProcessManager.php b/src/Manager/ProcessManager.php index 735f1367..e6d60523 100644 --- a/src/Manager/ProcessManager.php +++ b/src/Manager/ProcessManager.php @@ -4,8 +4,8 @@ namespace Synolia\SyliusAkeneoPlugin\Manager; -use Synolia\SyliusAkeneoPlugin\ProcessManager\ProcessManager as BluePsyduckProcessManager; use Symfony\Component\Process\Process; +use Synolia\SyliusAkeneoPlugin\ProcessManager\ProcessManager as BluePsyduckProcessManager; class ProcessManager implements ProcessManagerInterface { diff --git a/src/ProcessManager/ProcessManager.php b/src/ProcessManager/ProcessManager.php index 1897068d..72574410 100644 --- a/src/ProcessManager/ProcessManager.php +++ b/src/ProcessManager/ProcessManager.php @@ -9,68 +9,75 @@ /** * The process manager for executing multiple processes in parallel. - * - * @author BluePsyduck - * @license http://opensource.org/licenses/GPL-3.0 GPL v3 */ class ProcessManager implements ProcessManagerInterface { /** * The number of processes to run in parallel. + * * @var int */ protected $numberOfParallelProcesses; /** * The interval to wait between the polls of the processes, in milliseconds. + * * @var int */ protected $pollInterval; /** * The time to delay the start of processes to space them out, in milliseconds. + * * @var int */ protected $processStartDelay; /** * The processes currently waiting to be executed. + * * @var array, callable|null, array}> */ protected $pendingProcessData = []; /** * The processes currently running. + * * @var array> */ protected $runningProcesses = []; /** * The callback for when a process is about to be started. + * * @var callable|null */ protected $processStartCallback; /** * The callback for when a process has finished. + * * @var callable|null */ protected $processFinishCallback; /** * The callback for when a process timed out. + * * @var callable|null */ protected $processTimeoutCallback; /** * The callback for when a process is checked. + * * @var callable|null */ protected $processCheckCallback; /** * ProcessManager constructor. + * * @param int $numberOfParallelProcesses The number of processes to run in parallel. * @param int $pollInterval The interval to wait between the polls of the processes, in milliseconds. * @param int $processStartDelay The time to delay the start of processes to space them out, in milliseconds. @@ -78,7 +85,7 @@ class ProcessManager implements ProcessManagerInterface public function __construct( int $numberOfParallelProcesses = 1, int $pollInterval = 100, - int $processStartDelay = 0 + int $processStartDelay = 0, ) { $this->numberOfParallelProcesses = $numberOfParallelProcesses; $this->pollInterval = $pollInterval; @@ -87,85 +94,96 @@ public function __construct( /** * Sets the number of processes to run in parallel. - * @param int $numberOfParallelProcesses + * * @return $this */ public function setNumberOfParallelProcesses(int $numberOfParallelProcesses) { $this->numberOfParallelProcesses = $numberOfParallelProcesses; $this->executeNextPendingProcess(); // Start new processes in case we increased the limit. + return $this; } /** * Sets the interval to wait between the polls of the processes, in milliseconds. - * @param int $pollInterval + * * @return $this */ public function setPollInterval(int $pollInterval) { $this->pollInterval = $pollInterval; + return $this; } /** * Sets the time to delay the start of processes to space them out, in milliseconds. - * @param int $processStartDelay + * * @return $this */ public function setProcessStartDelay(int $processStartDelay) { $this->processStartDelay = $processStartDelay; + return $this; } /** * Sets the callback for when a process is about to be started. + * * @param callable|null $processStartCallback The callback, accepting a Process as only argument. + * * @return $this */ public function setProcessStartCallback(?callable $processStartCallback) { $this->processStartCallback = $processStartCallback; + return $this; } /** * Sets the callback for when a process has finished. + * * @param callable|null $processFinishCallback The callback, accepting a Process as only argument. + * * @return $this */ public function setProcessFinishCallback(?callable $processFinishCallback) { $this->processFinishCallback = $processFinishCallback; + return $this; } /** * Sets the callback for when a process timed out. - * @param callable|null $processTimeoutCallback + * * @return $this */ public function setProcessTimeoutCallback(?callable $processTimeoutCallback) { $this->processTimeoutCallback = $processTimeoutCallback; + return $this; } /** * Sets the callback for when a process is checked. - * @param callable|null $processCheckCallback + * * @return $this */ public function setProcessCheckCallback(?callable $processCheckCallback) { $this->processCheckCallback = $processCheckCallback; + return $this; } /** * Invokes the callback if it is an callable. - * @param callable|null $callback + * * @param Process $process */ protected function invokeCallback(?callable $callback, Process $process): void @@ -177,9 +195,10 @@ protected function invokeCallback(?callable $callback, Process $process): void /** * Adds a process to the manager. + * * @param Process $process - * @param callable|null $callback * @param array $env + * * @return $this */ public function addProcess(Process $process, callable $callback = null, array $env = []) @@ -187,6 +206,7 @@ public function addProcess(Process $process, callable $callback = null, array $e $this->pendingProcessData[] = [$process, $callback, $env]; $this->executeNextPendingProcess(); $this->checkRunningProcesses(); + return $this; } @@ -201,7 +221,7 @@ protected function executeNextPendingProcess(): void $data = array_shift($this->pendingProcessData); if ($data !== null) { [$process, $callback, $env] = $data; - /* @var Process $process */ + /** @var Process $process */ $this->invokeCallback($this->processStartCallback, $process); $process->start($callback, $env); @@ -218,12 +238,11 @@ protected function executeNextPendingProcess(): void /** * Checks whether a pending request is available and can be executed. - * @return bool */ protected function canExecuteNextPendingRequest(): bool { - return count($this->runningProcesses) < $this->numberOfParallelProcesses - && count($this->pendingProcessData) > 0; + return count($this->runningProcesses) < $this->numberOfParallelProcesses && + count($this->pendingProcessData) > 0; } /** @@ -238,7 +257,7 @@ protected function checkRunningProcesses(): void /** * Checks the process whether it has finished. - * @param int|null $pid + * * @param Process $process */ protected function checkRunningProcess(?int $pid, Process $process): void @@ -257,6 +276,7 @@ protected function checkRunningProcess(?int $pid, Process $process): void /** * Checks whether the process already timed out. + * * @param Process $process */ protected function checkProcessTimeout(Process $process): void @@ -270,6 +290,7 @@ protected function checkProcessTimeout(Process $process): void /** * Waits for all processes to be finished. + * * @return $this */ public function waitForAllProcesses() @@ -278,12 +299,12 @@ public function waitForAllProcesses() $this->sleep($this->pollInterval); $this->checkRunningProcesses(); } + return $this; } /** * Sleeps for the specified number of milliseconds. - * @param int $milliseconds */ protected function sleep(int $milliseconds): void { @@ -292,7 +313,6 @@ protected function sleep(int $milliseconds): void /** * Returns whether the manager still has unfinished processes. - * @return bool */ public function hasUnfinishedProcesses(): bool { diff --git a/src/ProcessManager/ProcessManagerInterface.php b/src/ProcessManager/ProcessManagerInterface.php index 598c4c70..d0940cfd 100644 --- a/src/ProcessManager/ProcessManagerInterface.php +++ b/src/ProcessManager/ProcessManagerInterface.php @@ -8,30 +8,28 @@ /** * The interface of the process manager. - * - * @author BluePsyduck - * @license http://opensource.org/licenses/GPL-3.0 GPL v3 */ interface ProcessManagerInterface { /** * Adds a process to the manager. + * * @param Process $process - * @param callable|null $callback * @param array $env + * * @return $this */ public function addProcess(Process $process, callable $callback = null, array $env = []); /** * Waits for all processes to be finished. + * * @return $this */ public function waitForAllProcesses(); /** * Returns whether the manager still has unfinished processes. - * @return bool */ public function hasUnfinishedProcesses(): bool; } From 717cbff648414c29914c3eba940faae4171d46b4 Mon Sep 17 00:00:00 2001 From: maxperei Date: Tue, 10 Jun 2025 09:26:11 +0200 Subject: [PATCH 05/20] fix(ci): [setup] update paths relative to install folder --- config/config.yaml | 6 ------ install/Application/config/packages/akeneo.yaml | 2 +- install/Application/config/routes/akeneo.yaml | 2 +- 3 files changed, 2 insertions(+), 8 deletions(-) diff --git a/config/config.yaml b/config/config.yaml index dd3e3d69..6805b03c 100644 --- a/config/config.yaml +++ b/config/config.yaml @@ -2,9 +2,3 @@ imports: - { resource: "resources.yaml" } - { resource: "grid.yaml" } - { resource: "twig_hooks.yaml" } - -#sylius_ui: -# events: -# sylius.admin.taxon.update.form: -# blocks: -# akeneo: '@SynoliaSyliusAkeneoPlugin/Admin/Event/taxon_attributes_edit_block.html.twig' diff --git a/install/Application/config/packages/akeneo.yaml b/install/Application/config/packages/akeneo.yaml index f35e099a..097bb82b 100644 --- a/install/Application/config/packages/akeneo.yaml +++ b/install/Application/config/packages/akeneo.yaml @@ -1,2 +1,2 @@ imports: - - { resource: "@SynoliaSyliusAkeneoPlugin/Resources/config/config.yaml" } + - { resource: "@SynoliaSyliusAkeneoPlugin/config/config.yaml" } diff --git a/install/Application/config/routes/akeneo.yaml b/install/Application/config/routes/akeneo.yaml index cb3b96ec..fcbebaf2 100644 --- a/install/Application/config/routes/akeneo.yaml +++ b/install/Application/config/routes/akeneo.yaml @@ -1,3 +1,3 @@ synolia_akeneo: - resource: "@SynoliaSyliusAkeneoPlugin/Resources/config/routes.yaml" + resource: "@SynoliaSyliusAkeneoPlugin/config/routes.yaml" prefix: '/%sylius_admin.path_name%' From 5480582751917a2a05e6708a6660cfebefe52172 Mon Sep 17 00:00:00 2001 From: maxperei Date: Tue, 10 Jun 2025 16:57:30 +0200 Subject: [PATCH 06/20] fix(ci): [deprecation] apply latest change according to doctrine/orm --- src/Repository/AssetRepository.php | 2 +- src/Task/Association/AssociateProductsTask.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Repository/AssetRepository.php b/src/Repository/AssetRepository.php index 985cd20e..32ba8d0e 100644 --- a/src/Repository/AssetRepository.php +++ b/src/Repository/AssetRepository.php @@ -31,7 +31,7 @@ public function __construct( public function cleanAssetsForProduct(ProductInterface $product): void { - $query = $this->_em + $query = $this->getEntityManager() ->createNativeQuery( 'DELETE FROM akeneo_assets_products WHERE owner_id = :product_id', new ResultSetMapping(), diff --git a/src/Task/Association/AssociateProductsTask.php b/src/Task/Association/AssociateProductsTask.php index f47b7467..be0bf63c 100644 --- a/src/Task/Association/AssociateProductsTask.php +++ b/src/Task/Association/AssociateProductsTask.php @@ -87,7 +87,7 @@ public function __invoke(PipelinePayloadInterface $payload): PipelinePayloadInte } /** @var ProductInterface|null $reference */ - $reference = $this->entityManager->getPartialReference(ProductInterface::class, $model->getId()); + $reference = $this->entityManager->getReference(ProductInterface::class, $model->getId()); if (null === $reference) { continue; From 8d71616b7553aef23df9c5323715d9df712f78e4 Mon Sep 17 00:00:00 2001 From: maxperei Date: Tue, 10 Jun 2025 16:58:15 +0200 Subject: [PATCH 07/20] fix(tests): [env] unused variables --- .../packages/test/synolia_akeneo_plugin.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install/Application/config/packages/test/synolia_akeneo_plugin.yaml b/install/Application/config/packages/test/synolia_akeneo_plugin.yaml index 752ad985..6e09fbce 100644 --- a/install/Application/config/packages/test/synolia_akeneo_plugin.yaml +++ b/install/Application/config/packages/test/synolia_akeneo_plugin.yaml @@ -10,13 +10,13 @@ parameters: synolia_sylius_akeneo: api_configuration: - base_url: '%env(resolve:SYNOLIA_AKENEO_BASE_URL)%' - client_id: '%env(resolve:SYNOLIA_AKENEO_CLIENT_ID)%' - client_secret: '%env(resolve:SYNOLIA_AKENEO_CLIENT_SECRET)%' - username: '%env(resolve:SYNOLIA_AKENEO_USERNAME)%' - password: '%env(resolve:SYNOLIA_AKENEO_PASSWORD)%' - edition: '%env(resolve:SYNOLIA_AKENEO_EDITION)%' - axe_as_model: '%env(resolve:SYNOLIA_AKENEO_AXE_AS_MODEL)%' + base_url: '%env(string:SYNOLIA_AKENEO_BASE_URL)%' + client_id: '%env(string:SYNOLIA_AKENEO_CLIENT_ID)%' + client_secret: '%env(string:SYNOLIA_AKENEO_CLIENT_SECRET)%' + username: '%env(string:SYNOLIA_AKENEO_USERNAME)%' + password: '%env(string:SYNOLIA_AKENEO_PASSWORD)%' + edition: '%env(string:SYNOLIA_AKENEO_EDITION)%' + axe_as_model: '%env(string:SYNOLIA_AKENEO_AXE_AS_MODEL)%' pagination: '%env(int:SYNOLIA_AKENEO_PAGINATION)%' category_configuration: root_category_codes: From a3bfb263d3a50814d304e5ae93950dc468ac3599 Mon Sep 17 00:00:00 2001 From: maxperei Date: Tue, 10 Jun 2025 16:59:06 +0200 Subject: [PATCH 08/20] fix(tests): [kernel] rm useless method --- tests/PHPUnit/AbstractKernelTestCase.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/tests/PHPUnit/AbstractKernelTestCase.php b/tests/PHPUnit/AbstractKernelTestCase.php index eb72e573..4c26a3ae 100644 --- a/tests/PHPUnit/AbstractKernelTestCase.php +++ b/tests/PHPUnit/AbstractKernelTestCase.php @@ -5,12 +5,7 @@ namespace Tests\Synolia\SyliusAkeneoPlugin\PHPUnit; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; -use Symfony\Component\DependencyInjection\ContainerInterface; abstract class AbstractKernelTestCase extends KernelTestCase { - protected static function getContainer(): ContainerInterface - { - return self::$kernel->getContainer(); - } } From 8e66d13ab622420bdce59e77fd16080c2fb636c3 Mon Sep 17 00:00:00 2001 From: maxperei Date: Thu, 12 Jun 2025 15:53:07 +0200 Subject: [PATCH 09/20] fix(tests): [attributes] empty array translation collection due to missing locale --- src/Entity/TaxonAttributeInterface.php | 10 +++++----- src/Entity/TaxonAttributeTranslation.php | 2 +- src/Manager/ProductOptionManager.php | 4 ++-- .../ReferenceEntityOptionValuesProcessor.php | 2 +- .../ProductOptionValue/SelectOptionValuesProcessor.php | 3 ++- .../Task/Attribute/ProcessAttributesTaskTest.php | 3 +-- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Entity/TaxonAttributeInterface.php b/src/Entity/TaxonAttributeInterface.php index d3c5d642..d666a4ac 100644 --- a/src/Entity/TaxonAttributeInterface.php +++ b/src/Entity/TaxonAttributeInterface.php @@ -5,11 +5,11 @@ namespace Synolia\SyliusAkeneoPlugin\Entity; use Sylius\Component\Attribute\Model\AttributeTranslationInterface; -use Sylius\Component\Resource\Model\CodeAwareInterface; -use Sylius\Component\Resource\Model\ResourceInterface; -use Sylius\Component\Resource\Model\TimestampableInterface; -use Sylius\Component\Resource\Model\TranslatableInterface; -use Sylius\Component\Resource\Model\TranslationInterface; +use Sylius\Resource\Model\CodeAwareInterface; +use Sylius\Resource\Model\ResourceInterface; +use Sylius\Resource\Model\TimestampableInterface; +use Sylius\Resource\Model\TranslatableInterface; +use Sylius\Resource\Model\TranslationInterface; interface TaxonAttributeInterface extends ResourceInterface, diff --git a/src/Entity/TaxonAttributeTranslation.php b/src/Entity/TaxonAttributeTranslation.php index e89aee5d..f80fcf72 100644 --- a/src/Entity/TaxonAttributeTranslation.php +++ b/src/Entity/TaxonAttributeTranslation.php @@ -8,7 +8,7 @@ use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Attribute\Model\AttributeTranslationInterface; -use Sylius\Component\Resource\Model\TranslatableInterface; +use Sylius\Resource\Model\TranslatableInterface; use Webmozart\Assert\Assert; /** diff --git a/src/Manager/ProductOptionManager.php b/src/Manager/ProductOptionManager.php index c3be41cc..d8cddab2 100644 --- a/src/Manager/ProductOptionManager.php +++ b/src/Manager/ProductOptionManager.php @@ -52,8 +52,8 @@ public function createProductOptionFromAttribute(AttributeInterface $attribute): public function updateData(AttributeInterface $attribute, ProductOptionInterface $productOption): void { - $this->updateTranslationsFromAttribute($productOption, $attribute); $this->updateProductOptionValues($productOption, $attribute); + $this->updateTranslationsFromAttribute($productOption, $attribute); } private function updateTranslationsFromAttribute( @@ -80,8 +80,8 @@ private function updateTranslationsFromAttribute( if (!$productOptionTranslation instanceof ProductOptionTranslationInterface) { /** @var ProductOptionTranslationInterface $productOptionTranslation */ $productOptionTranslation = $this->productOptionTranslationFactory->createNew(); - $productOptionTranslation->setTranslatable($productOption); $productOptionTranslation->setLocale($localeCode); + $productOptionTranslation->setTranslatable($productOption); $this->entityManager->persist($productOptionTranslation); } diff --git a/src/Processor/ProductOptionValue/ReferenceEntityOptionValuesProcessor.php b/src/Processor/ProductOptionValue/ReferenceEntityOptionValuesProcessor.php index 5f51741f..4abad63f 100644 --- a/src/Processor/ProductOptionValue/ReferenceEntityOptionValuesProcessor.php +++ b/src/Processor/ProductOptionValue/ReferenceEntityOptionValuesProcessor.php @@ -131,8 +131,8 @@ private function updateProductOptionValueTranslations( if (!$productOptionValueTranslation instanceof ProductOptionValueTranslationInterface) { /** @var ProductOptionValueTranslationInterface $productOptionValueTranslation */ $productOptionValueTranslation = $this->productOptionValueTranslationFactory->createNew(); - $productOptionValueTranslation->setTranslatable($productOptionValue); $productOptionValueTranslation->setLocale($locale); + $productOptionValueTranslation->setTranslatable($productOptionValue); $this->entityManager->persist($productOptionValueTranslation); } diff --git a/src/Processor/ProductOptionValue/SelectOptionValuesProcessor.php b/src/Processor/ProductOptionValue/SelectOptionValuesProcessor.php index dd43ff59..2a121824 100644 --- a/src/Processor/ProductOptionValue/SelectOptionValuesProcessor.php +++ b/src/Processor/ProductOptionValue/SelectOptionValuesProcessor.php @@ -68,6 +68,7 @@ public function process( /** @var ProductOptionValueInterface $productOptionValue */ $productOptionValue = $this->productOptionValueFactory->createNew(); $productOptionValue->setCode($transformedCode); + $productOptionValue->setOption($productOption); $productOption->addValue($productOptionValue); $this->entityManager->persist($productOptionValue); @@ -109,8 +110,8 @@ private function updateProductOptionValueTranslations( if (!$productOptionValueTranslation instanceof ProductOptionValueTranslationInterface) { /** @var ProductOptionValueTranslationInterface $productOptionValueTranslation */ $productOptionValueTranslation = $this->productOptionValueTranslationFactory->createNew(); - $productOptionValueTranslation->setTranslatable($productOptionValue); $productOptionValueTranslation->setLocale($locale); + $productOptionValueTranslation->setTranslatable($productOptionValue); $this->entityManager->persist($productOptionValueTranslation); } diff --git a/tests/PHPUnit/Task/Attribute/ProcessAttributesTaskTest.php b/tests/PHPUnit/Task/Attribute/ProcessAttributesTaskTest.php index dc0efd1b..b3c51db0 100644 --- a/tests/PHPUnit/Task/Attribute/ProcessAttributesTaskTest.php +++ b/tests/PHPUnit/Task/Attribute/ProcessAttributesTaskTest.php @@ -71,8 +71,7 @@ public function testCreateUpdateTask(): void /** @var \Sylius\Component\Product\Model\ProductAttribute $colorProductAttribute */ $colorProductAttribute = $this->getContainer()->get('sylius.repository.product_attribute')->findOneBy(['code' => 'color']); $this->assertNotNull($colorProductAttribute); - $this->assertEquals('Couleur', $colorProductAttribute->getTranslation('fr_FR')->getName()); - $this->assertEquals('Color', $colorProductAttribute->getTranslation('en_US')->getName()); + $this->assertProductAttributeTranslations($colorProductAttribute); } public function testCreateAttributeOptions(): void From c0a2ff9096aa5438705045262b6489f970325ce8 Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 16:58:42 +0200 Subject: [PATCH 10/20] chore(deprecation): [entity] get rid of admin api configuration --- config/resources.yaml | 4 - migrations/Version20200605081308.php | 14 -- migrations/Version20201028081617.php | 40 ---- migrations/Version20220704081604.php | 69 ------ src/Client/ClientFactory.php | 14 -- src/Client/ClientFactoryInterface.php | 4 - src/Entity/ApiConfiguration.php | 214 ------------------ src/Fixture/ApiConfigurationFixture.php | 74 ------ src/Form/Type/ApiConfigurationType.php | 54 ----- src/Payload/AbstractPayload.php | 15 -- src/Provider/ConfigurationProvider.php | 34 --- ...onfigurationToApiConnectionTransformer.php | 27 --- 12 files changed, 563 deletions(-) delete mode 100644 migrations/Version20201028081617.php delete mode 100644 migrations/Version20220704081604.php delete mode 100644 src/Entity/ApiConfiguration.php delete mode 100644 src/Fixture/ApiConfigurationFixture.php delete mode 100644 src/Form/Type/ApiConfigurationType.php delete mode 100644 src/Provider/ConfigurationProvider.php delete mode 100644 src/Transformer/Configuration/DatabaseApiConfigurationToApiConnectionTransformer.php diff --git a/config/resources.yaml b/config/resources.yaml index 4bbb6445..4ade5ead 100644 --- a/config/resources.yaml +++ b/config/resources.yaml @@ -15,10 +15,6 @@ sylius_resource: classes: model: Synolia\SyliusAkeneoPlugin\Entity\CategoryConfiguration repository: Synolia\SyliusAkeneoPlugin\Repository\CategoryConfigurationRepository - akeneo.api_configuration: - driver: doctrine/orm - classes: - model: Synolia\SyliusAkeneoPlugin\Entity\ApiConfiguration akeneo.product_configuration: driver: doctrine/orm classes: diff --git a/migrations/Version20200605081308.php b/migrations/Version20200605081308.php index 6a615bf0..4fcf1c9a 100644 --- a/migrations/Version20200605081308.php +++ b/migrations/Version20200605081308.php @@ -64,19 +64,6 @@ public function up(Schema $schema): void UNIQUE INDEX UNIQ_FF5E270FA2851109 (akeneoAttributeType), PRIMARY KEY(id) ) DEFAULT CHARACTER SET UTF8 COLLATE `UTF8_unicode_ci` ENGINE = InnoDB'); - $this->addSql('CREATE TABLE akeneo_api_configuration ( - id INT AUTO_INCREMENT NOT NULL, - baseUrl VARCHAR(255) NOT NULL, - apiClientId VARCHAR(255) NOT NULL, - apiClientSecret VARCHAR(255) NOT NULL, - token VARCHAR(255) DEFAULT NULL, - refreshToken VARCHAR(255) DEFAULT NULL, - paginationSize INT NOT NULL, - isEnterprise TINYINT(1) NOT NULL, - username VARCHAR(255) NOT NULL, - password VARCHAR(255) NOT NULL, - PRIMARY KEY(id) - ) DEFAULT CHARACTER SET UTF8 COLLATE `UTF8_unicode_ci` ENGINE = InnoDB'); $this->addSql('CREATE TABLE akeneo_api_product_filters_rules ( id INT AUTO_INCREMENT NOT NULL, mode VARCHAR(255) NOT NULL, @@ -152,7 +139,6 @@ public function down(Schema $schema): void $this->addSql('DROP TABLE akeneo_api_configuration_categories'); $this->addSql('DROP TABLE akeneo_api_configuration_product_images_mapping'); $this->addSql('DROP TABLE akeneo_attribute_type_mapping'); - $this->addSql('DROP TABLE akeneo_api_configuration'); $this->addSql('DROP TABLE akeneo_api_product_filters_rules'); $this->addSql('DROP TABLE akeneo_product_group'); $this->addSql('DROP TABLE akeneo_productgroup_product'); diff --git a/migrations/Version20201028081617.php b/migrations/Version20201028081617.php deleted file mode 100644 index 349eef25..00000000 --- a/migrations/Version20201028081617.php +++ /dev/null @@ -1,40 +0,0 @@ -abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.'); - - $this->addSql('ALTER TABLE akeneo_api_configuration DROP token, DROP refreshToken'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->abortIf('mysql' !== $this->connection->getDatabasePlatform()->getName(), 'Migration can only be executed safely on \'mysql\'.'); - - $this->addSql('ALTER TABLE - akeneo_api_configuration - ADD - token VARCHAR(255) CHARACTER SET utf8 DEFAULT NULL COLLATE `utf8_unicode_ci`, - ADD - refreshToken VARCHAR(255) CHARACTER SET utf8 DEFAULT NULL COLLATE `utf8_unicode_ci`'); - } -} diff --git a/migrations/Version20220704081604.php b/migrations/Version20220704081604.php deleted file mode 100644 index aec00810..00000000 --- a/migrations/Version20220704081604.php +++ /dev/null @@ -1,69 +0,0 @@ -addSql(\sprintf( - 'ALTER TABLE akeneo_api_configuration ADD edition VARCHAR(255) DEFAULT \'%s\' NOT NULL', - $this->getDefaultEdition(), - )); - - $this->addSql('ALTER TABLE akeneo_api_configuration DROP isEnterprise'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE akeneo_api_configuration ADD isEnterprise TINYINT(1) DEFAULT(0) NOT NULL'); - $this->addSql('ALTER TABLE akeneo_api_configuration DROP edition'); - } - - private function getDefaultEdition(): string - { - if (!\class_exists(\Synolia\SyliusAkeneoPlugin\Entity\ApiConfiguration::class)) { - return AkeneoEditionEnum::COMMUNITY; - } - - $hasIsEnterpriseColumn = $this->connection - ->executeQuery('SHOW COLUMNS FROM `akeneo_api_configuration` LIKE \'isEnterprise\'') - ->fetchAssociative() - ; - - if (!$hasIsEnterpriseColumn) { - return AkeneoEditionEnum::COMMUNITY; - } - - /** @var array $isEnterpriseArray */ - $isEnterpriseArray = $this->connection - ->executeQuery('SELECT isEnterprise FROM akeneo_api_configuration') - ->fetchAssociative() - ; - - if (!is_array($isEnterpriseArray)) { - return AkeneoEditionEnum::COMMUNITY; - } - - if (!\array_key_exists('isEnterprise', $isEnterpriseArray)) { - return AkeneoEditionEnum::COMMUNITY; - } - - return $isEnterpriseArray['isEnterprise'] ? AkeneoEditionEnum::ENTERPRISE : AkeneoEditionEnum::COMMUNITY; - } -} diff --git a/src/Client/ClientFactory.php b/src/Client/ClientFactory.php index b8b8f7ee..82ded7b5 100644 --- a/src/Client/ClientFactory.php +++ b/src/Client/ClientFactory.php @@ -6,7 +6,6 @@ use Akeneo\Pim\ApiClient\AkeneoPimClientBuilder; use Akeneo\Pim\ApiClient\AkeneoPimClientInterface; -use Synolia\SyliusAkeneoPlugin\Entity\ApiConfiguration; use Synolia\SyliusAkeneoPlugin\Provider\Configuration\Api\ApiConnectionProviderInterface; final class ClientFactory implements ClientFactoryInterface @@ -36,17 +35,4 @@ public function createFromApiCredentials(): AkeneoPimClientInterface return $this->akeneoClient; } - - /** @deprecated To be removed in 4.0. */ - public function authenticateByPassword(ApiConfiguration $apiConfiguration): AkeneoPimClientInterface - { - $client = new AkeneoPimClientBuilder($apiConfiguration->getBaseUrl() ?? ''); - - return $client->buildAuthenticatedByPassword( - $apiConfiguration->getApiClientId() ?? '', - $apiConfiguration->getApiClientSecret() ?? '', - $apiConfiguration->getUsername() ?? '', - $apiConfiguration->getPassword() ?? '', - ); - } } diff --git a/src/Client/ClientFactoryInterface.php b/src/Client/ClientFactoryInterface.php index 0bae77ef..99078588 100644 --- a/src/Client/ClientFactoryInterface.php +++ b/src/Client/ClientFactoryInterface.php @@ -5,12 +5,8 @@ namespace Synolia\SyliusAkeneoPlugin\Client; use Akeneo\Pim\ApiClient\AkeneoPimClientInterface; -use Synolia\SyliusAkeneoPlugin\Entity\ApiConfiguration; interface ClientFactoryInterface { public function createFromApiCredentials(): AkeneoPimClientInterface; - - /** @deprecated To be removed in 4.0. */ - public function authenticateByPassword(ApiConfiguration $apiConfiguration): AkeneoPimClientInterface; } diff --git a/src/Entity/ApiConfiguration.php b/src/Entity/ApiConfiguration.php deleted file mode 100644 index d58b188e..00000000 --- a/src/Entity/ApiConfiguration.php +++ /dev/null @@ -1,214 +0,0 @@ - 'ce'])] - private string $edition = AkeneoEditionEnum::COMMUNITY; - - /** - * @ORM\Column(type="string") - * - * @Assert\NotBlank - */ - #[ORM\Column(type: Types::STRING)] - private ?string $username = null; - - /** - * @ORM\Column(type="string") - * - * @Assert\NotBlank - */ - #[ORM\Column(type: Types::STRING)] - private ?string $password = null; - - public function getId(): ?int - { - return $this->id; - } - - public function getBaseUrl(): ?string - { - return $this->baseUrl; - } - - public function setBaseUrl(string $baseUrl): self - { - $this->baseUrl = $baseUrl; - - return $this; - } - - public function getApiClientId(): ?string - { - return $this->apiClientId; - } - - public function setApiClientId(string $apiClientId): self - { - $this->apiClientId = $apiClientId; - - return $this; - } - - public function getApiClientSecret(): ?string - { - return $this->apiClientSecret; - } - - public function setApiClientSecret(string $apiClientSecret): self - { - $this->apiClientSecret = $apiClientSecret; - - return $this; - } - - /** @deprecated */ - public function isEnterprise(): ?bool - { - return $this->getEdition() === AkeneoEditionEnum::ENTERPRISE; - } - - /** @deprecated Use setEdition */ - public function setIsEnterprise(bool $isEnterprise): self - { - @trigger_error('Method ' . __METHOD__ . ' is deprecated. Use setEdition() instead.', \E_USER_DEPRECATED); - - if ($isEnterprise) { - $this->setEdition(AkeneoEditionEnum::ENTERPRISE); - - return $this; - } - - $this->setEdition(AkeneoEditionEnum::COMMUNITY); - - return $this; - } - - public function getEdition(): string - { - return $this->edition; - } - - public function setEdition(string $edition): self - { - if (!\in_array($edition, AkeneoEditionEnum::getEditions(), true)) { - throw new \InvalidArgumentException(\sprintf( - 'Akeneo edition "%s" is not valid.', - $edition, - )); - } - - $this->edition = $edition; - - return $this; - } - - public function getPaginationSize(): int - { - return $this->paginationSize; - } - - public function setPaginationSize(int $paginationSize): self - { - $this->paginationSize = $paginationSize; - - return $this; - } - - public function getUsername(): ?string - { - return $this->username; - } - - public function setUsername(string $username): self - { - $this->username = $username; - - return $this; - } - - public function getPassword(): ?string - { - return $this->password; - } - - public function setPassword(string $password): self - { - $this->password = $password; - - return $this; - } -} diff --git a/src/Fixture/ApiConfigurationFixture.php b/src/Fixture/ApiConfigurationFixture.php deleted file mode 100644 index 557af62b..00000000 --- a/src/Fixture/ApiConfigurationFixture.php +++ /dev/null @@ -1,74 +0,0 @@ -apiConfigurationFactory->createNew(); - $apiConfiguration->setBaseUrl($options['base_url']); - $apiConfiguration->setApiClientId($options['api_client_id']); - $apiConfiguration->setApiClientSecret($options['api_client_secret']); - $apiConfiguration->setUsername($options['username']); - $apiConfiguration->setPassword($options['password']); - $apiConfiguration->setPaginationSize($options['pagination_size']); - $apiConfiguration->setIsEnterprise($options['is_enterprise']); - - if (null !== $options['edition']) { - $apiConfiguration->setEdition($options['edition']); - } - - $this->entityManager->persist($apiConfiguration); - $this->entityManager->flush(); - - $client = $this->clientFactory->createFromApiCredentials(); - $client->getCategoryApi()->all(1); - } - - /** - * {@inheritdoc} - */ - public function getName(): string - { - return 'akeneo_api_configuration'; - } - - protected function configureOptionsNode(ArrayNodeDefinition $optionsNode): void - { - $optionsNode - ->children() - ->scalarNode('base_url')->end() - ->scalarNode('username')->end() - ->scalarNode('password')->end() - ->scalarNode('api_client_id')->end() - ->scalarNode('api_client_secret')->end() - ->integerNode('pagination_size')->defaultValue(100)->end() - ->booleanNode('is_enterprise')->setDeprecated('The "is_enterprise" option is deprecated. Use "edition" instead.')->defaultFalse()->end() - ->scalarNode('edition')->defaultNull()->end() - ->end() - ; - } -} diff --git a/src/Form/Type/ApiConfigurationType.php b/src/Form/Type/ApiConfigurationType.php deleted file mode 100644 index 725a7ddd..00000000 --- a/src/Form/Type/ApiConfigurationType.php +++ /dev/null @@ -1,54 +0,0 @@ -add('baseUrl', TextType::class, [ - 'label' => 'sylius.ui.admin.akeneo.api_configuration.base_url', - ]) - ->add('username', TextType::class, [ - 'label' => 'sylius.ui.admin.akeneo.api_configuration.username', - ]) - ->add('password', PasswordType::class, [ - 'label' => 'sylius.ui.admin.akeneo.api_configuration.password', - ]) - ->add('apiClientId', TextType::class, [ - 'label' => 'sylius.ui.admin.akeneo.api_configuration.client_id', - ]) - ->add('apiClientSecret', TextType::class, [ - 'label' => 'sylius.ui.admin.akeneo.api_configuration.client_secret', - ]) - ->add('paginationSize', IntegerType::class, [ - 'attr' => [ - 'min' => ApiConfiguration::MIN_AKENEO_PAGINATION_SIZE, - 'max' => ApiConfiguration::MAX_AKENEO_PAGINATION_SIZE, - ], - ]) - ->add('edition', AkeneoEditionChoiceType::class) - ->add('testCredentials', SubmitType::class, [ - 'attr' => ['class' => 'ui secondary button'], - ]) - ->add('submit', SubmitType::class, [ - 'label' => 'sylius.ui.save', - 'attr' => ['class' => 'ui primary button'], - ]) - ; - } -} diff --git a/src/Payload/AbstractPayload.php b/src/Payload/AbstractPayload.php index 48f84759..272c259c 100644 --- a/src/Payload/AbstractPayload.php +++ b/src/Payload/AbstractPayload.php @@ -9,15 +9,12 @@ use ReflectionException; use Synolia\SyliusAkeneoPlugin\Command\Context\CommandContextInterface; use Synolia\SyliusAkeneoPlugin\Configuration\ConfigurationContextTrait; -use Synolia\SyliusAkeneoPlugin\Entity\ApiConfiguration; use Synolia\SyliusAkeneoPlugin\Exceptions\Payload\CommandContextIsNullException; abstract class AbstractPayload implements PipelinePayloadInterface { use ConfigurationContextTrait; - protected ApiConfiguration $apiConfiguration; - protected array $ids = []; protected string $tmpTableName; @@ -57,18 +54,6 @@ public function getType(): string } } - public function getApiConfiguration(): ApiConfiguration - { - return $this->apiConfiguration; - } - - public function setApiConfiguration(ApiConfiguration $apiConfiguration): self - { - $this->apiConfiguration = $apiConfiguration; - - return $this; - } - /** * @throws CommandContextIsNullException */ diff --git a/src/Provider/ConfigurationProvider.php b/src/Provider/ConfigurationProvider.php deleted file mode 100644 index 713758f8..00000000 --- a/src/Provider/ConfigurationProvider.php +++ /dev/null @@ -1,34 +0,0 @@ -configuration instanceof ApiConfiguration) { - return $this->configuration; - } - - $configuration = $this->apiConfigurationRepository->findOneBy([], ['id' => 'DESC']); - if (!$configuration instanceof ApiConfiguration) { - throw new Exception('The API is not configured in the admin section.'); - } - - $this->configuration = $configuration; - - return $this->configuration; - } -} diff --git a/src/Transformer/Configuration/DatabaseApiConfigurationToApiConnectionTransformer.php b/src/Transformer/Configuration/DatabaseApiConfigurationToApiConnectionTransformer.php deleted file mode 100644 index fd693f8e..00000000 --- a/src/Transformer/Configuration/DatabaseApiConfigurationToApiConnectionTransformer.php +++ /dev/null @@ -1,27 +0,0 @@ -getBaseUrl() ?? '', - $configuration->getUsername() ?? '', - $configuration->getPassword() ?? '', - $configuration->getApiClientId() ?? '', - $configuration->getApiClientSecret() ?? '', - $configuration->getEdition(), - AkeneoAxesEnum::FIRST, - $configuration->getPaginationSize(), - ); - } -} From b7e2b913106bccf8aa7eba9dd64edafda531e5b1 Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:09:26 +0200 Subject: [PATCH 11/20] chore(entity): [apip] use proper attribute for api resource metadata and clean annotations --- src/Entity/Asset.php | 44 ++---------------------- src/Entity/TaxonAttribute.php | 35 ++----------------- src/Entity/TaxonAttributeTranslation.php | 37 +++----------------- src/Entity/TaxonAttributeValue.php | 43 +++-------------------- 4 files changed, 14 insertions(+), 145 deletions(-) diff --git a/src/Entity/Asset.php b/src/Entity/Asset.php index 81c1f93d..0f04dd95 100644 --- a/src/Entity/Asset.php +++ b/src/Entity/Asset.php @@ -4,7 +4,7 @@ namespace Synolia\SyliusAkeneoPlugin\Entity; -use ApiPlatform\Core\Annotation\ApiResource; +use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\ArrayCollection; use Doctrine\Common\Collections\Collection; use Doctrine\DBAL\Types\Types; @@ -13,87 +13,47 @@ use Sylius\Component\Core\Model\ProductVariantInterface; use Synolia\SyliusAkeneoPlugin\Repository\AssetRepository; -/** - * @ApiResource() - * - * @ORM\Entity(repositoryClass="Synolia\SyliusAkeneoPlugin\Repository\AssetRepository") - * - * @ORM\Table(name="akeneo_assets") - */ +#[ApiResource] #[ORM\Entity(repositoryClass: AssetRepository::class)] #[ORM\Table(name: 'akeneo_assets')] #[ORM\Index(columns: ['family_code', 'asset_code', 'attribute_code'], name: 'asset_idx')] class Asset implements AssetInterface { - /** - * @ORM\Id - * - * @ORM\GeneratedValue - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private ?int $id = null; - /** @ORM\Column(name="family_code", type="string", length=255) */ #[ORM\Column(name: 'family_code', type: Types::STRING, length: 255)] private string $familyCode; - /** @ORM\Column(name="asset_code", type="string", length=255) */ #[ORM\Column(name: 'asset_code', type: Types::STRING, length: 255)] private string $assetCode; - /** @ORM\Column(name="attribute_code", type="string", length=255) */ #[ORM\Column(name: 'attribute_code', type: Types::STRING, length: 255)] private string $attributeCode; - /** @ORM\Column(type="string", length=255) */ #[ORM\Column(type: Types::STRING, length: 255)] private string $type; - /** @ORM\Column(type="string", length=255) */ #[ORM\Column(type: Types::STRING, length: 255)] private string $locale; - /** @ORM\Column(type="string", length=255) */ #[ORM\Column(type: Types::STRING, length: 255)] private string $scope; - /** - * @var Collection|ProductInterface[] - * - * @ORM\ManyToMany(targetEntity=ProductInterface::class, inversedBy="assets") - * - * @ORM\JoinTable(name="akeneo_assets_products", - * joinColumns={@ORM\JoinColumn(name="asset_id", referencedColumnName="id")}, - * inverseJoinColumns={@ORM\JoinColumn(name="owner_id", referencedColumnName="id", onDelete="CASCADE")}, - * ) - */ #[ORM\ManyToMany(targetEntity: ProductInterface::class, inversedBy: 'assets')] #[ORM\JoinTable(name: 'akeneo_assets_products')] #[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id')] #[ORM\InverseJoinColumn(name: 'owner_id', referencedColumnName: 'id', onDelete: 'CASCADE')] private Collection $owner; - /** - * @var Collection|ProductVariantInterface[] - * - * @ORM\ManyToMany(targetEntity=ProductVariantInterface::class, inversedBy="assets") - * - * @ORM\JoinTable(name="akeneo_assets_product_variants", - * joinColumns={@ORM\JoinColumn(name="asset_id", referencedColumnName="id")}, - * inverseJoinColumns={@ORM\JoinColumn(name="variant_id", referencedColumnName="id", onDelete="CASCADE")} - * ) - */ #[ORM\ManyToMany(targetEntity: ProductVariantInterface::class, inversedBy: 'assets')] #[ORM\JoinTable(name: 'akeneo_assets_product_variants')] #[ORM\JoinColumn(name: 'asset_id', referencedColumnName: 'id')] #[ORM\InverseJoinColumn(name: 'variant_id', referencedColumnName: 'id', onDelete: 'CASCADE')] private Collection $productVariants; - /** @ORM\Column(type="json") */ #[ORM\Column(type: Types::JSON)] private array $content = []; diff --git a/src/Entity/TaxonAttribute.php b/src/Entity/TaxonAttribute.php index 503ccf6c..ac949222 100644 --- a/src/Entity/TaxonAttribute.php +++ b/src/Entity/TaxonAttribute.php @@ -4,7 +4,7 @@ namespace Synolia\SyliusAkeneoPlugin\Entity; -use ApiPlatform\Core\Annotation\ApiResource; +use ApiPlatform\Metadata\ApiResource; use Doctrine\Common\Collections\Collection; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; @@ -13,15 +13,8 @@ use Sylius\Component\Product\Model\ProductTranslationInterface; use Sylius\Component\Resource\Model\TranslatableTrait; -/** - * @ApiResource() - * - * @ORM\Entity() - * - * @ORM\Table(name="akeneo_taxon_attributes") - */ -#[ApiResource()] -#[ORM\Entity()] +#[ApiResource] +#[ORM\Entity] #[ORM\Table(name: 'akeneo_taxon_attributes')] class TaxonAttribute implements TaxonAttributeInterface, \Stringable { @@ -30,57 +23,35 @@ class TaxonAttribute implements TaxonAttributeInterface, \Stringable TranslatableTrait::getTranslation as private doGetTranslation; } - /** - * @ORM\Id - * - * @ORM\GeneratedValue - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] protected ?int $id = null; - /** @ORM\Column(name="code", type="string", length=255, unique=true) */ #[ORM\Column(name: 'code', type: Types::STRING, length: 255, unique: true)] protected string $code = ''; - /** @ORM\Column(name="type", type="string", length=255) */ #[ORM\Column(name: 'type', type: Types::STRING, length: 255)] protected string $type = TextAttributeType::TYPE; - /** @ORM\Column(name="configuration", type="array") */ #[ORM\Column(name: 'configuration', type: Types::ARRAY)] protected array $configuration = []; - /** @ORM\Column(name="storage_type", type="string", length=255) */ #[ORM\Column(name: 'storage_type', type: Types::STRING, length: 255)] protected string $storageType = ''; - /** @ORM\Column(name="position", type="integer") */ #[ORM\Column(name: 'position', type: Types::INTEGER)] protected int $position = 0; - /** @ORM\Column(name="translatable", type="boolean") */ #[ORM\Column(name: 'translatable', type: Types::BOOLEAN)] protected bool $translatable = true; - /** @ORM\Column(name="created_at", type="datetime", nullable=true) */ #[ORM\Column(name: 'created_at', type: Types::DATETIME_MUTABLE, nullable: true)] protected ?\DateTimeInterface $createdAt; - /** @ORM\Column(name="updated_at", type="datetime", nullable=true) */ #[ORM\Column(name: 'updated_at', type: Types::DATETIME_MUTABLE, nullable: true)] protected ?\DateTimeInterface $updatedAt; - /** @ORM\OneToMany( - * targetEntity="TaxonAttributeValue", - * mappedBy="attribute" , - * cascade={"persist", "remove"}, - * orphanRemoval=true - * ) - */ #[ORM\OneToMany( targetEntity: 'TaxonAttributeValue', mappedBy: 'attribute', diff --git a/src/Entity/TaxonAttributeTranslation.php b/src/Entity/TaxonAttributeTranslation.php index f80fcf72..699e5e46 100644 --- a/src/Entity/TaxonAttributeTranslation.php +++ b/src/Entity/TaxonAttributeTranslation.php @@ -4,63 +4,36 @@ namespace Synolia\SyliusAkeneoPlugin\Entity; -use ApiPlatform\Core\Annotation\ApiResource; +use ApiPlatform\Metadata\ApiResource; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Attribute\Model\AttributeTranslationInterface; use Sylius\Resource\Model\TranslatableInterface; use Webmozart\Assert\Assert; -/** - * @ApiResource() - * - * @ORM\Entity() - * - * @ORM\Table( - * name="akeneo_taxon_attribute_translations", - * uniqueConstraints={@ORM\UniqueConstraint(name="attribute_translation", columns={"translatable_id", "locale"})} - * ) - */ -#[ApiResource()] -#[ORM\Entity()] +#[ApiResource] +#[ORM\Entity] #[ORM\Table(name: 'akeneo_taxon_attribute_translations')] #[ORM\UniqueConstraint(name: 'attribute_translation', columns: ['translatable_id', 'locale'])] class TaxonAttributeTranslation implements AttributeTranslationInterface { - /** - * @ORM\Id - * - * @ORM\GeneratedValue - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] protected ?int $id = null; - /** @ORM\Column(name="name", type="string", length=255) */ #[ORM\Column(name: 'name', type: Types::STRING, length: 255)] protected string $name = ''; - /** @ORM\Column(name="locale", type="string", length=255) */ #[ORM\Column(name: 'locale', type: Types::STRING, length: 255)] protected ?string $locale = null; - /** - * @ORM\ManyToOne( - * targetEntity="TaxonAttribute", - * inversedBy="translations", - * cascade={"persist", "remove"} - * ) - * - * @ORM\JoinColumn(nullable=true) - */ #[ORM\ManyToOne( targetEntity: 'TaxonAttribute', - inversedBy: 'translations', cascade: ['persist', 'remove'], + inversedBy: 'translations', )] + #[ORM\JoinColumn(nullable: true)] protected ?TranslatableInterface $translatable = null; diff --git a/src/Entity/TaxonAttributeValue.php b/src/Entity/TaxonAttributeValue.php index 9c810d8a..027c38a2 100644 --- a/src/Entity/TaxonAttributeValue.php +++ b/src/Entity/TaxonAttributeValue.php @@ -4,7 +4,7 @@ namespace Synolia\SyliusAkeneoPlugin\Entity; -use ApiPlatform\Core\Annotation\ApiResource; +use ApiPlatform\Metadata\ApiResource; use DateTimeInterface; use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; @@ -13,81 +13,46 @@ use Synolia\SyliusAkeneoPlugin\Component\TaxonAttribute\Model\TaxonAttributeSubjectInterface; use Webmozart\Assert\Assert; -/** - * @ApiResource() - * - * @ORM\Entity() - * - * @ORM\Table( - * name="akeneo_taxon_attribute_values", - * uniqueConstraints={@ORM\UniqueConstraint(name="attribute_value", columns={"subject_id", "attribute_id", "locale_code"})} - * ) - */ -#[ApiResource()] -#[ORM\Entity()] +#[ApiResource] +#[ORM\Entity] #[ORM\Table(name: 'akeneo_taxon_attribute_values')] #[ORM\UniqueConstraint(name: 'attribute_value', columns: ['subject_id', 'attribute_id', 'locale_code'])] class TaxonAttributeValue implements TaxonAttributeValueInterface, ResourceInterface { - /** - * @ORM\Id - * - * @ORM\GeneratedValue - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] protected ?int $id = null; - /** - * @ORM\ManyToOne(targetEntity="\Sylius\Component\Core\Model\TaxonInterface", inversedBy="attributes", cascade={"persist", "remove"}) - * - * @ORM\JoinColumn(nullable=true) - */ - #[ORM\ManyToOne(targetEntity: TaxonInterface::class, inversedBy: 'attributes', cascade: ['persist', 'remove'])] + #[ORM\ManyToOne(targetEntity: TaxonInterface::class, cascade: ['persist', 'remove'], inversedBy: 'attributes')] #[ORM\JoinColumn(nullable: true)] protected ?TaxonInterface $subject; - /** - * @ORM\ManyToOne(targetEntity="TaxonAttribute", inversedBy="values") - * - * @ORM\JoinColumn(nullable=false) - */ #[ORM\ManyToOne(targetEntity: 'TaxonAttribute', inversedBy: 'values')] #[ORM\JoinColumn(nullable: false)] protected TaxonAttributeInterface $attribute; - /** @ORM\Column(name="locale_code", type="string", length=255, nullable=true) */ #[ORM\Column(name: 'locale_code', type: Types::STRING, length: 255, nullable: true)] protected ?string $localeCode; - /** @ORM\Column(name="text_value", type="text", nullable=true) */ #[ORM\Column(name: 'text_value', type: Types::TEXT, nullable: true)] private ?string $text; - /** @ORM\Column(name="boolean_value", type="boolean", nullable=true) */ #[ORM\Column(name: 'boolean_value', type: Types::BOOLEAN, nullable: true)] private ?bool $boolean; - /** @ORM\Column(name="integer_value", type="integer", nullable=true) */ #[ORM\Column(name: 'integer_value', type: Types::INTEGER, nullable: true)] private ?int $integer; - /** @ORM\Column(name="float_value", type="float", nullable=true) */ #[ORM\Column(name: 'float_value', type: Types::FLOAT, nullable: true)] private ?float $float; - /** @ORM\Column(name="datetime_value", type="datetime", nullable=true) */ #[ORM\Column(name: 'datetime_value', type: Types::DATETIME_MUTABLE, nullable: true)] private ?\DateTimeInterface $datetime; - /** @ORM\Column(name="date_value", type="date", nullable=true) */ #[ORM\Column(name: 'date_value', type: Types::DATE_MUTABLE, nullable: true)] private ?DateTimeInterface $date; - /** @ORM\Column(name="json_value", type="json", nullable=true) */ #[ORM\Column(name: 'json_value', type: Types::JSON, nullable: true)] private ?array $json; From 1c21f66e239fd3c546659de77b4743acefbd4203 Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:15:10 +0200 Subject: [PATCH 12/20] chore(entity): [orm] get rid of annotations --- README.md | 12 ------ src/Entity/AttributeAkeneoSyliusMapping.php | 16 -------- src/Entity/AttributeTypeMapping.php | 19 --------- src/Entity/CategoryConfiguration.php | 25 ------------ src/Entity/ProductConfiguration.php | 39 +------------------ ...oductConfigurationAkeneoImageAttribute.php | 28 +------------ .../ProductConfigurationImageMapping.php | 35 ++--------------- src/Entity/ProductFiltersRules.php | 34 ---------------- src/Entity/ProductGroup.php | 33 +--------------- src/Entity/ProductVariantAssetTrait.php | 1 - src/Entity/Setting.php | 18 --------- src/Entity/TaxonAttributeValue.php | 2 +- src/Entity/TaxonAttributesTrait.php | 7 ---- 13 files changed, 10 insertions(+), 259 deletions(-) diff --git a/README.md b/README.md index 0f05c6e1..1f8e53b5 100644 --- a/README.md +++ b/README.md @@ -82,10 +82,6 @@ use Sylius\Component\Product\Model\ProductTranslationInterface; use Synolia\SyliusAkeneoPlugin\Entity\ProductAssetTrait; - /** - * @ORM\Entity - * @ORM\Table(name="sylius_product") - */ #[ORM\Entity] #[ORM\Table(name: 'sylius_product')] class Product extends BaseProduct @@ -119,10 +115,6 @@ use Sylius\Component\Product\Model\ProductVariantTranslationInterface; use Synolia\SyliusAkeneoPlugin\Entity\ProductVariantAssetTrait; - /** - * @ORM\Entity - * @ORM\Table(name="sylius_product_variant") - */ #[ORM\Entity] #[ORM\Table(name: 'sylius_product_variant')] class ProductVariant extends BaseProductVariant @@ -158,10 +150,6 @@ use Synolia\SyliusAkeneoPlugin\Component\TaxonAttribute\Model\TaxonAttributeSubjectInterface; use Synolia\SyliusAkeneoPlugin\Entity\TaxonAttributesTrait; - /** - * @ORM\Entity - * @ORM\Table(name="sylius_taxon") - */ #[ORM\Entity] #[ORM\Table(name: 'sylius_taxon')] class Taxon extends BaseTaxon implements TaxonAttributeSubjectInterface diff --git a/src/Entity/AttributeAkeneoSyliusMapping.php b/src/Entity/AttributeAkeneoSyliusMapping.php index c7f2eaa4..d308a7da 100644 --- a/src/Entity/AttributeAkeneoSyliusMapping.php +++ b/src/Entity/AttributeAkeneoSyliusMapping.php @@ -8,34 +8,18 @@ use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Resource\Model\ResourceInterface; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_attribute_akeneo_sylius_mapping") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_attribute_akeneo_sylius_mapping')] class AttributeAkeneoSyliusMapping implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue(strategy="AUTO") - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue(strategy: 'AUTO')] #[ORM\Column(type: Types::INTEGER)] private $id; - /** @ORM\Column(type="string") */ #[ORM\Column(type: Types::STRING)] private ?string $akeneoAttribute = null; - /** @ORM\Column(type="string") */ #[ORM\Column(type: Types::STRING)] private ?string $syliusAttribute = null; diff --git a/src/Entity/AttributeTypeMapping.php b/src/Entity/AttributeTypeMapping.php index 666a6eab..904d6395 100644 --- a/src/Entity/AttributeTypeMapping.php +++ b/src/Entity/AttributeTypeMapping.php @@ -8,40 +8,21 @@ use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Resource\Model\ResourceInterface; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_attribute_type_mapping") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_attribute_type_mapping')] class AttributeTypeMapping implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue(strategy="AUTO") - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue(strategy: 'AUTO')] #[ORM\Column(type: Types::INTEGER)] private $id; - /** @ORM\Column(type="string", unique=true) */ #[ORM\Column(type: Types::STRING, unique: true)] private ?string $akeneoAttributeType = null; - /** @ORM\Column(type="string") */ #[ORM\Column(type: Types::STRING)] private ?string $attributeType = null; - /** - * {@inheritdoc} - */ public function getId(): ?int { return $this->id; diff --git a/src/Entity/CategoryConfiguration.php b/src/Entity/CategoryConfiguration.php index 9534312c..04a80f74 100644 --- a/src/Entity/CategoryConfiguration.php +++ b/src/Entity/CategoryConfiguration.php @@ -9,46 +9,21 @@ use Sylius\Component\Resource\Model\ResourceInterface; use Synolia\SyliusAkeneoPlugin\Repository\CategoryConfigurationRepository; -/** - * @ORM\Entity(repositoryClass="Synolia\SyliusAkeneoPlugin\Repository\CategoryConfigurationRepository") - * - * @ORM\Table("akeneo_api_configuration_categories") - */ #[ORM\Entity(repositoryClass: CategoryConfigurationRepository::class)] #[ORM\Table(name: 'akeneo_api_configuration_categories')] class CategoryConfiguration implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue(strategy="AUTO") - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue(strategy: 'AUTO')] #[ORM\Column(type: Types::INTEGER)] private $id; - /** - * @var array - * - * @ORM\Column(type="array") - */ #[ORM\Column(type: Types::ARRAY)] private array $notImportCategories = []; - /** - * @var array - * - * @ORM\Column(type="array") - */ #[ORM\Column(type: Types::ARRAY)] private array $rootCategories = []; - /** @ORM\Column(type="boolean") */ #[ORM\Column(type: Types::BOOLEAN)] private bool $useAkeneoPositions = false; diff --git a/src/Entity/ProductConfiguration.php b/src/Entity/ProductConfiguration.php index e3187622..29de30bf 100644 --- a/src/Entity/ProductConfiguration.php +++ b/src/Entity/ProductConfiguration.php @@ -11,78 +11,43 @@ use Sylius\Component\Resource\Model\ResourceInterface; use Synolia\SyliusAkeneoPlugin\Repository\ProductConfigurationRepository; -/** - * @ORM\Entity(repositoryClass="Synolia\SyliusAkeneoPlugin\Repository\ProductConfigurationRepository") - * - * @ORM\Table("akeneo_api_configuration_product") - */ #[ORM\Entity(repositoryClass: ProductConfigurationRepository::class)] #[ORM\Table(name: 'akeneo_api_configuration_product')] class ProductConfiguration implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue() - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private $id; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $akeneoPriceAttribute = null; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $akeneoEnabledChannelsAttribute = null; - /** @ORM\Column(type="array", nullable=true) */ #[ORM\Column(type: Types::ARRAY, nullable: true)] private ?array $attributeMapping = null; - /** @ORM\Column(type="boolean", nullable=true) */ #[ORM\Column(type: Types::BOOLEAN, nullable: true)] private ?bool $importMediaFiles = null; - /** - * @ORM\OneToMany( - * targetEntity="ProductConfigurationAkeneoImageAttribute", - * mappedBy="productConfiguration", - * orphanRemoval=true, - * cascade={"persist"} - * ) - */ #[ORM\OneToMany( targetEntity: ProductConfigurationAkeneoImageAttribute::class, mappedBy: 'productConfiguration', - orphanRemoval: true, cascade: ['persist'], + orphanRemoval: true, )] private Collection $akeneoImageAttributes; - /** - * @ORM\OneToMany( - * targetEntity="ProductConfigurationImageMapping", - * mappedBy="productConfiguration", - * orphanRemoval=true, - * cascade={"persist"} - * ) - */ #[ORM\OneToMany( targetEntity: ProductConfigurationImageMapping::class, mappedBy: 'productConfiguration', - orphanRemoval: true, cascade: ['persist'], + orphanRemoval: true, )] private Collection $productImagesMapping; - /** @ORM\Column(type="boolean", nullable=true) */ #[ORM\Column(type: Types::BOOLEAN, nullable: true)] private ?bool $regenerateUrlRewrites = null; diff --git a/src/Entity/ProductConfigurationAkeneoImageAttribute.php b/src/Entity/ProductConfigurationAkeneoImageAttribute.php index 1fda7739..8d4fe85c 100644 --- a/src/Entity/ProductConfigurationAkeneoImageAttribute.php +++ b/src/Entity/ProductConfigurationAkeneoImageAttribute.php @@ -7,48 +7,24 @@ use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Resource\Model\ResourceInterface; -use Symfony\Component\Serializer\Annotation\SerializedName; +use Symfony\Component\Serializer\Attribute\SerializedName; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_api_configuration_product_akeneo_image_attribute") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_api_configuration_product_akeneo_image_attribute')] class ProductConfigurationAkeneoImageAttribute implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue() - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private $id; - /** - * @SerializedName("akeneo_attributes") - * - * @ORM\Column(type="string", length=255) - */ #[SerializedName('akeneo_attributes')] #[ORM\Column(type: Types::STRING, length: 255)] private ?string $akeneoAttributes = null; - /** - * @ORM\ManyToOne(targetEntity="ProductConfiguration", inversedBy="akeneoImageAttributes") - * - * @ORM\JoinColumn(nullable=false) - */ #[ORM\ManyToOne(targetEntity: ProductConfiguration::class, inversedBy: 'akeneoImageAttributes')] #[ORM\JoinColumn(nullable: false)] - private ?\Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration $productConfiguration = null; + private ?ProductConfiguration $productConfiguration = null; public function getId(): ?int { diff --git a/src/Entity/ProductConfigurationImageMapping.php b/src/Entity/ProductConfigurationImageMapping.php index b5374e31..52971ef9 100644 --- a/src/Entity/ProductConfigurationImageMapping.php +++ b/src/Entity/ProductConfigurationImageMapping.php @@ -7,55 +7,28 @@ use Doctrine\DBAL\Types\Types; use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Resource\Model\ResourceInterface; -use Symfony\Component\Serializer\Annotation\SerializedName; +use Symfony\Component\Serializer\Attribute\SerializedName; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_api_configuration_product_images_mapping") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_api_configuration_product_images_mapping')] class ProductConfigurationImageMapping implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue() - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private $id; - /** - * @SerializedName("sylius_attribute") - * - * @ORM\Column(type="string", length=255) - */ + #[SerializedName('sylius_attribute')] #[ORM\Column(type: Types::STRING, length: 255)] private ?string $syliusAttribute = null; - /** - * @SerializedName("akeneo_attribute") - * - * @ORM\Column(type="string", length=255) - */ + #[SerializedName('akeneo_attribute')] #[ORM\Column(type: Types::STRING, length: 255)] private ?string $akeneoAttribute = null; - /** - * @ORM\ManyToOne(targetEntity="ProductConfiguration", inversedBy="productImagesMapping") - * - * @ORM\JoinColumn(nullable=false) - */ #[ORM\ManyToOne(targetEntity: ProductConfiguration::class, inversedBy: 'productImagesMapping')] #[ORM\JoinColumn(nullable: false)] - private ?\Synolia\SyliusAkeneoPlugin\Entity\ProductConfiguration $productConfiguration = null; + private ?ProductConfiguration $productConfiguration = null; public function getId(): ?int { diff --git a/src/Entity/ProductFiltersRules.php b/src/Entity/ProductFiltersRules.php index 95e4d0b6..c8c70ff7 100644 --- a/src/Entity/ProductFiltersRules.php +++ b/src/Entity/ProductFiltersRules.php @@ -9,82 +9,48 @@ use Sylius\Component\Resource\Model\ResourceInterface; use Synolia\SyliusAkeneoPlugin\Repository\ProductFiltersRulesRepository; -/** - * @ORM\Entity(repositoryClass="Synolia\SyliusAkeneoPlugin\Repository\ProductFiltersRulesRepository") - * - * @ORM\Table("akeneo_api_product_filters_rules") - */ #[ORM\Entity(repositoryClass: ProductFiltersRulesRepository::class)] #[ORM\Table(name: 'akeneo_api_product_filters_rules')] class ProductFiltersRules implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue() - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private $id; - /** @ORM\Column(type="string", length=255) */ #[ORM\Column(type: Types::STRING, length: 255)] private ?string $mode = null; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $advancedFilter = null; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $completenessType = null; - /** - * @var array - * - * @ORM\Column(type="array") - */ #[ORM\Column(type: Types::ARRAY)] private $locales = []; - /** @ORM\Column(type="integer") */ #[ORM\Column(type: Types::INTEGER)] private int $completenessValue = 100; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $status = null; - /** @ORM\Column(type="string", length=255, nullable=true) */ #[ORM\Column(type: Types::STRING, length: 255, nullable: true)] private ?string $updatedMode = null; - /** @ORM\Column(type="datetime") */ #[ORM\Column(type: Types::DATETIME_MUTABLE)] private \DateTime|\DateTimeInterface $updatedBefore; - /** @ORM\Column(type="datetime") */ #[ORM\Column(type: Types::DATETIME_MUTABLE)] private \DateTime|\DateTimeInterface $updatedAfter; - /** @ORM\Column(type="integer", nullable=true) */ #[ORM\Column(type: Types::INTEGER, nullable: true)] private ?int $updated = null; - /** - * @var array - * - * @ORM\Column(type="array") - */ #[ORM\Column(type: Types::ARRAY)] private $excludeFamilies = []; - /** @ORM\Column(type="string") */ #[ORM\Column(type: Types::STRING)] private string $channel = ''; diff --git a/src/Entity/ProductGroup.php b/src/Entity/ProductGroup.php index 37c422a6..85e54dba 100644 --- a/src/Entity/ProductGroup.php +++ b/src/Entity/ProductGroup.php @@ -13,43 +13,22 @@ use Doctrine\ORM\Mapping\JoinTable; use Sylius\Component\Core\Model\ProductInterface; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_product_group") - * - * @IgnoreAnnotation("ORM\InverseJoinColumn") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_product_group')] class ProductGroup implements ProductGroupInterface { - /** - * @ORM\Id() - * - * @ORM\GeneratedValue() - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column(type: Types::INTEGER)] private ?int $id = null; - /** - * @ORM\ManyToOne(targetEntity="Synolia\SyliusAkeneoPlugin\Entity\ProductGroupInterface") - * - * @ORM\JoinColumn(referencedColumnName="id", nullable=true, onDelete="CASCADE") - */ #[ORM\ManyToOne(targetEntity: ProductGroupInterface::class)] #[ORM\JoinColumn(referencedColumnName: 'id', nullable: true, onDelete: 'CASCADE')] private ?ProductGroupInterface $parent = null; - /** @ORM\Column(type="string", length=255, nullable=false, unique=true) */ - #[ORM\Column(type: Types::STRING, length: 255, nullable: false, unique: true)] + #[ORM\Column(type: Types::STRING, length: 255, unique: true, nullable: false)] private string $model; - /** @ORM\Column(type="array") */ #[ORM\Column(type: Types::ARRAY)] private array $variationAxes = []; @@ -61,22 +40,12 @@ class ProductGroup implements ProductGroupInterface #[ORM\Column(type: Types::STRING)] private string $familyVariant = ''; - /** - * @ORM\ManyToMany(targetEntity="Sylius\Component\Core\Model\ProductInterface") - * - * @ORM\JoinTable(name="akeneo_productgroup_product") - * - * @ORM\JoinColumn(name="product_id", referencedColumnName="id") - * - * @ORM\InverseJoinColumn(name="productgroup_id", referencedColumnName="id") - */ #[JoinTable(name: 'akeneo_productgroup_product')] #[JoinColumn(name: 'product_id', referencedColumnName: 'id')] #[InverseJoinColumn(name: 'productgroup_id', referencedColumnName: 'id')] #[ORM\ManyToMany(targetEntity: ProductInterface::class)] private Collection $products; - /** @ORM\Column(type="array") */ #[ORM\Column(type: Types::ARRAY)] private array $associations = []; diff --git a/src/Entity/ProductVariantAssetTrait.php b/src/Entity/ProductVariantAssetTrait.php index 53775a1a..9cafc84e 100644 --- a/src/Entity/ProductVariantAssetTrait.php +++ b/src/Entity/ProductVariantAssetTrait.php @@ -10,7 +10,6 @@ trait ProductVariantAssetTrait { - /** @ORM\ManyToMany(targetEntity=\Synolia\SyliusAkeneoPlugin\Entity\Asset::class, mappedBy="productVariants") */ #[ORM\ManyToMany(targetEntity: Asset::class, mappedBy: 'productVariants')] private $assets; diff --git a/src/Entity/Setting.php b/src/Entity/Setting.php index f018a117..9d47f049 100644 --- a/src/Entity/Setting.php +++ b/src/Entity/Setting.php @@ -8,37 +8,19 @@ use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Resource\Model\ResourceInterface; -/** - * @ORM\Entity() - * - * @ORM\Table("akeneo_settings") - */ #[ORM\Entity] #[ORM\Table(name: 'akeneo_settings')] class Setting implements ResourceInterface { - /** - * @var int - * - * @ORM\Id() - * - * @ORM\GeneratedValue(strategy="AUTO") - * - * @ORM\Column(type="integer") - */ #[ORM\Id] #[ORM\GeneratedValue(strategy: 'AUTO')] #[ORM\Column(type: Types::INTEGER)] private $id; - /** @ORM\Column(type="string", nullable=true) */ #[ORM\Column(type: Types::STRING, nullable: true)] private ?string $value = null; public function __construct( - /** - * @ORM\Column(type="string") - */ #[ORM\Column(type: Types::STRING)] private string $name, ) { diff --git a/src/Entity/TaxonAttributeValue.php b/src/Entity/TaxonAttributeValue.php index 027c38a2..923b2d4f 100644 --- a/src/Entity/TaxonAttributeValue.php +++ b/src/Entity/TaxonAttributeValue.php @@ -53,7 +53,7 @@ class TaxonAttributeValue implements TaxonAttributeValueInterface, ResourceInter #[ORM\Column(name: 'date_value', type: Types::DATE_MUTABLE, nullable: true)] private ?DateTimeInterface $date; - #[ORM\Column(name: 'json_value', type: Types::JSON, nullable: true)] + #[ORM\Column(name: 'json_value', type: Types::ARRAY, nullable: true)] private ?array $json; public function getId(): int diff --git a/src/Entity/TaxonAttributesTrait.php b/src/Entity/TaxonAttributesTrait.php index 803f054e..df0504bc 100644 --- a/src/Entity/TaxonAttributesTrait.php +++ b/src/Entity/TaxonAttributesTrait.php @@ -12,13 +12,6 @@ trait TaxonAttributesTrait { - /** @ORM\OneToMany( - * targetEntity=\Synolia\SyliusAkeneoPlugin\Entity\TaxonAttributeValue::class, - * mappedBy="subject", - * cascade={"persist", "remove"}, - * orphanRemoval=true - * ) - */ #[ORM\OneToMany( targetEntity: TaxonAttributeValue::class, mappedBy: 'subject', From 655fc1202003dfd47a7e34de87a99d36699e7af8 Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:18:27 +0200 Subject: [PATCH 13/20] chore(config): [service] remove unneeded migration --- config/services.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/services.yaml b/config/services.yaml index 380b908a..2ecd427f 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -25,7 +25,7 @@ services: Synolia\SyliusAkeneoPlugin\: resource: '../src/*' - exclude: '../src/{DependencyInjection,Model,Migrations,Payload,SynoliaSyliusAkeneoPlugin.php}' + exclude: '../src/{DependencyInjection,Model,Payload,SynoliaSyliusAkeneoPlugin.php}' sylius.product_filters_rules_class_metadata: class: 'Doctrine\Common\Persistence\Mapping\ClassMetadata' From 62c2855e5b6c8d989666341605f9e0c5ae91961c Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:18:51 +0200 Subject: [PATCH 14/20] chore(config): [route] use absolute plugin path --- config/routes.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/routes.yaml b/config/routes.yaml index a3c28bfa..e41f1220 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -1,5 +1,5 @@ sylius_akeneo_controllers: - resource: 'routes/admin_controller_routing.yaml' + resource: '@SynoliaSyliusAkeneoPlugin/config/routes/admin_controller_routing.yaml' prefix: /akeneo name_prefix: 'sylius_akeneo_connector_' From b178dbe8dc7b6e17bdcb1e5d90acaeaddf1f070d Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:40:44 +0200 Subject: [PATCH 15/20] chore(credit): [import] add author and link to the process manager --- src/ProcessManager/ProcessManager.php | 4 ++++ src/ProcessManager/ProcessManagerInterface.php | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/src/ProcessManager/ProcessManager.php b/src/ProcessManager/ProcessManager.php index 72574410..f301ca0a 100644 --- a/src/ProcessManager/ProcessManager.php +++ b/src/ProcessManager/ProcessManager.php @@ -9,6 +9,10 @@ /** * The process manager for executing multiple processes in parallel. + * + * @thanks BluePsyduck + * + * @see https://github.com/BluePsyduck/symfony-process-manager */ class ProcessManager implements ProcessManagerInterface { diff --git a/src/ProcessManager/ProcessManagerInterface.php b/src/ProcessManager/ProcessManagerInterface.php index d0940cfd..72a0b4ce 100644 --- a/src/ProcessManager/ProcessManagerInterface.php +++ b/src/ProcessManager/ProcessManagerInterface.php @@ -8,6 +8,10 @@ /** * The interface of the process manager. + * + * @thanks BluePsyduck + * + * @see https://github.com/BluePsyduck/symfony-process-manager */ interface ProcessManagerInterface { From 768c72f2d897e6a8a3feb415bb3da67218a5bbe8 Mon Sep 17 00:00:00 2001 From: maxperei Date: Fri, 13 Jun 2025 17:56:21 +0200 Subject: [PATCH 16/20] chore(tests): [abstract] remove unused kernel test case --- tests/PHPUnit/AbstractKernelTestCase.php | 11 ----------- tests/PHPUnit/Api/ApiTestCase.php | 4 ++-- ...keneoAttributeToSyliusAttributeTransformerTest.php | 4 ++-- .../Attribute/AttributeTypeMatcherTest.php | 4 ++-- 4 files changed, 6 insertions(+), 17 deletions(-) delete mode 100644 tests/PHPUnit/AbstractKernelTestCase.php diff --git a/tests/PHPUnit/AbstractKernelTestCase.php b/tests/PHPUnit/AbstractKernelTestCase.php deleted file mode 100644 index 4c26a3ae..00000000 --- a/tests/PHPUnit/AbstractKernelTestCase.php +++ /dev/null @@ -1,11 +0,0 @@ - Date: Fri, 13 Jun 2025 17:57:22 +0200 Subject: [PATCH 17/20] chore(form): [validation] create validation group for taxon attribute value --- config/services.yaml | 1 + src/Form/Type/TaxonAttributeValueType.php | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/services.yaml b/config/services.yaml index 2ecd427f..d8c7280e 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -16,6 +16,7 @@ parameters: synolia_sylius_akeneo.api_configuration.password: '%env(string:SYNOLIA_AKENEO_PASSWORD)%' synolia_sylius_akeneo.api_configuration.axe_as_model: '%env(string:SYNOLIA_AKENEO_AXE_AS_MODEL)%' synolia_sylius_akeneo.api_configuration.pagination: '%env(int:SYNOLIA_AKENEO_PAGINATION)%' + synolia_sylius_akeneo.form.type.taxon_attribute_value.validation_groups: 'sylius' services: _defaults: diff --git a/src/Form/Type/TaxonAttributeValueType.php b/src/Form/Type/TaxonAttributeValueType.php index 4771fee0..d37b295b 100644 --- a/src/Form/Type/TaxonAttributeValueType.php +++ b/src/Form/Type/TaxonAttributeValueType.php @@ -26,7 +26,7 @@ class TaxonAttributeValueType extends AbstractResourceType public function __construct( #[Autowire(TaxonAttributeValue::class)] string $dataClass, - #[Autowire('%sylius.form.type.product_attribute_value.validation_groups%')] + #[Autowire('%synolia_sylius_akeneo.form.type.taxon_attribute_value.validation_groups%')] array $validationGroups, #[Autowire(TaxonAttributeChoiceType::class)] protected string $attributeChoiceType, From 64ce3d83a1cd47fc0cc29b02157e7e5d09c3538e Mon Sep 17 00:00:00 2001 From: maxperei Date: Mon, 16 Jun 2025 10:11:32 +0200 Subject: [PATCH 18/20] fix(twig): [hook] missing fallback url on cancel template --- config/twig_hooks.yaml | 6 ------ .../content/header/title_block/actions/cancel.html.twig | 6 +++++- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/config/twig_hooks.yaml b/config/twig_hooks.yaml index 098ff8ad..3c81513d 100644 --- a/config/twig_hooks.yaml +++ b/config/twig_hooks.yaml @@ -67,12 +67,6 @@ sylius_twig_hooks: subheader: sylius.ui.admin.akeneo.categories.subtitle priority: 100 - 'synolia.sylius_admin.akeneo.categories.content.header.title_block.actions': - <<: *actions - cancel: - template: '@SynoliaSyliusAkeneoPlugin/admin/common/content/header/title_block/actions/cancel.html.twig' - priority: 100 - 'synolia.sylius_admin.akeneo.filters_configuration': *base 'synolia.sylius_admin.akeneo.filters_configuration.content': diff --git a/templates/admin/common/content/header/title_block/actions/cancel.html.twig b/templates/admin/common/content/header/title_block/actions/cancel.html.twig index 67fbc940..9543dba8 100644 --- a/templates/admin/common/content/header/title_block/actions/cancel.html.twig +++ b/templates/admin/common/content/header/title_block/actions/cancel.html.twig @@ -2,4 +2,8 @@ {% set index_url = sylius_generate_redirect_path(app.request.headers.get('referer')) %} -{{ button.cancel(sylius_test_form_attribute('cancel-changes-button')|merge({ text: 'sylius.ui.cancel'|trans, url: index_url, class: 'btn' })) }} +{{ button.cancel(sylius_test_form_attribute('cancel-changes-button')|merge({ + text: 'sylius.ui.cancel'|trans, + fallback_url: index_url, + class: 'btn' +})) }} From 8ddf902de18ab6dbbc8dcff772de1aac1a4431d4 Mon Sep 17 00:00:00 2001 From: maxperei Date: Mon, 16 Jun 2025 10:12:28 +0200 Subject: [PATCH 19/20] chore(ci): [actions] run on sylius 2.1 --- .github/workflows/sylius.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/sylius.yaml b/.github/workflows/sylius.yaml index cb9236bd..20f6894f 100644 --- a/.github/workflows/sylius.yaml +++ b/.github/workflows/sylius.yaml @@ -21,6 +21,7 @@ jobs: - 8.3 sylius: - 2.0.0 + - 2.1.0 symfony: - 6.4 - 7.2 From e90fa66484454a9bc9c920631c463eb2e657ad83 Mon Sep 17 00:00:00 2001 From: maxperei Date: Tue, 17 Jun 2025 10:03:52 +0200 Subject: [PATCH 20/20] chore(admin): [templates] remove unused --- .../attributes_configuration.html.twig | 33 -------- .../Admin/Event/attributes_block.html.twig | 55 ------------- .../Event/taxon_attributes_block.html.twig | 7 -- .../taxon_attributes_edit_block.html.twig | 11 --- .../Attribute/attributesCollection.html.twig | 79 ------------------- .../Admin/Taxon/Show/Types/default.html.twig | 1 - .../Admin/Taxon/Show/Types/text.html.twig | 1 - .../Admin/Taxon/Show/Types/textarea.html.twig | 1 - 8 files changed, 188 deletions(-) delete mode 100644 templates/Admin/AkeneoConnector/attributes_configuration.html.twig delete mode 100644 templates/Admin/Event/attributes_block.html.twig delete mode 100644 templates/Admin/Event/taxon_attributes_block.html.twig delete mode 100644 templates/Admin/Event/taxon_attributes_edit_block.html.twig delete mode 100644 templates/Admin/Taxon/Attribute/attributesCollection.html.twig delete mode 100644 templates/Admin/Taxon/Show/Types/default.html.twig delete mode 100644 templates/Admin/Taxon/Show/Types/text.html.twig delete mode 100644 templates/Admin/Taxon/Show/Types/textarea.html.twig diff --git a/templates/Admin/AkeneoConnector/attributes_configuration.html.twig b/templates/Admin/AkeneoConnector/attributes_configuration.html.twig deleted file mode 100644 index 3fac780f..00000000 --- a/templates/Admin/AkeneoConnector/attributes_configuration.html.twig +++ /dev/null @@ -1,33 +0,0 @@ -{% extends '@SynoliaSyliusAkeneoPlugin/Admin/layout.html.twig' %} - -{% import '@SyliusUi/Macro/headers.html.twig' as headers %} - -{% block title %}{{ 'sylius.ui.admin.akeneo.attributes.title'|trans }} {{ parent() }}{% endblock %} - -{% block content %} - {{ headers.default( - 'sylius.ui.admin.akeneo.attributes.title'|trans, - 'cogs', - 'sylius.ui.admin.akeneo.attributes.subtitle'|trans - ) }} - {% block breadcrumb %} - {% set breadcrumbs = breadcrumbs|merge([ - {label: 'sylius.ui.admin.akeneo.attributes.title'|trans} - ]) %} - {{ parent() }} - {% endblock %} -
- {{ form_start(form, {'attr': {'class': 'ui form'}}) }} -
- {{ form_row(form.settings) }} -
-
- {{ form_row(form.attributeType) }} -
-
- {{ form_row(form.attributeAkeneoSylius) }} -
- {{ form_rest(form) }} - {{ form_end(form) }} -
-{% endblock %} diff --git a/templates/Admin/Event/attributes_block.html.twig b/templates/Admin/Event/attributes_block.html.twig deleted file mode 100644 index 53165bf9..00000000 --- a/templates/Admin/Event/attributes_block.html.twig +++ /dev/null @@ -1,55 +0,0 @@ -{% import '@SyliusUi/Macro/flags.html.twig' as flags %} - -{% if akeneo_is_taxon_attribute_enabled() and taxon is defined %} -
-

{{ 'sylius.ui.attributes'|trans }}

-
- - {% for locale in set_locales %} - {% set data_tab = (locale is not null ? locale|sylius_locale_name : 'non-translatable') %} -
- - - {% for attribute_value in taxon.attributes|filter(attribute_value => attribute_value.localeCode == locale) %} - - - - - {% endfor %} - -
- - {% if attribute_value.attribute.isTranslatable %} - {{ attribute_value.name }} - {% else %} - {{ attribute_value.code }} - {% endif %} - - - {% include [ - '@SynoliaSyliusAkeneoPlugin/Admin/Taxon/Show/Types/' ~ attribute_value.type ~ '.html.twig', - '@SynoliaSyliusAkeneoPlugin/Admin/Taxon/Show/Types/default.html.twig' - ] with { - 'attribute': attribute_value, - 'locale': configuration.request.locale, - 'fallbackLocale': configuration.request.defaultLocale - } %} -
-
- {% endfor %} -
-
-{% endif %} diff --git a/templates/Admin/Event/taxon_attributes_block.html.twig b/templates/Admin/Event/taxon_attributes_block.html.twig deleted file mode 100644 index 3655225d..00000000 --- a/templates/Admin/Event/taxon_attributes_block.html.twig +++ /dev/null @@ -1,7 +0,0 @@ -{% if akeneo_is_taxon_attribute_enabled() %} -
-
- {{ sylius_template_event('akeneo.admin.taxon.show.attributes', _context) }} -
-
-{% endif %} diff --git a/templates/Admin/Event/taxon_attributes_edit_block.html.twig b/templates/Admin/Event/taxon_attributes_edit_block.html.twig deleted file mode 100644 index d9d4b960..00000000 --- a/templates/Admin/Event/taxon_attributes_edit_block.html.twig +++ /dev/null @@ -1,11 +0,0 @@ -{% if akeneo_is_taxon_attribute_enabled() %} - {% form_theme form '@SynoliaSyliusAkeneoPlugin/Admin/Taxon/Attribute/attributesCollection.html.twig' %} - -

{{ 'sylius.ui.attributes'|trans }}

- -
-
- {{ form_widget(form.attributes, {'attr': {'translations': form.translations}}) }} -
-
-{% endif %} diff --git a/templates/Admin/Taxon/Attribute/attributesCollection.html.twig b/templates/Admin/Taxon/Attribute/attributesCollection.html.twig deleted file mode 100644 index e39164c4..00000000 --- a/templates/Admin/Taxon/Attribute/attributesCollection.html.twig +++ /dev/null @@ -1,79 +0,0 @@ -{% extends '@SyliusAdmin/Form/theme.html.twig' %} - -{% block collection_widget -%} - {% import _self as self %} - -
- {% set attributes = {} %} - - {% for child in form %} - {% set code = child.vars.data.attribute.code %} - - {% if attributes[code] is not defined %} - {% set attributes = attributes|merge({(code): []}) %} - {% endif %} - - {% set attributes = attributes|merge({(code): attributes[code]|merge([child])}) %} - {% endfor %} - - {% for key, attribute in attributes %} -
-
- - {% if attribute[0].attribute.vars.data.translatable == false %} - {{ attribute[0].attribute.vars.data.code }} - {% else %} - {% set translation = attribute[0].attribute.vars.data.translation(sylius.localeCode) %} - {% if translation is not defined %} - {{ attribute[0].attribute.vars.data.code }} - {% endif %} - {{ translation.name }} - {% endif %} - -
- -
-
-
- {% for child in attribute %} - {{ self.collection_item(child) }} - {% endfor %} -
-
- {% endfor %} -
-{%- endblock collection_widget %} - -{% macro collection_item(form) %} - {% import '@SyliusUi/Macro/flags.html.twig' as flags %} - -
-
-
- {% if form.localeCode.vars.value %} - {{ flags.fromLocaleCode(form.localeCode.vars.value) }} {{ form.localeCode.vars.value }} - {% else %} - - {% endif %} - {{ form.vars.value.attribute.translation(form.vars.value.localeCode).name }} -
-
-
- {{ form_widget(form.value) }} -
-
-
- {% if form.localeCode.vars.value %} - {{ 'sylius.ui.apply_to_all'|trans }} - {% endif %} -
-
- {{ form_errors(form.value) }} -
-
- - -
-{% endmacro %} diff --git a/templates/Admin/Taxon/Show/Types/default.html.twig b/templates/Admin/Taxon/Show/Types/default.html.twig deleted file mode 100644 index e8bd6cd9..00000000 --- a/templates/Admin/Taxon/Show/Types/default.html.twig +++ /dev/null @@ -1 +0,0 @@ -{{ attribute.value }} diff --git a/templates/Admin/Taxon/Show/Types/text.html.twig b/templates/Admin/Taxon/Show/Types/text.html.twig deleted file mode 100644 index e8bd6cd9..00000000 --- a/templates/Admin/Taxon/Show/Types/text.html.twig +++ /dev/null @@ -1 +0,0 @@ -{{ attribute.value }} diff --git a/templates/Admin/Taxon/Show/Types/textarea.html.twig b/templates/Admin/Taxon/Show/Types/textarea.html.twig deleted file mode 100644 index 2375b303..00000000 --- a/templates/Admin/Taxon/Show/Types/textarea.html.twig +++ /dev/null @@ -1 +0,0 @@ -{{ attribute.value|nl2br }}