From 4d360d062acec0b4cc671225726520b08234ef2d Mon Sep 17 00:00:00 2001 From: Isabelle Date: Fri, 8 May 2026 09:26:57 +0200 Subject: [PATCH] remove hard-coded url --- is_themecore/{is_themecore => }/config_nl.xml | 0 is_themecore/is_themecore.php | 1 + is_themecore/is_themecore/.DS_Store | Bin 6148 -> 0 bytes .../is_themecore/.php-cs-fixer.dist.php | 9 - is_themecore/is_themecore/LICENSE.md | 674 ---- is_themecore/is_themecore/Makefile | 21 - is_themecore/is_themecore/README.md | 96 - is_themecore/is_themecore/_module_dev/.nvmrc | 1 - .../_module_dev/package-lock.json | 3049 ----------------- .../is_themecore/_module_dev/package.json | 20 - .../is_themecore/_module_dev/src/index.js | 10 - .../_module_dev/webpack.config.js | 26 - .../is_themecore/_theme_dev/.eslintignore | 4 - .../is_themecore/_theme_dev/.eslintrc.js | 27 - is_themecore/is_themecore/_theme_dev/.nvmrc | 1 - .../is_themecore/_theme_dev/.stylelintrc.json | 6 - .../is_themecore/_theme_dev/index.php | 11 - .../is_themecore/_theme_dev/package.json | 21 - .../is_themecore/_theme_dev/src/index.php | 11 - .../is_themecore/_theme_dev/src/js/index.php | 11 - .../_theme_dev/src/js/listing/index.js | 58 - .../_theme_dev/src/js/listing/index.php | 11 - .../is_themecore/_theme_dev/yarn.lock | 2096 ----------- is_themecore/is_themecore/composer.json | 33 - is_themecore/is_themecore/composer.lock | 2788 --------------- .../is_themecore/config/admin/services.yml | 75 - is_themecore/is_themecore/config/common.yml | 39 - .../is_themecore/config/front/services.yml | 81 - is_themecore/is_themecore/config/index.php | 11 - is_themecore/is_themecore/config/routes.yml | 30 - .../controllers/front/ajaxTheme.php | 35 - .../is_themecore/controllers/front/index.php | 11 - .../is_themecore/controllers/index.php | 11 - is_themecore/is_themecore/index.php | 11 - is_themecore/is_themecore/is_themecore.php | 212 -- is_themecore/is_themecore/logo.png | Bin 10578 -> 0 bytes .../Controller/Admin/SettingsController.php | 183 - .../src/Controller/Admin/index.php | 11 - .../src/Controller/Front/index.php | 11 - .../is_themecore/src/Controller/index.php | 11 - .../src/Core/Breadcrumbs/ThemeBreadcrumbs.php | 80 - .../src/Core/Breadcrumbs/index.php | 11 - .../src/Core/Htaccess/HtaccessGenerator.php | 233 -- .../is_themecore/src/Core/Htaccess/index.php | 11 - .../Core/ListingDisplay/ThemeListDisplay.php | 60 - .../src/Core/ListingDisplay/index.php | 11 - .../src/Core/Partytown/FilesInstallation.php | 54 - .../src/Core/Partytown/PartytownScript.php | 36 - .../Partytown/PartytownScriptUriResolver.php | 21 - .../src/Core/Smarty/SmartyHelperFunctions.php | 303 -- .../StructuredData/AbstractStructuredData.php | 45 - .../BreadcrumbStructuredData.php | 11 - .../StructuredDataBreadcrumbPresenter.php | 38 - .../StructuredDataPresenterInterface.php | 15 - .../StructuredDataProductPresenter.php | 166 - .../Presenter/StructuredDataShopPresenter.php | 75 - .../StructuredDataWebsitePresenter.php | 35 - .../StructuredData/ProductStructuredData.php | 11 - .../StructuredDataBreadcrumbProvider.php | 18 - .../StructuredDataProductProvider.php | 51 - .../StructuredDataProviderInterface.php | 13 - .../Provider/StructuredDataShopProvider.php | 18 - .../StructuredDataWebsiteProvider.php | 18 - .../StructuredData/ShopStructuredData.php | 11 - .../StructuredDataInterface.php | 15 - .../StructuredData/WebsiteStructuredData.php | 11 - .../ThemeAssets/ThemeAssetConfigProvider.php | 61 - .../Core/ThemeAssets/ThemeAssetsRegister.php | 140 - .../src/Core/Webp/RelatedImageFileFinder.php | 38 - .../src/Core/Webp/WebpConvertLibraries.php | 60 - .../src/Core/Webp/WebpFilesEraser.php | 79 - .../src/Core/Webp/WebpGenerator.php | 110 - .../src/Core/Webp/WebpPictureGenerator.php | 109 - .../is_themecore/src/Core/Webp/index.php | 11 - is_themecore/is_themecore/src/Core/index.php | 11 - .../ListDisplayChoiceProvider.php | 36 - .../WebpLibraryChoiceProvider.php | 50 - .../src/Form/ChoiceProvider/index.php | 11 - .../Form/Settings/GeneralConfiguration.php | 132 - .../Form/Settings/GeneralFormDataProvider.php | 49 - .../src/Form/Settings/GeneralType.php | 104 - .../src/Form/Settings/WebpConfiguration.php | 131 - .../Form/Settings/WebpFormDataProvider.php | 49 - .../src/Form/Settings/WebpType.php | 247 -- .../is_themecore/src/Form/Settings/index.php | 11 - is_themecore/is_themecore/src/Form/index.php | 11 - .../is_themecore/src/Hook/AbstractHook.php | 25 - is_themecore/is_themecore/src/Hook/Assets.php | 45 - is_themecore/is_themecore/src/Hook/Header.php | 136 - .../is_themecore/src/Hook/Htaccess.php | 36 - .../is_themecore/src/Hook/HtmlOutput.php | 111 - is_themecore/is_themecore/src/Hook/Smarty.php | 70 - .../is_themecore/src/HookDispatcher.php | 63 - is_themecore/is_themecore/src/index.php | 11 - is_themecore/is_themecore/tests/.env.dist | 4 - .../is_themecore/tests/grumphp.dist.yml | 45 - .../tests/php/.php-cs-fixer.dist.php | 14 - .../tests/php/.phpstan_bootstrap.neon | 3 - .../tests/php/.phpstan_bootstrap.php | 70 - .../is_themecore/tests/php/php_syntax.sh | 1 - .../is_themecore/tests/php/phpstan.dist.neon | 14 - .../is_themecore/translations/index.php | 11 - .../is_themecore/upgrade/upgrade-2-2-0.php | 12 - .../is_themecore/upgrade/upgrade-2-2-1.php | 10 - .../is_themecore/upgrade/upgrade-2-3-0.php | 15 - .../is_themecore/upgrade/upgrade-2-4-0.php | 20 - .../is_themecore/upgrade/upgrade-4.1.0.php | 20 - .../is_themecore/upgrade/upgrade-4.1.2.php | 14 - .../is_themecore/upgrade/upgrade-4.1.3.php | 20 - .../is_themecore/views/img/example.jpg | Bin 2275 -> 0 bytes is_themecore/is_themecore/views/index.php | 11 - .../components/atoms/card-header.html.twig | 3 - .../templates/back/components/atoms/index.php | 11 - .../views/templates/back/components/index.php | 11 - .../back/components/layouts/index.php | 11 - .../components/layouts/settings.html.twig | 27 - .../back/components/molecules/index.php | 11 - .../back/components/organisms/form.html.twig | 28 - .../back/components/organisms/index.php | 11 - .../views/templates/back/index.php | 11 - .../front/components/atoms/index.php | 11 - .../templates/front/components/index.php | 11 - .../front/components/layouts/index.php | 11 - .../front/components/molecules/index.php | 11 - .../front/components/organisms/index.php | 11 - .../views/templates/front/index.php | 11 - .../views/templates/hook/head.tpl | 38 - .../views/templates/hook/og-data.tpl | 34 - .../views/templates/hook/twitter-data.tpl | 25 - .../is_themecore/views/templates/index.php | 11 - is_themecore/is_themecore/webp.php | 17 - .../{is_themecore => }/public/partytown.js | 0 .../~partytown/debug/partytown-atomics.js | 0 .../~partytown/debug/partytown-media.js | 0 .../~partytown/debug/partytown-sandbox-sw.js | 0 .../public/~partytown/debug/partytown-sw.js | 0 .../~partytown/debug/partytown-ww-atomics.js | 0 .../~partytown/debug/partytown-ww-sw.js | 0 .../public/~partytown/debug/partytown.js | 0 .../public/~partytown/partytown-atomics.js | 0 .../public/~partytown/partytown-media.js | 0 .../public/~partytown/partytown-sw.js | 0 .../public/~partytown/partytown.js | 0 .../Controller/Admin/SettingsController.php | 35 +- .../src/Core/Smarty/SmartyHelperFunctions.php | 109 +- .../src/Core/Webp/WebpPictureGenerator.php | 2 +- .../src/Form/Settings/GeneralType.php | 2 +- is_themecore/src/Form/Settings/WebpType.php | 2 +- is_themecore/src/Hook/Smarty.php | 10 + .../{is_themecore => }/translations/nl.php | 0 .../upgrade/upgrade-4-1-0.php | 0 .../upgrade/upgrade-4-1-2.php | 0 .../{is_themecore => }/views/img/example.webp | Bin 153 files changed, 127 insertions(+), 13667 deletions(-) rename is_themecore/{is_themecore => }/config_nl.xml (100%) delete mode 100644 is_themecore/is_themecore/.DS_Store delete mode 100644 is_themecore/is_themecore/.php-cs-fixer.dist.php delete mode 100644 is_themecore/is_themecore/LICENSE.md delete mode 100644 is_themecore/is_themecore/Makefile delete mode 100644 is_themecore/is_themecore/README.md delete mode 100644 is_themecore/is_themecore/_module_dev/.nvmrc delete mode 100644 is_themecore/is_themecore/_module_dev/package-lock.json delete mode 100644 is_themecore/is_themecore/_module_dev/package.json delete mode 100644 is_themecore/is_themecore/_module_dev/src/index.js delete mode 100644 is_themecore/is_themecore/_module_dev/webpack.config.js delete mode 100644 is_themecore/is_themecore/_theme_dev/.eslintignore delete mode 100644 is_themecore/is_themecore/_theme_dev/.eslintrc.js delete mode 100644 is_themecore/is_themecore/_theme_dev/.nvmrc delete mode 100644 is_themecore/is_themecore/_theme_dev/.stylelintrc.json delete mode 100644 is_themecore/is_themecore/_theme_dev/index.php delete mode 100644 is_themecore/is_themecore/_theme_dev/package.json delete mode 100644 is_themecore/is_themecore/_theme_dev/src/index.php delete mode 100644 is_themecore/is_themecore/_theme_dev/src/js/index.php delete mode 100644 is_themecore/is_themecore/_theme_dev/src/js/listing/index.js delete mode 100644 is_themecore/is_themecore/_theme_dev/src/js/listing/index.php delete mode 100644 is_themecore/is_themecore/_theme_dev/yarn.lock delete mode 100644 is_themecore/is_themecore/composer.json delete mode 100644 is_themecore/is_themecore/composer.lock delete mode 100644 is_themecore/is_themecore/config/admin/services.yml delete mode 100644 is_themecore/is_themecore/config/common.yml delete mode 100644 is_themecore/is_themecore/config/front/services.yml delete mode 100644 is_themecore/is_themecore/config/index.php delete mode 100644 is_themecore/is_themecore/config/routes.yml delete mode 100644 is_themecore/is_themecore/controllers/front/ajaxTheme.php delete mode 100644 is_themecore/is_themecore/controllers/front/index.php delete mode 100644 is_themecore/is_themecore/controllers/index.php delete mode 100644 is_themecore/is_themecore/index.php delete mode 100644 is_themecore/is_themecore/is_themecore.php delete mode 100644 is_themecore/is_themecore/logo.png delete mode 100644 is_themecore/is_themecore/src/Controller/Admin/SettingsController.php delete mode 100644 is_themecore/is_themecore/src/Controller/Admin/index.php delete mode 100644 is_themecore/is_themecore/src/Controller/Front/index.php delete mode 100644 is_themecore/is_themecore/src/Controller/index.php delete mode 100644 is_themecore/is_themecore/src/Core/Breadcrumbs/ThemeBreadcrumbs.php delete mode 100644 is_themecore/is_themecore/src/Core/Breadcrumbs/index.php delete mode 100644 is_themecore/is_themecore/src/Core/Htaccess/HtaccessGenerator.php delete mode 100644 is_themecore/is_themecore/src/Core/Htaccess/index.php delete mode 100644 is_themecore/is_themecore/src/Core/ListingDisplay/ThemeListDisplay.php delete mode 100644 is_themecore/is_themecore/src/Core/ListingDisplay/index.php delete mode 100644 is_themecore/is_themecore/src/Core/Partytown/FilesInstallation.php delete mode 100644 is_themecore/is_themecore/src/Core/Partytown/PartytownScript.php delete mode 100644 is_themecore/is_themecore/src/Core/Partytown/PartytownScriptUriResolver.php delete mode 100644 is_themecore/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/AbstractStructuredData.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/BreadcrumbStructuredData.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataBreadcrumbPresenter.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataPresenterInterface.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataProductPresenter.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataShopPresenter.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataWebsitePresenter.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/ProductStructuredData.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataBreadcrumbProvider.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProductProvider.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProviderInterface.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataShopProvider.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataWebsiteProvider.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/ShopStructuredData.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/StructuredDataInterface.php delete mode 100644 is_themecore/is_themecore/src/Core/StructuredData/WebsiteStructuredData.php delete mode 100644 is_themecore/is_themecore/src/Core/ThemeAssets/ThemeAssetConfigProvider.php delete mode 100644 is_themecore/is_themecore/src/Core/ThemeAssets/ThemeAssetsRegister.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/RelatedImageFileFinder.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/WebpConvertLibraries.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/WebpFilesEraser.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/WebpGenerator.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/WebpPictureGenerator.php delete mode 100644 is_themecore/is_themecore/src/Core/Webp/index.php delete mode 100644 is_themecore/is_themecore/src/Core/index.php delete mode 100644 is_themecore/is_themecore/src/Form/ChoiceProvider/ListDisplayChoiceProvider.php delete mode 100644 is_themecore/is_themecore/src/Form/ChoiceProvider/WebpLibraryChoiceProvider.php delete mode 100644 is_themecore/is_themecore/src/Form/ChoiceProvider/index.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/GeneralConfiguration.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/GeneralFormDataProvider.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/GeneralType.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/WebpConfiguration.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/WebpFormDataProvider.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/WebpType.php delete mode 100644 is_themecore/is_themecore/src/Form/Settings/index.php delete mode 100644 is_themecore/is_themecore/src/Form/index.php delete mode 100644 is_themecore/is_themecore/src/Hook/AbstractHook.php delete mode 100644 is_themecore/is_themecore/src/Hook/Assets.php delete mode 100644 is_themecore/is_themecore/src/Hook/Header.php delete mode 100644 is_themecore/is_themecore/src/Hook/Htaccess.php delete mode 100644 is_themecore/is_themecore/src/Hook/HtmlOutput.php delete mode 100644 is_themecore/is_themecore/src/Hook/Smarty.php delete mode 100644 is_themecore/is_themecore/src/HookDispatcher.php delete mode 100644 is_themecore/is_themecore/src/index.php delete mode 100644 is_themecore/is_themecore/tests/.env.dist delete mode 100644 is_themecore/is_themecore/tests/grumphp.dist.yml delete mode 100644 is_themecore/is_themecore/tests/php/.php-cs-fixer.dist.php delete mode 100644 is_themecore/is_themecore/tests/php/.phpstan_bootstrap.neon delete mode 100644 is_themecore/is_themecore/tests/php/.phpstan_bootstrap.php delete mode 100644 is_themecore/is_themecore/tests/php/php_syntax.sh delete mode 100644 is_themecore/is_themecore/tests/php/phpstan.dist.neon delete mode 100644 is_themecore/is_themecore/translations/index.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-2-2-0.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-2-2-1.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-2-3-0.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-2-4-0.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-4.1.0.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-4.1.2.php delete mode 100644 is_themecore/is_themecore/upgrade/upgrade-4.1.3.php delete mode 100644 is_themecore/is_themecore/views/img/example.jpg delete mode 100644 is_themecore/is_themecore/views/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/components/atoms/card-header.html.twig delete mode 100644 is_themecore/is_themecore/views/templates/back/components/atoms/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/components/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/components/layouts/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/components/layouts/settings.html.twig delete mode 100644 is_themecore/is_themecore/views/templates/back/components/molecules/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/components/organisms/form.html.twig delete mode 100644 is_themecore/is_themecore/views/templates/back/components/organisms/index.php delete mode 100644 is_themecore/is_themecore/views/templates/back/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/components/atoms/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/components/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/components/layouts/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/components/molecules/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/components/organisms/index.php delete mode 100644 is_themecore/is_themecore/views/templates/front/index.php delete mode 100644 is_themecore/is_themecore/views/templates/hook/head.tpl delete mode 100644 is_themecore/is_themecore/views/templates/hook/og-data.tpl delete mode 100644 is_themecore/is_themecore/views/templates/hook/twitter-data.tpl delete mode 100644 is_themecore/is_themecore/views/templates/index.php delete mode 100644 is_themecore/is_themecore/webp.php rename is_themecore/{is_themecore => }/public/partytown.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-atomics.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-media.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-sandbox-sw.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-sw.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-ww-atomics.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown-ww-sw.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/debug/partytown.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/partytown-atomics.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/partytown-media.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/partytown-sw.js (100%) rename is_themecore/{is_themecore => }/public/~partytown/partytown.js (100%) rename is_themecore/{is_themecore => }/translations/nl.php (100%) rename is_themecore/{is_themecore => }/upgrade/upgrade-4-1-0.php (100%) rename is_themecore/{is_themecore => }/upgrade/upgrade-4-1-2.php (100%) rename is_themecore/{is_themecore => }/views/img/example.webp (100%) diff --git a/is_themecore/is_themecore/config_nl.xml b/is_themecore/config_nl.xml similarity index 100% rename from is_themecore/is_themecore/config_nl.xml rename to is_themecore/config_nl.xml diff --git a/is_themecore/is_themecore.php b/is_themecore/is_themecore.php index 1a65cce..1124d9e 100644 --- a/is_themecore/is_themecore.php +++ b/is_themecore/is_themecore.php @@ -183,6 +183,7 @@ class Is_themecore extends Module $router = $container->get('router'); Tools::redirectAdmin($router->generate('is_themecore_module_settings')); + exit; } } diff --git a/is_themecore/is_themecore/.DS_Store b/is_themecore/is_themecore/.DS_Store deleted file mode 100644 index 483d23a29e975734537ff26fa6fa9a4ff3f70b4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHK!AiqG5S?wSO{roJ3VK`cTClAsikDF9!K)EHsMMwn8jM+KQhO+c-1Ue25r0Q# zcDJI`dK4=&F#9&M^OEe_u$ut@(H!*Z02Kgm&bQzo-DM-4cY5KpRr{yncNMjw99eBjsZbeIP63Z`OX|`NQPF@?QLhC`{5??N#LR zg@whUQ*_GCm3OO#UfM|qNwd?xpsQ1*B7f5F_-A1-Y*$tfRh)LhIOuCa*b6Y_@;r=t zYS>hRxR+?IX9k>-Q)*W>Mx*-9UR7@IH^x;ts_!JYt2R6C{KrCQb8}{i}kvP(#YcVs3BWS`<5e-$?5glqH8fTh!HgY5zsPl!wUSW0`Kr2U+4e; diff --git a/is_themecore/is_themecore/.php-cs-fixer.dist.php b/is_themecore/is_themecore/.php-cs-fixer.dist.php deleted file mode 100644 index 5b524f8..0000000 --- a/is_themecore/is_themecore/.php-cs-fixer.dist.php +++ /dev/null @@ -1,9 +0,0 @@ -setUsingCache(true)->getFinder(); -$finder->in(__DIR__)->exclude('vendor'); - -return $config; diff --git a/is_themecore/is_themecore/LICENSE.md b/is_themecore/is_themecore/LICENSE.md deleted file mode 100644 index f288702..0000000 --- a/is_themecore/is_themecore/LICENSE.md +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. diff --git a/is_themecore/is_themecore/Makefile b/is_themecore/is_themecore/Makefile deleted file mode 100644 index 47b6394..0000000 --- a/is_themecore/is_themecore/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -build-module-zip: build-composer build-assets build-zip - -build-zip: - rm -rf is_themecore.zip - cp -Ra $(PWD) /tmp/is_themecore - rm -rf /tmp/is_themecore/config_*.xml - rm -rf /tmp/is_themecore/_theme_dev/node_modules - rm -rf /tmp/is_themecore/_module_dev/node_modules - rm -rf /tmp/is_themecore/.github - rm -rf /tmp/is_themecore/.gitignore - rm -rf /tmp/is_themecore/.php-cs-fixer.cache - rm -rf /tmp/is_themecore/.git - mv -v /tmp/is_themecore $(PWD)/is_themecore - zip -r is_themecore.zip is_themecore - rm -rf $(PWD)/is_themecore - -build-composer: - composer install --no-dev -o - -build-assets: - cd _module_dev && . ${HOME}/.nvm/nvm.sh && nvm install && npm install && npm run build diff --git a/is_themecore/is_themecore/README.md b/is_themecore/is_themecore/README.md deleted file mode 100644 index 3810d36..0000000 --- a/is_themecore/is_themecore/README.md +++ /dev/null @@ -1,96 +0,0 @@ -# Theme core module -Prestashop module created for [starter theme](https://github.com/Oksydan/modern-prestashop-starter-theme) - -#### How to use assets.yml file - -`assets.yml` file have to be placed inside `themes/THEME_NAME/config/` to work. -Example of `assets.yml` file: - -```yml -css: - product: - fileName: product.css - priority: 200 - include: - - product - checkout: - fileName: checkout.css - priority: 200 - include: - - cart - - order - - orderconfirmation - blog: - fileName: blog.css - priority: 200 - include: - - module-blog-* - example_remote_bootstrap: - fileName: //cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css - server: remote # required to set server: remote for remote file - priority: 200 - -js: - product: - fileName: product.js - priority: 200 - include: - - product - checkout: - fileName: checkout.js - priority: 200 - include: - - cart - - order - - orderconfirmation - blog: - fileName: blog.js - priority: 200 - include: - - module-blog-* - example_remote_bootstrap: - fileName: //cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js - server: remote # required to set server: remote for remote file - priority: 200 -``` - -You are able to use windcard `*` with include page name. - - -#### Structured data modification - -You are able to modify structured data with hooks. List of hooks: - - `actionStructuredDataBreadcrumb` - - `actionStructuredDataProduct` - - `actionStructuredDataShop` - - `actionStructuredDataWebsite` - -Every hook $param is an array with two keys: - - `$data` - reference of structured data array - - `$rawData` - raw structured data array (provided by data provider) - -#### Partytown - -You are able to use [partytown](https://partytown.builder.io/) with this module. You have to enable it first in module configuration. -Example of usage for GTAG: - -```html - - - -``` - -##### Beware that partytown is still in beta, and it may not work as expected. Make sure to test it before using in production. - diff --git a/is_themecore/is_themecore/_module_dev/.nvmrc b/is_themecore/is_themecore/_module_dev/.nvmrc deleted file mode 100644 index e44a38e..0000000 --- a/is_themecore/is_themecore/_module_dev/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v18.12.1 diff --git a/is_themecore/is_themecore/_module_dev/package-lock.json b/is_themecore/is_themecore/_module_dev/package-lock.json deleted file mode 100644 index a0a5a41..0000000 --- a/is_themecore/is_themecore/_module_dev/package-lock.json +++ /dev/null @@ -1,3049 +0,0 @@ -{ - "name": "is_themecore_module", - "version": "4.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "is_themecore_module", - "version": "4.0.0", - "dependencies": { - "@builder.io/partytown": "^0.8.0" - }, - "devDependencies": { - "copy-webpack-plugin": "^11.0.0", - "webpack": "^5.81.0", - "webpack-cli": "^5.0.2" - } - }, - "node_modules/@builder.io/partytown": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@builder.io/partytown/-/partytown-0.8.0.tgz", - "integrity": "sha512-M6H7nSMwW2dHd1/MQ+9J1Jqdw22uhl1nKv90kIiL9G7gjFVqqouQp4qSS1oZclmtW1XjAa4Q5UnbHB4iytmxZA==", - "bin": { - "partytown": "bin/partytown.cjs" - } - }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.2.tgz", - "integrity": "sha512-S9h3GmOmzUseyeFW3tYNnWS7gNUuwxZ3mmMq0JyW78Vx1SGKPSkt5bT4pB0rUnVfHjP0EL9gW2bOzmtiTfQt0A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001482", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz", - "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.380", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz", - "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", - "dev": true - }, - "node_modules/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", - "dev": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-cli": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.2.tgz", - "integrity": "sha512-4y3W5Dawri5+8dXm3+diW6Mn1Ya+Dei6eEVAdIduAmYNLzv1koKVAqsfgrrc9P2mhrYHQphx5htnGkcNwtubyQ==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.2", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - } - }, - "dependencies": { - "@builder.io/partytown": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@builder.io/partytown/-/partytown-0.8.0.tgz", - "integrity": "sha512-M6H7nSMwW2dHd1/MQ+9J1Jqdw22uhl1nKv90kIiL9G7gjFVqqouQp4qSS1oZclmtW1XjAa4Q5UnbHB4iytmxZA==" - }, - "@discoveryjs/json-ext": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", - "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/node": { - "version": "18.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.3.tgz", - "integrity": "sha512-OPs5WnnT1xkCBiuQrZA4+YAV4HEJejmHneyraIaxsbev5yCEr6KMwINNFP9wQeFIw8FWcoTqF3vQsa5CDaI+8Q==", - "dev": true - }, - "@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.5", - "@xtuc/long": "4.2.2" - } - }, - "@webpack-cli/configtest": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", - "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", - "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", - "dev": true, - "requires": {} - }, - "@webpack-cli/serve": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.2.tgz", - "integrity": "sha512-S9h3GmOmzUseyeFW3tYNnWS7gNUuwxZ3mmMq0JyW78Vx1SGKPSkt5bT4pB0rUnVfHjP0EL9gW2bOzmtiTfQt0A==", - "dev": true, - "requires": {} - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001482", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz", - "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==", - "dev": true - }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.1.tgz", - "integrity": "sha512-lELhBAAly9NowEsX0yZBlw9ahZG+sK/1RJ21EpzdYHKEs13Vku3LJ+MIPhh4sMs0oCCeufZQEQbMekiA4vuVIQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.9.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.1.0" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "electron-to-chromium": { - "version": "1.4.380", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.380.tgz", - "integrity": "sha512-XKGdI4pWM78eLH2cbXJHiBnWUwFSzZM7XujsB6stDiGu9AeSqziedP6amNLpJzE3i0rLTcfAwdCTs5ecP5yeSg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, - "es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - } - }, - "graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true - }, - "is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - } - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==", - "dev": true - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - } - } - }, - "punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" - } - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", - "dev": true, - "requires": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "schema-utils": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.2.tgz", - "integrity": "sha512-pvjEHOgWc9OWA/f/DE3ohBWTD6EleVLf7iFUkoSwAxttdBhB9QUebQgxER2kWueOvRJXPHNnyrvvh9eZINB8Eg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", - "dev": true, - "requires": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - } - }, - "terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "requires": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - } - }, - "webpack": { - "version": "5.81.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.81.0.tgz", - "integrity": "sha512-AAjaJ9S4hYCVODKLQTgG5p5e11hiMawBwV2v8MYLE0C/6UAGLuAF4n1qa9GOwdxnicaP+5k6M5HrLmD4+gIB8Q==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.0", - "@webassemblyjs/ast": "^1.11.5", - "@webassemblyjs/wasm-edit": "^1.11.5", - "@webassemblyjs/wasm-parser": "^1.11.5", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.13.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.9", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.1.2", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.7", - "watchpack": "^2.4.0", - "webpack-sources": "^3.2.3" - } - }, - "webpack-cli": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.2.tgz", - "integrity": "sha512-4y3W5Dawri5+8dXm3+diW6Mn1Ya+Dei6eEVAdIduAmYNLzv1koKVAqsfgrrc9P2mhrYHQphx5htnGkcNwtubyQ==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.0.1", - "@webpack-cli/info": "^2.0.1", - "@webpack-cli/serve": "^2.0.2", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "wildcard": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", - "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", - "dev": true - } - } -} diff --git a/is_themecore/is_themecore/_module_dev/package.json b/is_themecore/is_themecore/_module_dev/package.json deleted file mode 100644 index 6db1b8d..0000000 --- a/is_themecore/is_themecore/_module_dev/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "is_themecore_module", - "label": "Theme core module", - "version": "4.0.0", - "description": "Theme core module", - "author": "Igor Stępień", - "scripts": { - "build": "webpack --progress --mode=production --env stats=errors-only", - "js-lint": "eslint -c .eslintrc.js --ext .js,.vue ./src", - "js-lint-fix": "eslint -c .eslintrc.js --ext .js,.vue ./src --fix" - }, - "devDependencies": { - "copy-webpack-plugin": "^11.0.0", - "webpack": "^5.81.0", - "webpack-cli": "^5.0.2" - }, - "dependencies": { - "@builder.io/partytown": "^0.8.0" - } -} diff --git a/is_themecore/is_themecore/_module_dev/src/index.js b/is_themecore/is_themecore/_module_dev/src/index.js deleted file mode 100644 index ddb9ee5..0000000 --- a/is_themecore/is_themecore/_module_dev/src/index.js +++ /dev/null @@ -1,10 +0,0 @@ -import { partytownSnippet } from '@builder.io/partytown/integration'; - -const snippetContent = partytownSnippet(); - -document.addEventListener('DOMContentLoaded', () => { - const script = document.createElement("script"); - - script.textContent=snippetContent; - document.body.append(script) -}); diff --git a/is_themecore/is_themecore/_module_dev/webpack.config.js b/is_themecore/is_themecore/_module_dev/webpack.config.js deleted file mode 100644 index 0b4c475..0000000 --- a/is_themecore/is_themecore/_module_dev/webpack.config.js +++ /dev/null @@ -1,26 +0,0 @@ -// webpack.config.js -const path = require('path'); -const CopyPlugin = require('copy-webpack-plugin'); -const partytown = require('@builder.io/partytown/utils'); - -module.exports = { - entry: { - partytown: './src/index.js', - }, - output: { - path: path.resolve(__dirname, '../public'), - }, - resolve: { - extensions: ['.ts', '.js', '.mjs'], - }, - plugins: [ - new CopyPlugin({ - patterns: [ - { - from: partytown.libDirPath(), - to: path.join(__dirname, '../public', '~partytown'), - }, - ], - }), - ], -}; diff --git a/is_themecore/is_themecore/_theme_dev/.eslintignore b/is_themecore/is_themecore/_theme_dev/.eslintignore deleted file mode 100644 index a93bc5e..0000000 --- a/is_themecore/is_themecore/_theme_dev/.eslintignore +++ /dev/null @@ -1,4 +0,0 @@ -/node_modules/ -/webpack/ -postcss.config.js -webpack.config.js diff --git a/is_themecore/is_themecore/_theme_dev/.eslintrc.js b/is_themecore/is_themecore/_theme_dev/.eslintrc.js deleted file mode 100644 index 2e440f1..0000000 --- a/is_themecore/is_themecore/_theme_dev/.eslintrc.js +++ /dev/null @@ -1,27 +0,0 @@ -module.exports = { - root: true, - env: { - browser: true, - node: false, - es6: true, - jquery: true, - }, - globals: { - google: true, - document: true, - navigator: false, - window: true, - prestashop: true, - }, - extends: ['airbnb-base'], - rules: { - 'max-len': ['error', {code: 140}], - 'no-underscore-dangle': 'off', - 'no-restricted-syntax': 'off', - 'no-param-reassign': 'off', - 'import/no-unresolved': 'off', - }, - parserOptions: { - ecmaVersion: 2022 - }, -} diff --git a/is_themecore/is_themecore/_theme_dev/.nvmrc b/is_themecore/is_themecore/_theme_dev/.nvmrc deleted file mode 100644 index e44a38e..0000000 --- a/is_themecore/is_themecore/_theme_dev/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -v18.12.1 diff --git a/is_themecore/is_themecore/_theme_dev/.stylelintrc.json b/is_themecore/is_themecore/_theme_dev/.stylelintrc.json deleted file mode 100644 index 4622303..0000000 --- a/is_themecore/is_themecore/_theme_dev/.stylelintrc.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "stylelint-config-recommended-scss", - "rules": { - "scss/at-extend-no-missing-placeholder": null - } -} diff --git a/is_themecore/is_themecore/_theme_dev/index.php b/is_themecore/is_themecore/_theme_dev/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/_theme_dev/index.php +++ /dev/null @@ -1,11 +0,0 @@ - { - const target = e.target.closest('[data-toggle-listing]'); - - if (target && target.dataset.toggleListing !== undefined) { - e.preventDefault(); - - if (target.classList.contains('active')) { - return; - } - - const display = target.dataset.displayType; - const allButtons = document.querySelectorAll('[data-toggle-listing]'); - - allButtons.forEach((button) => { - button.classList.remove('active'); - }); - - target.classList.add('active'); - - let requestData = { - displayType: display, - ajax: 1, - }; - - requestData = Object.keys(requestData).map((key) => `${encodeURIComponent(key)}=${encodeURIComponent(requestData[key])}`).join('&'); - - fetch(window.listDisplayAjaxUrl, { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: requestData, - }) - .then((resp) => resp.text()) - .then((resp) => { - try { - const response = JSON.parse(resp); - - if (response.success) { - prestashop.emit('updateFacets', window.location.href); - } - } catch (error) { - console.error(error); // eslint-disable-line no-console - } - }) - .catch((error) => { - console.error(error); // eslint-disable-line no-console - }); - } - }; - - document.addEventListener('click', handleClickEvent); -} - -document.addEventListener('DOMContentLoaded', () => { - initListDisplay(); -}); diff --git a/is_themecore/is_themecore/_theme_dev/src/js/listing/index.php b/is_themecore/is_themecore/_theme_dev/src/js/listing/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/_theme_dev/src/js/listing/index.php +++ /dev/null @@ -1,11 +0,0 @@ -=7.1.0", - "rosell-dk/webp-convert": "^2.9" - }, - "require-dev": { - "prestashop/php-dev-tools": "^4.2" - }, - "autoload": { - "psr-4": { - "Oksydan\\Module\\IsThemeCore\\": "src/" - } - }, - "config": { - "prepend-autoloader": false, - "allow-plugins": { - "phpro/grumphp-shim": false, - "phpstan/extension-installer": false - } - } -} diff --git a/is_themecore/is_themecore/composer.lock b/is_themecore/is_themecore/composer.lock deleted file mode 100644 index 2738bd8..0000000 --- a/is_themecore/is_themecore/composer.lock +++ /dev/null @@ -1,2788 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "e4be3267d3460c86338ab2b6a5a711aa", - "packages": [ - { - "name": "rosell-dk/exec-with-fallback", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/exec-with-fallback.git", - "reference": "f88a6b29abd0b580566056b7c1eb0434eb5db20d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/exec-with-fallback/zipball/f88a6b29abd0b580566056b7c1eb0434eb5db20d", - "reference": "f88a6b29abd0b580566056b7c1eb0434eb5db20d", - "shasum": "" - }, - "require": { - "php": "^5.6 | ^7.0 | ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "suggest": { - "php-stan/php-stan": "Suggested for dev, in order to analyse code before committing" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "ExecWithFallback\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - } - ], - "description": "An exec() with fallback to emulations (proc_open, etc)", - "keywords": [ - "command", - "exec", - "fallback", - "open_proc", - "resiliant", - "sturdy" - ], - "support": { - "issues": "https://github.com/rosell-dk/exec-with-fallback/issues", - "source": "https://github.com/rosell-dk/exec-with-fallback/tree/1.2.0" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2021-12-08T12:09:43+00:00" - }, - { - "name": "rosell-dk/file-util", - "version": "0.1.1", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/file-util.git", - "reference": "2ff895308c37f448b34b031cfbfd8e45f43936fd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/file-util/zipball/2ff895308c37f448b34b031cfbfd8e45f43936fd", - "reference": "2ff895308c37f448b34b031cfbfd8e45f43936fd", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "rosell-dk/exec-with-fallback": "^1.0.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "FileUtil\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - } - ], - "description": "Functions for dealing with files and paths", - "keywords": [ - "files", - "path", - "util" - ], - "support": { - "issues": "https://github.com/rosell-dk/file-util/issues", - "source": "https://github.com/rosell-dk/file-util/tree/0.1.1" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2022-04-19T10:12:31+00:00" - }, - { - "name": "rosell-dk/image-mime-type-guesser", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/image-mime-type-guesser.git", - "reference": "72f7040e95a78937ae2edece452530224fcacea6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/image-mime-type-guesser/zipball/72f7040e95a78937ae2edece452530224fcacea6", - "reference": "72f7040e95a78937ae2edece452530224fcacea6", - "shasum": "" - }, - "require": { - "php": "^5.6 | ^7.0 | ^8.0", - "rosell-dk/image-mime-type-sniffer": "^1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "ImageMimeTypeGuesser\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - } - ], - "description": "Guess mime type of images", - "keywords": [ - "image", - "images", - "mime", - "mime type" - ], - "support": { - "issues": "https://github.com/rosell-dk/image-mime-type-guesser/issues", - "source": "https://github.com/rosell-dk/image-mime-type-guesser/tree/1.1.1" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2022-05-19T09:57:15+00:00" - }, - { - "name": "rosell-dk/image-mime-type-sniffer", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/image-mime-type-sniffer.git", - "reference": "9ed14cc5d2c14c417660a4dd1946b5f056494691" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/image-mime-type-sniffer/zipball/9ed14cc5d2c14c417660a4dd1946b5f056494691", - "reference": "9ed14cc5d2c14c417660a4dd1946b5f056494691", - "shasum": "" - }, - "require": { - "php": ">=5.4" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "ImageMimeTypeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - } - ], - "description": "Sniff mime type (images only)", - "keywords": [ - "image", - "images", - "mime", - "mime type" - ], - "support": { - "issues": "https://github.com/rosell-dk/image-mime-type-sniffer/issues", - "source": "https://github.com/rosell-dk/image-mime-type-sniffer/tree/1.1.1" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2022-04-20T14:31:25+00:00" - }, - { - "name": "rosell-dk/locate-binaries", - "version": "1.0", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/locate-binaries.git", - "reference": "bd2f493383ecd55aa519828dd2898e30f3b9cbb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/locate-binaries/zipball/bd2f493383ecd55aa519828dd2898e30f3b9cbb0", - "reference": "bd2f493383ecd55aa519828dd2898e30f3b9cbb0", - "shasum": "" - }, - "require": { - "php": ">=5.6", - "rosell-dk/exec-with-fallback": "^1.0.0", - "rosell-dk/file-util": "^0.1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "LocateBinaries\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - } - ], - "description": "Locate a binaries by means of exec() or similar", - "keywords": [ - "binary", - "discover", - "locate", - "whereis", - "which" - ], - "support": { - "issues": "https://github.com/rosell-dk/locate-binaries/issues", - "source": "https://github.com/rosell-dk/locate-binaries/tree/1.0" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2022-04-20T07:20:07+00:00" - }, - { - "name": "rosell-dk/webp-convert", - "version": "2.9.2", - "source": { - "type": "git", - "url": "https://github.com/rosell-dk/webp-convert.git", - "reference": "5ccba85ebe3b28ae229459fd0baed25314616ac9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rosell-dk/webp-convert/zipball/5ccba85ebe3b28ae229459fd0baed25314616ac9", - "reference": "5ccba85ebe3b28ae229459fd0baed25314616ac9", - "shasum": "" - }, - "require": { - "php": "^5.6 | ^7.0 | ^8.0", - "rosell-dk/exec-with-fallback": "^1.0.0", - "rosell-dk/image-mime-type-guesser": "^1.1.1", - "rosell-dk/locate-binaries": "^1.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.11", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.3", - "squizlabs/php_codesniffer": "3.*" - }, - "suggest": { - "ext-gd": "to use GD extension for converting. Note: Gd must be compiled with webp support", - "ext-imagick": "to use Imagick extension for converting. Note: Gd must be compiled with webp support", - "ext-vips": "to use Vips extension for converting.", - "php-stan/php-stan": "Suggested for dev, in order to analyse code before committing" - }, - "type": "library", - "extra": { - "scripts-descriptions": { - "ci": "Run tests before CI", - "phpcs": "Checks coding styles (PSR2) of file/dir, which you must supply. To check all, supply 'src'", - "phpcbf": "Fix coding styles (PSR2) of file/dir, which you must supply. To fix all, supply 'src'", - "cs-fix-all": "Fix the coding style of all the source files, to comply with the PSR-2 coding standard", - "cs-fix": "Fix the coding style of a PHP file or directory, which you must specify.", - "test": "Launches the preconfigured PHPUnit" - } - }, - "autoload": { - "psr-4": { - "WebPConvert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bjørn Rosell", - "homepage": "https://www.bitwise-it.dk/contact", - "role": "Project Author" - }, - { - "name": "Martin Folkers", - "homepage": "https://twobrain.io", - "role": "Collaborator" - } - ], - "description": "Convert JPEG & PNG to WebP with PHP", - "keywords": [ - "Webp", - "cwebp", - "gd", - "image conversion", - "images", - "imagick", - "jpg", - "jpg2webp", - "png", - "png2webp" - ], - "support": { - "issues": "https://github.com/rosell-dk/webp-convert/issues", - "source": "https://github.com/rosell-dk/webp-convert/tree/2.9.2" - }, - "funding": [ - { - "url": "https://github.com/rosell-dk", - "type": "github" - }, - { - "url": "https://ko-fi.com/rosell", - "type": "ko_fi" - } - ], - "time": "2022-05-19T13:56:36+00:00" - } - ], - "packages-dev": [ - { - "name": "composer/pcre", - "version": "3.1.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-11-17T09:50:14+00:00" - }, - { - "name": "composer/semver", - "version": "3.3.2", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Semver\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "http://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - }, - { - "name": "Rob Bast", - "email": "rob.bast@gmail.com", - "homepage": "http://robbast.nl" - } - ], - "description": "Semver library that offers utilities, version constraint parsing and validation.", - "keywords": [ - "semantic", - "semver", - "validation", - "versioning" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-04-01T19:23:25+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "ced299686f41dce890debac69273b47ffe98a40c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/ced299686f41dce890debac69273b47ffe98a40c", - "reference": "ced299686f41dce890debac69273b47ffe98a40c", - "shasum": "" - }, - "require": { - "composer/pcre": "^1 || ^2 || ^3", - "php": "^7.2.5 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/3.0.3" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-02-25T21:32:43+00:00" - }, - { - "name": "doctrine/annotations", - "version": "2.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "reference": "e157ef3f3124bbf6fe7ce0ffd109e8a8ef284e7f", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^2 || ^3", - "ext-tokenizer": "*", - "php": "^7.2 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^2.0", - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/2.0.1" - }, - "time": "2023-02-02T22:02:53+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "84a527db05647743d50373e0ec53a152f2cde568" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/84a527db05647743d50373e0ec53a152f2cde568", - "reference": "84a527db05647743d50373e0ec53a152f2cde568", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^10", - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.0" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" - } - ], - "time": "2022-12-15T16:57:16+00:00" - }, - { - "name": "friendsofphp/php-cs-fixer", - "version": "v3.16.0", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", - "reference": "d40f9436e1c448d309fa995ab9c14c5c7a96f2dc", - "shasum": "" - }, - "require": { - "composer/semver": "^3.3", - "composer/xdebug-handler": "^3.0.3", - "doctrine/annotations": "^2", - "doctrine/lexer": "^2 || ^3", - "ext-json": "*", - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0", - "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" - }, - "require-dev": { - "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", - "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", - "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "phpunitgoodpractices/polyfill": "^1.6", - "phpunitgoodpractices/traits": "^1.9.2", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" - }, - "suggest": { - "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters." - }, - "bin": [ - "php-cs-fixer" - ], - "type": "application", - "autoload": { - "psr-4": { - "PhpCsFixer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Dariusz Rumiński", - "email": "dariusz.ruminski@gmail.com" - } - ], - "description": "A tool to automatically fix PHP code style", - "keywords": [ - "Static code analysis", - "fixer", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.16.0" - }, - "funding": [ - { - "url": "https://github.com/keradus", - "type": "github" - } - ], - "time": "2023-04-02T19:30:06+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.15.4", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" - }, - "time": "2023-03-05T19:49:14+00:00" - }, - { - "name": "prestashop/autoindex", - "version": "v2.1.0", - "source": { - "type": "git", - "url": "https://github.com/PrestaShopCorp/autoindex.git", - "reference": "235f3ec115432ffc32d582198ea498467b3946d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/autoindex/zipball/235f3ec115432ffc32d582198ea498467b3946d0", - "reference": "235f3ec115432ffc32d582198ea498467b3946d0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.10", - "php": "^8.0 || ^7.2", - "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", - "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.83", - "prestashop/php-dev-tools": "1.*" - }, - "bin": [ - "bin/autoindex" - ], - "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\AutoIndex\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "AFL-3.0" - ], - "authors": [ - { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - } - ], - "description": "Automatically add an 'index.php' in all the current or specified directories and all sub-directories.", - "homepage": "https://github.com/PrestaShopCorp/autoindex", - "support": { - "source": "https://github.com/PrestaShopCorp/autoindex/tree/v2.1.0" - }, - "time": "2022-10-10T08:35:00+00:00" - }, - { - "name": "prestashop/header-stamp", - "version": "v2.3", - "source": { - "type": "git", - "url": "https://github.com/PrestaShopCorp/header-stamp.git", - "reference": "3104b69ad73b6039c7082dbba4af9dbeb0b936b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PrestaShopCorp/header-stamp/zipball/3104b69ad73b6039c7082dbba4af9dbeb0b936b3", - "reference": "3104b69ad73b6039c7082dbba4af9dbeb0b936b3", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.10", - "php": "^8.0 || ^7.2", - "symfony/console": "^3.4 || ~4.0 || ~5.0 || ~6.0", - "symfony/finder": "^3.4 || ~4.0 || ~5.0 || ~6.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.83", - "prestashop/php-dev-tools": "1.*" - }, - "bin": [ - "bin/header-stamp" - ], - "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\HeaderStamp\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "AFL-3.0" - ], - "authors": [ - { - "name": "PrestaShop SA", - "email": "contact@prestashop.com" - } - ], - "description": "Rewrite your file headers to add the license or to make them up-to-date", - "homepage": "https://github.com/PrestaShopCorp/header-stamp", - "support": { - "issues": "https://github.com/PrestaShopCorp/header-stamp/issues", - "source": "https://github.com/PrestaShopCorp/header-stamp/tree/v2.3" - }, - "time": "2023-03-23T14:44:10+00:00" - }, - { - "name": "prestashop/php-dev-tools", - "version": "v4.3.0", - "source": { - "type": "git", - "url": "https://github.com/PrestaShop/php-dev-tools.git", - "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PrestaShop/php-dev-tools/zipball/843275b19729ba810d8ba2b9c97b568e5bbabe03", - "reference": "843275b19729ba810d8ba2b9c97b568e5bbabe03", - "shasum": "" - }, - "require": { - "friendsofphp/php-cs-fixer": "^3.2", - "php": ">=7.2.5", - "prestashop/autoindex": "^2.0", - "prestashop/header-stamp": "^2.0", - "squizlabs/php_codesniffer": "^3.4", - "symfony/console": "~3.2 || ~4.0 || ~5.0 || ~6.0", - "symfony/filesystem": "~3.2 || ~4.0 || ~5.0 || ~6.0" - }, - "bin": [ - "bin/prestashop-coding-standards" - ], - "type": "library", - "autoload": { - "psr-4": { - "PrestaShop\\CodingStandards\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PrestaShop coding standards", - "support": { - "issues": "https://github.com/PrestaShop/php-dev-tools/issues", - "source": "https://github.com/PrestaShop/php-dev-tools/tree/v4.3.0" - }, - "time": "2022-10-18T14:19:51+00:00" - }, - { - "name": "psr/cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", - "keywords": [ - "cache", - "psr", - "psr-6" - ], - "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" - }, - "time": "2021-02-03T23:26:27+00:00" - }, - { - "name": "psr/container", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "shasum": "" - }, - "require": { - "php": ">=7.4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" - }, - "time": "2021-11-05T16:47:00+00:00" - }, - { - "name": "psr/event-dispatcher", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", - "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\EventDispatcher\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Standard interfaces for event handling.", - "keywords": [ - "events", - "psr", - "psr-14" - ], - "support": { - "issues": "https://github.com/php-fig/event-dispatcher/issues", - "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" - }, - "time": "2019-01-08T18:20:26+00:00" - }, - { - "name": "psr/log", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" - }, - "time": "2021-07-14T16:46:02+00:00" - }, - { - "name": "sebastian/diff", - "version": "5.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "aae9a0a43bff37bd5d8d0311426c87bf36153f02" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/aae9a0a43bff37bd5d8d0311426c87bf36153f02", - "reference": "aae9a0a43bff37bd5d8d0311426c87bf36153f02", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "phpunit/phpunit": "^10.0", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2023-03-23T05:12:41+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.7.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", - "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2023-02-22T23:07:41+00:00" - }, - { - "name": "symfony/console", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/3582d68a64a86ec25240aaa521ec8bc2342b369b", - "reference": "3582d68a64a86ec25240aaa521ec8bc2342b369b", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.4|^6.0" - }, - "conflict": { - "symfony/dependency-injection": "<5.4", - "symfony/dotenv": "<5.4", - "symfony/event-dispatcher": "<5.4", - "symfony/lock": "<5.4", - "symfony/process": "<5.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/lock": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/var-dumper": "^5.4|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-29T21:42:15+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "reference": "e2d1534420bd723d0ef5aec58a22c5fe60ce6f5e", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:25:55+00:00" - }, - { - "name": "symfony/event-dispatcher", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "reference": "04046f35fd7d72f9646e721fc2ecb8f9c67d3339", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/event-dispatcher-contracts": "^2|^3" - }, - "conflict": { - "symfony/dependency-injection": "<5.4" - }, - "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^5.4|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-20T16:06:02+00:00" - }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "reference": "0ad3b6f1e4e2da5690fefe075cd53a238646d8dd", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "suggest": { - "symfony/event-dispatcher-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:32:47+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v6.2.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "82b6c62b959f642d000456f08c6d219d749215b3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/82b6c62b959f642d000456f08c6d219d749215b3", - "reference": "82b6c62b959f642d000456f08c6d219d749215b3", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.2.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-14T08:44:56+00:00" - }, - { - "name": "symfony/finder", - "version": "v6.2.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/20808dc6631aecafbe67c186af5dcb370be3a0eb", - "reference": "20808dc6631aecafbe67c186af5dcb370be3a0eb", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "require-dev": { - "symfony/filesystem": "^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Finds files and directories via an intuitive fluent interface", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/finder/tree/v6.2.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-16T09:57:23+00:00" - }, - { - "name": "symfony/options-resolver", - "version": "v6.2.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/options-resolver.git", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/aa0e85b53bbb2b4951960efd61d295907eacd629", - "reference": "aa0e85b53bbb2b4951960efd61d295907eacd629", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.1|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\OptionsResolver\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an improved replacement for the array_replace PHP function", - "homepage": "https://symfony.com", - "keywords": [ - "config", - "configuration", - "options" - ], - "support": { - "source": "https://github.com/symfony/options-resolver/tree/v6.2.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-14T08:44:56+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/process", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "75ed64103df4f6615e15a7fe38b8111099f47416" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/75ed64103df4f6615e15a7fe38b8111099f47416", - "reference": "75ed64103df4f6615e15a7fe38b8111099f47416", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-09T16:20:02+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.2.1", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/a8c9cedf55f314f3a186041d19537303766df09a", - "reference": "a8c9cedf55f314f3a186041d19537303766df09a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^2.0" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.3-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.2.1" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-01T10:32:47+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v6.2.7", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", - "reference": "f3adc98c1061875dd2edcd45e5b04e63d0e29f8f", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/service-contracts": "^1|^2|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides a way to profile code", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/stopwatch/tree/v6.2.7" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-02-14T08:44:56+00:00" - }, - { - "name": "symfony/string", - "version": "v6.2.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/193e83bbd6617d6b2151c37fff10fa7168ebddef", - "reference": "193e83bbd6617d6b2151c37fff10fa7168ebddef", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" - }, - "conflict": { - "symfony/translation-contracts": "<2.0" - }, - "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", - "symfony/translation-contracts": "^2.0|^3.0", - "symfony/var-exporter": "^5.4|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v6.2.8" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-03-20T16:06:02+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": ">=7.1.0" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/is_themecore/is_themecore/config/admin/services.yml b/is_themecore/is_themecore/config/admin/services.yml deleted file mode 100644 index db8e7e0..0000000 --- a/is_themecore/is_themecore/config/admin/services.yml +++ /dev/null @@ -1,75 +0,0 @@ -imports: - - { resource: ../common.yml } -services: - _defaults: - public: true - - oksydan.module.is_themecore.form.settings.general_type: - class: 'Oksydan\Module\IsThemeCore\Form\Settings\GeneralType' - parent: "form.type.translatable.aware" - public: true - arguments: - $displayListChoices: '@=service("oksydan.module.is_themecore.form.choice_provider.list_display_choice_provider").getChoices()' - tags: - - { name: form.type } - - oksydan.module.is_themecore.form.settings.general_form_data_provider: - class: 'Oksydan\Module\IsThemeCore\Form\Settings\GeneralFormDataProvider' - arguments: - - "@oksydan.module.is_themecore.form.settings.general_configuration" - - oksydan.module.is_themecore.form.settings.general_form_data_handler: - class: 'PrestaShop\PrestaShop\Core\Form\Handler' - arguments: - - "@form.factory" - - "@prestashop.core.hook.dispatcher" - - "@oksydan.module.is_themecore.form.settings.general_form_data_provider" - - 'Oksydan\Module\IsThemeCore\Form\Settings\GeneralType' - - "General" - - oksydan.module.is_themecore.form.settings.webp_type: - class: 'Oksydan\Module\IsThemeCore\Form\Settings\WebpType' - parent: "form.type.translatable.aware" - public: true - arguments: - $convertersList: '@=service("oksydan.module.is_themecore.form.choice_provider.webp_library_choice_provider").getChoices()' - $convertersListFull: '@=service("oksydan.module.is_themecore.form.choice_provider.webp_library_choice_provider").getChoicesFull()' - $router: "@router" - tags: - - { name: form.type } - - oksydan.module.is_themecore.form.settings.webp_form_data_provider: - class: 'Oksydan\Module\IsThemeCore\Form\Settings\WebpFormDataProvider' - arguments: - - "@oksydan.module.is_themecore.form.settings.webp_configuration" - - oksydan.module.is_themecore.form.settings.webp_form_data_handler: - class: 'PrestaShop\PrestaShop\Core\Form\Handler' - arguments: - - "@form.factory" - - "@prestashop.core.hook.dispatcher" - - "@oksydan.module.is_themecore.form.settings.webp_form_data_provider" - - 'Oksydan\Module\IsThemeCore\Form\Settings\WebpType' - - "Webp" - - oksydan.module.is_themecore.form.choice_provider.webp_library_choice_provider: - class: Oksydan\Module\IsThemeCore\Form\ChoiceProvider\WebpLibraryChoiceProvider - arguments: - - "@oksydan.module.is_themecore.core.webp.webp_convert_libraries" - - oksydan.module.is_themecore.form.choice_provider.list_display_choice_provider: - class: Oksydan\Module\IsThemeCore\Form\ChoiceProvider\ListDisplayChoiceProvider - arguments: - - "@oksydan.module.is_themecore.core.listing_display.theme_list_display" - - oksydan.module.is_themecore.form.settings.webp_configuration: - class: Oksydan\Module\IsThemeCore\Form\Settings\WebpConfiguration - arguments: - - "@prestashop.adapter.legacy.configuration" - - oksydan.module.is_themecore.form.settings.general_configuration: - class: Oksydan\Module\IsThemeCore\Form\Settings\GeneralConfiguration - arguments: - - "@prestashop.adapter.legacy.configuration" - - "@prestashop.adapter.shop.context" - - "@prestashop.adapter.multistore_feature" diff --git a/is_themecore/is_themecore/config/common.yml b/is_themecore/is_themecore/config/common.yml deleted file mode 100644 index 5815693..0000000 --- a/is_themecore/is_themecore/config/common.yml +++ /dev/null @@ -1,39 +0,0 @@ -services: - _defaults: - public: true - - oksydan.module.is_themecore.module: - class: Is_themecore - factory: [ 'Module', 'getInstanceByName' ] - public: false - arguments: - - 'is_themecore' - - Is_themecore: '@oksydan.module.is_themecore.module' - - oksydan.module.is_themecore.core.webp.webp_convert_libraries: - class: Oksydan\Module\IsThemeCore\Core\Webp\WebpConvertLibraries - - oksydan.module.is_themecore.core.webp.webp_files_eraser: - class: Oksydan\Module\IsThemeCore\Core\Webp\WebpFilesEraser - - oksydan.module.is_themecore.core.listing_display.theme_list_display: - class: Oksydan\Module\IsThemeCore\Core\ListingDisplay\ThemeListDisplay - - oksydan.module.is_themecore.core.htaccess.htaccess_generator: - class: Oksydan\Module\IsThemeCore\Core\Htaccess\HtaccessGenerator - arguments: - - "@Is_themecore" - - oksydan.module.is_themecore.core.webp.related_image_file_finder: - class: Oksydan\Module\IsThemeCore\Core\Webp\RelatedImageFileFinder - - oksydan.module.is_themecore.core.webp.webp_generator: - class: Oksydan\Module\IsThemeCore\Core\Webp\WebpGenerator - arguments: - - "@oksydan.module.is_themecore.core.webp.related_image_file_finder" - - Oksydan\Module\IsThemeCore\Core\Partytown\FilesInstallation: - class: Oksydan\Module\IsThemeCore\Core\Partytown\FilesInstallation - arguments: - - "@Is_themecore" diff --git a/is_themecore/is_themecore/config/front/services.yml b/is_themecore/is_themecore/config/front/services.yml deleted file mode 100644 index 6806acd..0000000 --- a/is_themecore/is_themecore/config/front/services.yml +++ /dev/null @@ -1,81 +0,0 @@ -imports: - - { resource: ../common.yml } -services: - _defaults: - public: true - - Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataBreadcrumbPresenter: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataBreadcrumbPresenter' - - Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataBreadcrumbProvider: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataBreadcrumbProvider' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\BreadcrumbStructuredData: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\BreadcrumbStructuredData' - public: true - arguments: - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataBreadcrumbProvider' - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataBreadcrumbPresenter' - - Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataWebsitePresenter: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataWebsitePresenter' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataWebsiteProvider: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataWebsiteProvider' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\WebsiteStructuredData: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\WebsiteStructuredData' - public: true - arguments: - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataWebsiteProvider' - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataWebsitePresenter' - - Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataShopPresenter: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataShopPresenter' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataShopProvider: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataShopProvider' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\ShopStructuredData: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\ShopStructuredData' - public: true - arguments: - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataShopProvider' - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataShopPresenter' - - Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataProductPresenter: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataProductPresenter' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataProductProvider: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataProductProvider' - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" - - Oksydan\Module\IsThemeCore\Core\StructuredData\ProductStructuredData: - class: 'Oksydan\Module\IsThemeCore\Core\StructuredData\ProductStructuredData' - public: true - arguments: - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Provider\StructuredDataProductProvider' - - '@Oksydan\Module\IsThemeCore\Core\StructuredData\Presenter\StructuredDataProductPresenter' - - Oksydan\Module\IsThemeCore\Core\Partytown\PartytownScript: - class: Oksydan\Module\IsThemeCore\Core\Partytown\PartytownScript - arguments: - - "@Is_themecore" - - Oksydan\Module\IsThemeCore\Core\Partytown\PartytownScriptUriResolver: - class: Oksydan\Module\IsThemeCore\Core\Partytown\PartytownScriptUriResolver - arguments: - - "@=service('prestashop.adapter.legacy.context').getContext()" diff --git a/is_themecore/is_themecore/config/index.php b/is_themecore/is_themecore/config/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/config/index.php +++ /dev/null @@ -1,11 +0,0 @@ -displayType = Tools::getValue('displayType'); - } - - public function initContent() - { - parent::initContent(); - - $themeDisplay = new ThemeListDisplay(); - - if ($this->displayType) { - $themeDisplay->setDisplay($this->displayType); - $this->ajaxRender(json_encode([ - 'hasError' => false, - 'success' => true, - ])); - } else { - $this->ajaxRender(json_encode([ - 'hasError' => true, - 'success' => false, - ])); - } - } -} diff --git a/is_themecore/is_themecore/controllers/front/index.php b/is_themecore/is_themecore/controllers/front/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/controllers/front/index.php +++ /dev/null @@ -1,11 +0,0 @@ - Configuration values - */ - public const CONFIGURATION_VALUES = [ - GeneralConfiguration::THEMECORE_DISPLAY_LIST => 'grid', - GeneralConfiguration::THEMECORE_EARLY_HINTS => false, - GeneralConfiguration::THEMECORE_PRELOAD_CSS => false, - GeneralConfiguration::THEMECORE_LOAD_PARTY_TOWN => false, - GeneralConfiguration::THEMECORE_DEBUG_PARTY_TOWN => false, - WebpConfiguration::THEMECORE_WEBP_ENABLED => false, - WebpConfiguration::THEMECORE_WEBP_QUALITY => 90, - WebpConfiguration::THEMECORE_WEBP_CONVERTER => null, - WebpConfiguration::THEMECORE_WEBP_SHARPYUV => false, - ]; - - /** - * @var string[] Hooks to register - */ - public const HOOKS = [ - 'actionOutputHTMLBefore', - 'actionDispatcherBefore', - 'actionFrontControllerSetMedia', - 'displayListingStructuredData', - 'displayHeader', - 'actionProductSearchAfter', - 'actionHtaccessCreate', - 'objectShopUrlAddAfter', - 'objectShopUrlUpdateAfter', - 'objectShopUrlDeleteAfter', - 'actionFrontControllerInitBefore', - ]; - - /** - * @var Configuration Configuration - */ - private $configuration; - - public function __construct() - { - $this->name = 'is_themecore'; - $this->tab = 'others'; - $this->version = '4.1.3'; - $this->author = 'Igor Stępień'; - $this->ps_versions_compliancy = ['min' => '8.0.0', 'max' => _PS_VERSION_]; - - $this->bootstrap = true; - - parent::__construct(); - - $this->displayName = $this->trans( - 'Theme core module', - [], - 'Modules.isthemecore.Admin' - ); - $this->description = $this->trans( - 'Required for theme to work.', - [], - 'Modules.isthemecore.Admin' - ); - - $this->tabs = [ - [ - 'name' => 'Theme core module settings', - 'class_name' => 'themecoreSettings', - 'route_name' => 'is_themecore_module_settings', - 'parent_class_name' => 'CONFIGURE', - 'visible' => false, - 'wording' => 'Theme core module settings', - 'wording_domain' => 'Modules.isthemecore.Admin', - ], - ]; - - $this->configuration = new Configuration(); - } - - /** - * {@inheritdoc} - */ - public function isUsingNewTranslationSystem(): bool - { - return true; - } - - /** - * {@inheritdoc} - */ - public function install(): bool - { - return parent::install() - && $this->installConfiguration() - && $this->installPartytown() - && $this->registerHook(self::HOOKS) - ; - } - - /** - * Install configuration values - */ - private function installConfiguration(): bool - { - try { - foreach (self::CONFIGURATION_VALUES as $key => $default_value) { - $this->configuration->set($key, $default_value); - } - } catch (Exception $e) { - return false; - } - - return true; - } - - /** - * Install Partytown - */ - private function installPartytown(): bool - { - $installer = new FilesInstallation($this); // SERVICES NOT AVAILABLE DURING INSTALLATION - - try { - $installer->installFiles(); - } catch (Exception $e) { - return false; - } - - return true; - } - - /** - * {@inheritdoc} - */ - public function uninstall(): bool - { - return parent::uninstall() - && $this->uninstallConfiguration() - ; - } - - /** - * Uninstall configuration values - */ - private function uninstallConfiguration(): bool - { - try { - foreach (array_keys(self::CONFIGURATION_VALUES) as $key) { - $this->configuration->remove($key); - } - } catch (Exception $e) { - return false; - } - - return true; - } - - /** - * Get module configuration page content - */ - public function getContent(): void - { - $container = SymfonyContainer::getInstance(); - - if ($container != null) { - /** @var UrlGeneratorInterface */ - $router = $container->get('router'); - - header('Location: https://houtendiershop.com'. $router->generate('is_themecore_module_settings')); - exit; - - /*Tools::redirectAdmin($router->generate('is_themecore_module_settings')); - die();*/ - } - } - - public function __call(string $methodName, array $arguments) - { - return $this - ->getHookDispatcher() - ->dispatch($methodName, $arguments[0] ?? []); - } - - protected function getHookDispatcher(): HookDispatcher - { - if (!isset($this->hookDispatcher)) { - if (!class_exists(HookDispatcher::class)) { - require_once dirname(__FILE__) . '/vendor/autoload.php'; - } - - $this->hookDispatcher = new HookDispatcher($this); - } - - return $this->hookDispatcher; - } -} diff --git a/is_themecore/is_themecore/logo.png b/is_themecore/is_themecore/logo.png deleted file mode 100644 index 0316df9697303cb828628bac7155935098df4015..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10578 zcmV-YDXrFtP)StO&>uS)ve<0AYj>5AR{$W90N^4L=L-RlQUJ&DC0@ZjPh;=*jPLSYvv5M~MFBAl0-BNIsH z15C~g000{K(ZT*WKal6<?_01!^k@7iDG<<3=fuAC~28EsPoqkpK{9G%|Vj005J}`Hw&=0RYXHq~ibpyyzHQsFW8>#s~laM4*8xut5h5 z!4#~(4xGUqyucR%VFpA%3?#rj5JCpzfE)^;7?wd9RKPme1hudO8lVxH;SjXJF*pt9 z;1XPc>u?taU>Kgl7`%oF1VP9M6Ja4bh!J9r*dopd7nzO(B4J20l7OTj>4+3jBE`sZ zqynizYLQ(?Bl0bB6giDtK>Co|$RIL`{EECsF_eL_Q3KQhbwIhO9~z3rpmWi5G!I>X zmZEFX8nhlgfVQHi(M#xcbO3#dj$?q)F%D*o*1Pf{>6$SWH+$s3q(pv=X`qR|$iJF~TPzlc-O$C3+J1 z#CT#lv5;6stS0Uu9wDA3UMCI{Uz12A4#|?_P6{CkNG+sOq(0IRX`DyT~9-sA|ffUF>wk++Z!kWZ5P$;0Hg6gtI-;!FvmBvPc55=u2?Kjj3apE5$3psG>L zsh-pbs)#zDT1jo7c2F-(3)vyY4>O^>2$gY-Gd%Qm(Z8e zYv>2*=jns=cMJ`N4THx>VkjAF8G9M07`GWOnM|ey)0dgZR4~^v8<}UA514ONSSt1^ zd=-((5|uiYR+WC0=c-gyb5%dpd8!Lkt5pxHURHgkMpd&=fR^vEcAI*_=wwAG2sV%zY%w@v@XU~7=xdm1xY6*0;iwVIXu6TaXrs|dqbIl~ z?uTdNHFy_3W~^@g_pF#!K2~{F^;XxcN!DEJEbDF7 zS8PxlSDOr*I-AS3sI8l=#CDr)-xT5$k15hA^;2%zG3@;83hbKf2JJcaVfH2VZT8O{ z%p4LO);n}Nd~$Sk%yw*Wyz8XlG{dRHsl(}4XB%gsbDi@w7p6;)%MzD%mlsoQr;4X; zpL)xc%+^yMd)ZNTI#eJ*$O)i@o$z8)e??LqN_gLa_%;TM>o2SC_ zkmoO6c3xRt`@J4dvz#WL)-Y|z+r(Soy~}%GIzByR`p)SCKE^%*pL(B%zNWq+-#xw~ ze%5}Oeh2)X`#bu}{g3#+;d$~F@lFL`0l@*~0lk45fwKc^10MvL1f>Tx1&sx}1}_Xg z6+#RN4Ot&@lW)Km@*DYMGu&q^n$Z=?2%QyL8~QNJCQKgI5srq>2;UHXZ>IT7>CCnW zh~P(Th`1kV8JQRPeH1AwGO8}>QM6NZadh`A)~w`N`)9q5@sFvDxjWlxwsLl7tZHmh zY-8-3xPZ8-xPf?w_(k!T5_A(J3GIpG#Ms0=iQ{tu=WLoYoaCBRmULsT<=mpV7v|~C z%bs^USv6UZd^m-e5|^?+<%1wXP%juy<)>~<9TW0|n}ttBzM_qyQL(qUN<5P0omQ3h zINdvaL;7fjPeygdGYL;pD|wL_lDQ-EO;$wK-mK5raoH_7l$?~Dqf!lNmb5F^Ft;eT zPi8AClMUo~=55LwlZVRpxOiFd;3B_8yA~shQx|tGF!j;$toK>JuS&gYLDkTP@C~gS@r~shUu{a>bfJ1` z^^VQ7&C1OKHDNXFTgC{M|V%fo{xK_dk6MK@9S!GZ*1JJzrV5xZBjOk z9!NTH<(q(S+MDf~ceQX@Dh|Ry<-sT4rhI$jQ0Sq~!`#Eo-%($2E^vo}is5J@NVEf|KK?WT&2;PCq@=ncR8z zO#GQ^T~S@VXG71PKNocFOt)Y6$@AXlk6rM*aP%VgV%sIRORYVwJx6|U{ozQjTW{-S z_si{9Jg#)~P3t?+@6&(!YQWWV*Z9{iU7vZq@5byKw{9lg9JnRA_4s!7?H6|n?o8ZW zdXIRo{Jz@#>IeD{>VLHUv1Pz*;P_y`V9&!@5AO~Mho1hF|I>%z(nrik)gwkDjgOrl z9~%uCz4Bzvli{bbrxVZ0epdf^>vOB;-~HnIOV3#R*zgPai_gEVd8zYq@2jb=I>#f& zAH2?aJ@KaetDI^TYEi@@*cK3!DH=&Ikc6BhXMD#! zt+nnSYw!1*ljI~JyyqlAzt8hNXTQ@v?^@rze)Df_VXfsiIC3Bl_Ye3D=HfSm9AWUf zd9q6`xeQ|rgM%ZKOI5Vax_SCT!Ha?C1Lp$A0aaiM*a+MPd<}T?KqvX~SN>_Ce&1f` zDj`P*Lg1aiTY=*NtThBd32QBBnhXgcP5@pAd=&UQ;N8Fxp-i7{BI`=v5#S@_WB_5lao$5jj{2a+Y$YdPoKbJv(;`kUHtsT7t(OWKKt5Q{emczTGe>)8((0LEydsLgrj zU(QQj`Um{mCywK z%ka_fp2W3RYA%1ycB)~(#_6;8(|=yg^)LM?Z@A>=G^Wb5Q}0+Q?7suY0F4D4%N!i7 zg!~0K0)&w4o~%)=1XL>}v^Mj8$y&kk{)mUSmAUQaD$1@cT^5`i1!|&hCOU{3k ztR51jK0;W40pNqcdlr634o4#)eZbWKQYm(hP4eQ4&S1Kka?kyn=RmG?8+BX+q8vDXDGkIif8??wea#Sciym~ z)W2p)Z?(4-`Zmrod%Lyzvc((T(MQO;iUVUbQb4s*f>unNW+=IDJInJt9^bZ|(@tE) z+uraB($SryS|fx+XKh+zKkr$3>g#-+wr<{j?@j2mjrB(;mr{h_e=geSIJ!jETHr;+ z6D1Ye!uVv3c9f7L8B*>&93cc!2p-?QjhDXQJc8v*nVPHvV6DYk$g+sIx$BRXpZSNJ zaPh~Geh<;qCXCJyVsWSFXj&m3pZ!Egf$#b39-m^W)*wkWp10@ZS$sca+Y{SaI$Y%? z&p)4R_ast~J1_aU5ZJ8!@_2g7(!t}e*j*kzg~xyL8BFvYjP6~8q0QiESs|wYFWd7) zDJ4mo(P%}aS%#b?vMd(Q3rLcfhc|BI4OhN^RVN?E)a3L$|3YA_enWfeQM}SH$6x$0 z`cJ)%w6Sf0hO}=SEi2?pLP&%VfW;W+{H1A1=zH{)O2EuTZ?X7Z09fw4`))3O-ZS~* zH@=eAu5tEXWFxKy_0goc8|gLimS2U@^AWf(SO7vSN+~?g?*#M?8u`bKF&L8p0;Rm` z1meszOPnH?`MHHe>x};19!5@D&5ET1Jo4C1R*wv#RKWPuH1|DtKbJgbJ)io>yD-L3 zt2I$dv7geXlYnP~_=!oIpc7c}rbC~KLqL}a5eOk^x0~oJ>s-kP4~w;yFf0>>WsET= zw%YZNH=8xmG)5bZQXbWEFJah2wH$KXF)N@PaMg>><%XNS#+L14=q#dIhIe1{a;|;T zmH58L=;%1g+baH%(Yx_?kON7t$K?czj6v$DzVR%kq3$Q z#5$abz4?#^@Dy>xD0LwOS(XB<9Uflsqn=9NN(*S6Va&``8u%eYLnEw?W4`hIf9Hw| zpT%>}Sb~Bd!Ij$ReHPlK zSxgX=86IBB*u)gyy7ewl5(`*k_kP%Uj*W8)&A#9Jt=XSjOmuaH9BQSaF&f_sk6W^2 z|)~s5=?RP)OLl13c?XfEupRCQ5K^BmbP7R!8Ms(%xi9&E0 zi=C;JyXcSx(gk#tkimgvPyR~+be4{UVf9|$5Bk&Wz&UJV489kzWN4WC9(tJD?|zVH zoOV2Ve0s049bsI|%7sbn9`6~16j)>SeD645HL$o|Azdbu1_%`*>-$?*M9O&(QsGozH3M{eg=sMfkzR$osqW0TW7`uGmYrGTQ~$9em+A9f$F?f0>^ zI9^N~PP6wa;P(OA?IxvC70>h0MpLg(qLfFu+%w1I-52~IAWb#9#;2WlvKC_vMw>kL zMW-UgTHEnw4g!az`1)`W(g)mZt;O>^j0uS17Ao~HCc{_*CPN4pigEKQ_9DkvgQq-% zluS(5Np(t+rhr9=8E3E{Ak!IADi9W9EHiuwXJOe~_qf*w7iA{)z~Lg~vw#myv;;v3 z<@x9=#rMnf`X!p}I*rB@K~Ty?h(-uO5R_)lVl7g7_@2*Htw9_mK<+>6A?}n?&f~YX zQz}$^LP&|x?)*|pjC+4^6CpVc2O;Zm;;I8<3<8Po=S?+PLg1H(tsza5e5DA;TL`Qz zR)F*Hl~S}?5lNC^%}jW{FtrMkS4xS_^z2oDwH7ZY!dgqFHP)@3{nZmK7!C&^|FG|u z_w*AiNpwsfqiEKQM0I)`u%y|XV9 zH?xK`OA!c!=zL~z!@M~bn~--F2hMwTqD2bnu2gH7&lizW5{4D0{H-DgN=T_Xq$%a} zKyeHLlW8pTopW!$$Nh%R)7Bx6@+n|32?>BV3L!|-1Zxdp=)`oIx^Ri-`ST`_OrD(T zt@gV>qRqn{`N}ATKGqttH0?x=3-MzuNF`x*_(TZUe}1IawUIvwEG8jWl3OmG=M%*( z8qJy$MM*>$mht@%Yv+>`!s&-ud`T(L){tpUwG^VHB#vXJE2R65Bf%h~??hUr@d9^z zfb8K!cZU7su$Y9r1?X5vl~NB$7Nev@NZBz-fsRFWpbVc7xo=`EJ(Uv1Xs6I&js|e& z%}}0)^gw4BTDu^Y6w(EIwaz72M~v<0=HL$&i$%x?aB=aZ@R)rsKuSfDrg;H_#26>r z(=J!9q3#Imdy$B)5bVlGydaEHxk~%*l*A)dp zHjhcANkW>W&R5X}lj|IC<)#ABSv^LZ4Mv;7NnA86)(Ux(6EALXvjd6NT0B1>u!dH< z0oJ0Vv!V`ALuPq5$!JG0O9qxv3Owqq2xFX%aI3M<7jn-3oG;=#%j)`m_ow0DuqcE$ zzaVq*B%$V5PelbH(5YT8{%W1!`vF;&p_GT#DRJDURH`C{B*{{eBxdE30ZO6IRK3-) zo^v&CDs@x z%A`aJiMG1<>?3e^EG$@fLS9@PxM=I#;yEdmQ{<4ZfSDAq5RxD$k!A^6XC!Gt7*=vo z<-|~}*<|@}KO=)x#wVw9bJfu?lMl&*Q@M{}jSEN?*}%Z_$?~$-Jn!=P1)h`rVxb9n zAutoOQVKiE($ZOq)*0neb+1&ZwFW6Afgh4(3FUItMS638CCgH#>kUp>vxc6s&*XG# z&T>$mm+KPi0*w|-ZVuZdrWA$^Y3%fUSG+LmEozMh z!@XsW8R=)b(e5a5AWzR`gh4=>WkgYw=R#&q5yvx1e^#93`fg6Zp~$k7=`Ar)Z_oX*g(!+i(=<=l z+5?1O0Qdq2vH#*iV<8Fo?K#i#2@yilYS-~RA1M`Cmd?qIfK%{M)FR6gdV2;i#)+OJ zPLN6w#Swyxlh!QBQ?5=y7a5LXCF*S6BDlRF#DD3|u%8+hijV=|IWte)ta!?!(VRvA zZaFh`CQH{LBZ^y8%00PbXb?h?nT&D}FgiBQF-!Y6W=SuTHFu6ANnB@@lB8*t zpR=eeIUpFyUE=`kM?+fb91{a*XhCsq}JEBx75riSe7?L=4Is_0(x+3a1`e`q6{uB7b0?osd z#zGPDyxC7WK1G@k1Z8K{7#Hv>8hZ*dTCF;LeM4kfk{7-ir1VIVIzbRJQERY#AmpUg zLrm6N`SyJgzVDMH2}Kp8wFXakc^`V}nuz3HwOty-UfsQi6AMMiS+k$GNmZ0eRY!!; zc^Jic@KQ?J?FMn&rl+UhZONxKK@jGqY3j^oFJ!vDi;GTMLg)#`YAI3*GMy5~u?x8f z0X8SQsKYWA&sU^rp4KgVc_FS4uzP{#;E=Eogh<>@(sST)6gr=57uPD4sx%r?)M^t* zsi;=_-AYNLymrbJw>6s6_8FfAqun>fF zdWeg#`b?#vBgf`B51rTV`hI}cu7$0rJh8@ER*mL3eo!V#GuE#NS=v`(qTX_$4k6IS zAOat(C5cl!PvxN%XY*z{4;toTP{8{<&-)vAGR+T*hlL>I*~NiNN|{bLy(rHq6m{X~ z%@F70d*Fw(qXrWbqXa>S@On6=(&D7$6~?ApD5a3f<>IX|80AP1!a0;llFkYiI^>@E zYn4)8J_slAuwfwxd1i4?B&CG#^8Ry0rZcd42~TeDNFj-H2N3`v2*V0W`ADyfCsS5c zQ<6+kDwWY%6U9lVprPH4D3_hCXtyIW?Sh3fun!94>y@W|dL)wp3#UV7tp=NiyYpaP zmgXV!8TsuxZZ%;TTW!slvivL;9^usgxVu{NUmGws?5W>+X?SxS~BlzIkc z0*uyTWJp;wDcc(DRPK=%caTyNCn?Qli!96Xhu$Wn*bpZv!-E4v1ks$DIv({3p)oHg|^!E+mm6i~OA#0as zJhXWOx8Jvg$y#IHEjJ33f`G?&?B>RQ?D8z_2i+#5AIP(HGkYK^sc1*dPVQs&mDz4L z@}?V=6C#m*iT2J7G^cj4%Nt>JsRym~oKhZ{7gncfM&Qrc9`+-Sn1Hcq%eLJUTy$oG z3)jP$$7{a$?FV__mwV(-jv#cKkP3h`25odlc`NAxht5xM`a>y?IBpZiEd~cia*N2K z!d{Z;?X<@pC9L!iCn-@B<<*F@_es=wm|f70T|PYU?7I*=-e^fu1M605E;udY%;ReK z%3w_|qCet>TQkA@RTdaBtybNYl6tOqPKAABtqJNo9zsYD zp?tJ4#7ROB_;dDk_Y`O?m}q#c8rD-%aP3r6eoh-$vn=DerzMFh?6$eN^kzU>j`N`4U|$YZWUB%Pd`E9i3h=Iq+bSW z$&8^D#rU3!ff)bWX;*4m^IXX0~{4L92>hc$yehKahO?($d6v!(A5 zhi((HTjmWog=a3Lq}8l-%0j_Kac93)Yc+`LJ4q)V#UeUnfD0V9qJ+?w?3z-fv0&+N z%;p^t7oTn}x$1fH<|ih^iN3ZB^}6r06T#@DLW(Dm!aYLJRYIgxKQKm5#&LVlZB`l3 zXiU;<)=<&|1YuBOx;8=U@=4p%P=CzzgQ#FmMUWJNL|b-EMO<`-$LXgUzI=;e z_Y|+Z>{;I3Q%zRot6)i#h_RXP&HZi0Lf{EX!4b1X*gnx!LZ+s6k6LT)Hr8GttYva? zCsEYwvRpFiTi`_$Fy z>!%*Wdv;Dz&ehTe;K#UV!2nRkMGZn=y5x&3JEyXrZQ9oQ9`LPhj=P)aDj`V{fe@>T z_Ow>JjzHvIxS-jZrq!xptuuv<^pIH#l{Oq1&UUQKcoUX~Q zjZNFr5cZ#}VZGMk93gnc?B62BI zZx4U=Jy(tV*-tmMNB`=dxAFaZr-R&zKHwI1i+Ruau4*_T#BoBndv(mYt3ckSCiB;< za6RLG>RQ1quG!z+Z_v_;1#3o1eDKYJ|M#(&Ykp7h*>BZGU;Fm$KSJ=nN>$aOSjZ$5 zWLl7-cM97;F{G8P-%CS+x?qmIZYy-3w{vW5t(^zpJfO1Ck>LyDQz;Yo?Hl8M@OPG2|9 zrtM{3`ZoXiYd*T`m0!MX^7Ehm*5uz*mii|P!T+80uj{~gnu(kGdh|DrTbbS#2KJj9 zHp=%lYeCPKKCtH1pZ{-XtoXr$_DlcyK>aN@erjuL$9Qx`H^<&Bbl2<^a#hhlS+pHk zY+m7>cTNd~vKc`(jX{EiAaFm!TIj2U{9@}C9@#p^j)@Z)>J1*4tha6~1)3<~fxrFA z1aEoy&}dItUe#!ut8wiEy|^u(zN@wPTyNEUv06#=V4qUEC)8bcZD_sb+>`sha@L9E z*DV|L-+s&8J8l^rZ`}f{=;rvlfv&C)Db?{#G%1Q^F(Cvp?|1^R(j&-fC=;WRc%DM# zNhK)+ajMy}V~X|1uVBr{U}kLeg5|@ixSdhUScqDh{8k~K1vSTI1SgR zc{A`qA^57XJiFBvmksyH?+h=?_~Pvo-@A8HwDzX2jq=#81mNw!VZBxNzR>LzvPwyr z;p`|70;PQNt;awrLR~|e41*(Mrf0-0At~VGHOug%{4;Irtpf0sq#VqD2R0xBE(iXX zG29UN;={vzlAf~of#~yI{JlGy=idCUJHYCqFirrs0F&Jue>c!oLOjpkBBZ<*tSn+# zN+~P?D+2=4Ce$@DJUk`wlt$@0ahY|19yI{np1m zxO$bm?Y;+_ci<9dmjWNg<@}%M=D53wZby5!fmmOx4lnO^wIZODjpOSEF&@6>irTcX zot05E+#tAUUsWPOu0xEmR7;Xzh0hWVOlvkg7IV+WHh28AMZKl5$ajp6x33%>=l#GP zK+*g0VGh$iSO<%4-(ly1&WSz0A%*PGQsJ4@l(UIehV1c_L`g|zOn%=%F?$P*R|+A1 zwXZXWd78Fb5*PtLxu?ljZ=L3j`&-QUhZUl7`C2;&`h3ajsss)QhKo{_~3SOEAjLcDH& zi9KsAVc_BWUcPhnfqzLCMsrxu?G^G%;Fk!273xDlv<)w--=t-@RSF(Amgh>D_b)kf zX@d~r;sfQog#=G2d{2-Z6dy+~79^i(rH@J`@Z+6W8Gc(x`6}SK0yY*~SYWvy*Se4u zZJ+Z$X7=WNx?_QQ3?;&(MLgvD0(=Xv7gBD(+JC`$$!}%edvg8yqN@q2-{7g^$S%S7 gHNgetGeneralFormHandler(); - $webpFormDataHandler = $this->getWebpFormHandler(); - - /** @var FormInterface $generalForm */ - $generalForm = $generalFormDataHandler->getForm(); - $webpForm = $webpFormDataHandler->getForm(); - - return $this->render('@Modules/is_themecore/views/templates/back/components/layouts/settings.html.twig', [ - 'general_form' => $generalForm->createView(), - 'webp_form' => $webpForm->createView(), - ]); - } - - /** - * @param Request $request - * - * @return RedirectResponse - * - * @throws \LogicException - */ - public function processGeneralFormAction(Request $request) - { - return $this->processForm( - $request, - $this->getGeneralFormHandler(), - 'General' - ); - } - - /** - * @param Request $request - * - * @return RedirectResponse - * - * @throws \LogicException - */ - public function processWebpFormAction(Request $request) - { - return $this->processForm( - $request, - $this->getWebpFormHandler(), - 'Webp' - ); - } - - /** - * @param Request $request - * - * @return RedirectResponse - * - * @throws \LogicException - */ - public function processWebpEraseImages(Request $request) - { - $time_start = microtime(true); - $eraser = $this->get('oksydan.module.is_themecore.core.webp.webp_files_eraser'); - - switch ($request->get('type')) { - case 'all': - $eraser->setQuery(\_PS_ROOT_DIR_); - break; - case 'product': - $eraser->setQuery(\_PS_IMG_DIR_ . 'p/'); - break; - case 'module': - $eraser->setQuery(\_PS_MODULE_DIR_); - break; - case 'cms': - $eraser->setQuery(\_PS_IMG_DIR_ . 'cms/'); - break; - case 'themes': - $eraser->setQuery(\_PS_ROOT_DIR_ . '/themes/'); - break; - default: - $eraser->setQuery(\_PS_ROOT_DIR_); - break; - } - - $eraser->eraseFiles(); - - $time_end = microtime(true); - $execution_time = round($time_end - $time_start, 2); - - $this->addFlash('success', $this->trans('%1$s - webp images has been erased successfully in %2$ss', 'Modules.isthemecore.Admin', [$eraser->getFilesCount(), $execution_time])); - - return $this->redirectToRoute('is_themecore_module_settings'); - } - - /** - * Process form. - * - * @param Request $request - * @param FormHandlerInterface $formHandler - * @param string $hookName - * - * @return RedirectResponse - */ - private function processForm(Request $request, FormHandlerInterface $formHandler) - { - $form = $formHandler->getForm(); - $form->handleRequest($request); - - if ($form->isSubmitted()) { - if ($form->isValid()) { - $data = $form->getData(); - $saveErrors = $formHandler->save($data); - - if (!empty($data['webp_enabled'])) { - $generator = $this->get('oksydan.module.is_themecore.core.htaccess.htaccess_generator'); - - $generator->generate((bool) $data['webp_enabled']); - $generator->writeFile(); - } - - if (0 === count($saveErrors)) { - $this->addFlash('success', $this->trans('Successful update.', 'Admin.Notifications.Success')); - } else { - $this->flashErrors($saveErrors); - } - } - - $formErrors = []; - foreach ($form->getErrors(true) as $error) { - $formErrors[] = $error->getMessage(); - } - $this->flashErrors($formErrors); - } - - return $this->redirectToRoute('is_themecore_module_settings'); - } - - /** - * @return FormHandlerInterface - */ - private function getGeneralFormHandler() - { - /** @var FormHandlerInterface */ - $formDataHandler = $this->get('oksydan.module.is_themecore.form.settings.general_form_data_handler'); - - return $formDataHandler; - } - - /** - * @return FormHandlerInterface - */ - private function getWebpFormHandler() - { - /** @var FormHandlerInterface */ - $formDataHandler = $this->get('oksydan.module.is_themecore.form.settings.webp_form_data_handler'); - - return $formDataHandler; - } -} diff --git a/is_themecore/is_themecore/src/Controller/Admin/index.php b/is_themecore/is_themecore/src/Controller/Admin/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Controller/Admin/index.php +++ /dev/null @@ -1,11 +0,0 @@ -context = \Context::getContext(); - $this->pageName = $this->context->controller->getPageName(); - $this->getAvailableBreadcrumbs(); - } - - protected function getAvailableBreadcrumbs() - { - $this->breadcrumbs = $this->getCommonBreadcrumbs(); - } - - public function getBreadcrumb() - { - $breadcrumb = []; - $breadcrumb['links'] = $this->getBreadcrumbByPageName(); - $breadcrumb['count'] = count($breadcrumb['links']); - - return $breadcrumb; - } - - public function getBreadcrumbByPageName() - { - $breadcrumb = []; - - if (isset($this->breadcrumbs[$this->pageName])) { - $breadcrumb = $this->breadcrumbs[$this->pageName]; - } - - return $breadcrumb; - } - - protected function getCommonBreadcrumbs() - { - $pages = [ - [ - 'controller' => 'cart', - 'name' => $this->context->getTranslator()->trans('Shopping Cart', [], 'Shop.Theme.Checkout'), - ], - [ - 'controller' => 'pagenotfound', - 'name' => $this->context->getTranslator()->trans('404', [], 'Shop.Theme.Global'), - ], - [ - 'controller' => 'stores', - 'name' => $this->context->getTranslator()->trans('Our stores', [], 'Shop.Theme.Global'), - ], - [ - 'controller' => 'sitemap', - 'name' => $this->context->getTranslator()->trans('Sitemap', [], 'Shop.Theme.Global'), - ], - ]; - - $breadcrumbs = []; - foreach ($pages as $page) { - $breadcrumbs[$page['controller']] = [ - [ - 'url' => $this->context->link->getPageLink('index'), - 'title' => $this->context->getTranslator()->trans('Home', [], 'Shop.Theme.Global'), - ], - [ - 'url' => $this->context->link->getPageLink($page['controller']), - 'title' => $page['name'], - ], - ]; - } - - return $breadcrumbs; - } -} diff --git a/is_themecore/is_themecore/src/Core/Breadcrumbs/index.php b/is_themecore/is_themecore/src/Core/Breadcrumbs/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Core/Breadcrumbs/index.php +++ /dev/null @@ -1,11 +0,0 @@ - '~~start-is_themecore~~', - 'COMMENT_END' => '~~end-is_themecore~~', - ]; - - public function __construct(\Is_themecore $module) - { - $this->domains = \Tools::getDomains(); - $this->module = $module; - $this->moduleWebpGeneratorFile = "%{ENV:REWRITEBASE}modules/{$this->module->name}/webp.php"; - } - - public function generate($addRewrite = true): void - { - $htaccessFile = $this->getHtaccessFilePath(); - - if (file_exists($htaccessFile)) { - $content = \Tools::file_get_contents($htaccessFile); - - if (preg_match('#^(.*)\# ' . $this->wrapperBlockComments['COMMENT_START'] . '.*\# ' . $this->wrapperBlockComments['COMMENT_END'] . '[^\n]*(.*)$#s', $content, $match)) { - $this->contentBefore = $match[1]; - $this->contentAfter = $match[2]; - } else { - $this->contentAfter = $content; - } - } - - if ($addRewrite) { - $this->generateHtaccessHeader(); - - $this->write(''); - $this->write('RewriteEngine On'); - $this->writeNl(); - $this->generateImagesRewrites(); - $this->write(''); - - $this->write("# {$this->wrapperBlockComments['COMMENT_END']} Do not remove this comment"); - } - - $this->write($this->contentAfter); - } - - public function writeFile(): bool - { - $htaccessFile = $this->getHtaccessFilePath(); - - if (!$writeToFile = @fopen($htaccessFile, 'wb')) { - return false; - } - - if (!fwrite($writeToFile, $this->tempContent)) { - return false; - } - - fclose($writeToFile); - - return true; - } - - protected function getMediaDomains(): string - { - if ($this->mediaDomains === null) { - if (\Configuration::getMultiShopValues('PS_MEDIA_SERVER_1') - && \Configuration::getMultiShopValues('PS_MEDIA_SERVER_2') - && \Configuration::getMultiShopValues('PS_MEDIA_SERVER_3') - ) { - $this->medias = [ - \Configuration::getMultiShopValues('PS_MEDIA_SERVER_1'), - \Configuration::getMultiShopValues('PS_MEDIA_SERVER_2'), - \Configuration::getMultiShopValues('PS_MEDIA_SERVER_3'), - ]; - } - - $this->mediaDomains = ''; - - foreach ($this->medias as $media) { - foreach ($media as $mediaUrl) { - if ($mediaUrl) { - $this->mediaDomains .= 'RewriteCond %{HTTP_HOST} ^' . $mediaUrl . '$ [OR]' . PHP_EOL; - } - } - } - } - - return $this->mediaDomains; - } - - protected function getDomainRewriteCond($domain): string - { - return "RewriteCond %{HTTP_HOST} ^$domain$"; - } - - protected function generateImagesRewrites(): void - { - foreach ($this->domains as $domain => $uri) { - $this->generateProductImagesRewrite($domain); - $this->generateCategoryImagesRewrite($domain); - $this->generateOtherImagesRewrite($domain); - } - } - - protected function writeMediaDomainsCondition() - { - $mediaDomains = $this->getMediaDomains(); - - if ($mediaDomains) { - $this->write($mediaDomains, false); - } - } - - protected function generateProductImagesRewrite($domain): void - { - $domainRewriteCond = $this->getDomainRewriteCond($domain); - - for ($i = 1; $i <= 7; ++$i) { - $imgPath = $imgName = ''; - for ($j = 1; $j <= $i; ++$j) { - $imgPath .= '$' . $j . '/'; - $imgName .= '$' . $j; - } - $imgName .= '$' . $j; - - // WEBP FILE EXISTS - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/p/' . $imgPath . $imgName . '$' . ($j + 1) . '.webp -f'); - $this->write('RewriteRule ^' . str_repeat('([0-9])', $i) . '(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/p/' . $imgPath . $imgName . '$' . ($j + 1) . '.webp [L]'); - $this->writeNl(); - - // WEBP FILE NOT EXISTS - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/p/' . $imgPath . $imgName . '$' . ($j + 1) . '.webp !-f'); - $this->write('RewriteRule ^' . str_repeat('([0-9])', $i) . '(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.webp$ ' . $this->moduleWebpGeneratorFile . '?source=%{DOCUMENT_ROOT}/img/p/' . $imgPath . $imgName . '$' . ($j + 1) . '.webp [NC,L]'); - $this->writeNl(); - } - } - - protected function generateCategoryImagesRewrite($domain): void - { - $domainRewriteCond = $this->getDomainRewriteCond($domain); - - // WEBP FILE EXISTS - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/c/$1$2.webp -f'); - $this->write('RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/c/$1$2.webp [L]'); - $this->writeNl(); - - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/c/$1$2$3.webp -f'); - $this->write('RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ %{ENV:REWRITEBASE}img/c/$1$2$3.webp [L]'); - $this->writeNl(); - - // WEBP FILE NOT EXISTS - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/c/$1$2.webp !-f'); - $this->write('RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ ' . $this->moduleWebpGeneratorFile . '?source=%{DOCUMENT_ROOT}/img/c/$1$2.webp [NC,L]'); - $this->writeNl(); - - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{DOCUMENT_ROOT}/img/c/$1$2$3.webp !-f'); - $this->write('RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.webp$ ' . $this->moduleWebpGeneratorFile . '?source=%{DOCUMENT_ROOT}/img/c/$1$2$3.webp [NC,L]'); - $this->writeNl(); - } - - protected function generateOtherImagesRewrite($domain): void - { - $domainRewriteCond = $this->getDomainRewriteCond($domain); - - // WEBP FILE NOT EXISTS - $this->writeMediaDomainsCondition(); - $this->write($domainRewriteCond); - $this->write('RewriteCond %{REQUEST_FILENAME} !-f'); - $this->write('RewriteRule ^(.*)\.webp$ ' . $this->moduleWebpGeneratorFile . '?source=%{DOCUMENT_ROOT}/$1.webp [NC,L]'); - $this->writeNl(); - } - - protected function generateHtaccessHeader(): void - { - $this->write("# {$this->wrapperBlockComments['COMMENT_START']} Do not remove this comment"); - $this->write('# Allow webp files to be sent by Apache 2.2'); - $this->write(''); - $this->write('', true, 1); - $this->write('Allow from all', true, 2); - $this->write('', true, 1); - $this->write(''); - $this->writeNl(); - - $this->write('# Allow webp files to be sent by Apache 2.4'); - $this->write(''); - $this->write('', true, 1); - $this->write('Require all granted', true, 2); - $this->write('allow from all', true, 2); - $this->write('', true, 1); - $this->write(''); - $this->writeNl(); - } - - protected function write($line, $addEOL = true, $tabs = 0): void - { - $this->tempContent .= str_repeat("\t", $tabs) . $line . ($addEOL ? PHP_EOL : ''); - } - - protected function writeNl(): void - { - $this->write(''); - } - - protected function getHtaccessFilePath(): string - { - return _PS_ROOT_DIR_ . '/.htaccess'; - } -} diff --git a/is_themecore/is_themecore/src/Core/Htaccess/index.php b/is_themecore/is_themecore/src/Core/Htaccess/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Core/Htaccess/index.php +++ /dev/null @@ -1,11 +0,0 @@ -displayList)) { - $display = \Configuration::get(GeneralConfiguration::THEMECORE_DISPLAY_LIST); - } - - $response = new Response(); - - $response->headers->setCookie(new Cookie( - $this->cookieName, - $display, - (new \DateTime('now'))->modify('+ 30 days')->getTimestamp(), - '/' - )); - - return $response->sendHeaders(); - } - - public function getDisplay() - { - $displayFromCookie = $this->getRequest()->cookies->get($this->cookieName); - - if ($displayFromCookie) { - return $displayFromCookie; - } - - return \Configuration::get(GeneralConfiguration::THEMECORE_DISPLAY_LIST); - } - - public function getDisplayOptions() - { - return $this->displayList; - } -} diff --git a/is_themecore/is_themecore/src/Core/ListingDisplay/index.php b/is_themecore/is_themecore/src/Core/ListingDisplay/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Core/ListingDisplay/index.php +++ /dev/null @@ -1,11 +0,0 @@ -module = $module; - } - - public function installFiles(): void - { - $this->installPartytown(); - } - - protected function getFileSystem(): Filesystem - { - return new Filesystem(); - } - - private function installPartytown(): void - { - $source = _PS_MODULE_DIR_ . $this->module->name . '/public/~partytown'; - $destination = _PS_ROOT_DIR_ . '/~partytown'; - $fileSystem = $this->getFileSystem(); - - if (!file_exists($source)) { - return; - } - - if (file_exists($destination)) { - $fileSystem->remove($destination); - } - - $fileSystem->mkdir($destination); - - $directoryIterator = new \RecursiveDirectoryIterator($source, \RecursiveDirectoryIterator::SKIP_DOTS); - $iterator = new \RecursiveIteratorIterator($directoryIterator, \RecursiveIteratorIterator::SELF_FIRST); - - foreach ($iterator as $item) { - if ($item->isDir()) { - $fileSystem->mkdir($destination . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); - } else { - $fileSystem->copy($item, $destination . DIRECTORY_SEPARATOR . $iterator->getSubPathName()); - } - } - } -} diff --git a/is_themecore/is_themecore/src/Core/Partytown/PartytownScript.php b/is_themecore/is_themecore/src/Core/Partytown/PartytownScript.php deleted file mode 100644 index d145361..0000000 --- a/is_themecore/is_themecore/src/Core/Partytown/PartytownScript.php +++ /dev/null @@ -1,36 +0,0 @@ -module = $module; - } - - public function getScriptPath(): string - { - return _PS_MODULE_DIR_ . $this->module->name . '/public/partytown.js'; - } - - public function getScriptUri(): string - { - return $this->module->getPathUri() . '/public/partytown.js'; - } - - public function getScriptContent(): string - { - $script = ''; - $filePath = $this->getScriptPath(); - - if (file_exists($filePath)) { - $script = file_get_contents($filePath); - } - - return $script; - } -} diff --git a/is_themecore/is_themecore/src/Core/Partytown/PartytownScriptUriResolver.php b/is_themecore/is_themecore/src/Core/Partytown/PartytownScriptUriResolver.php deleted file mode 100644 index 951e0db..0000000 --- a/is_themecore/is_themecore/src/Core/Partytown/PartytownScriptUriResolver.php +++ /dev/null @@ -1,21 +0,0 @@ -context = $context; - } - - public function getScriptUri(): string - { - return $this->context->shop->physical_uri . self::PUBLIC_PARTYTOWN_PATH; - } -} diff --git a/is_themecore/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php b/is_themecore/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php deleted file mode 100644 index 8b1ab23..0000000 --- a/is_themecore/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php +++ /dev/null @@ -1,303 +0,0 @@ - $width, 'height' => $height]); - - $attributes['src'] = $placeholderSrc; - } - - $attributesToPrint = []; - - foreach ($attributes as $attr => $value) { - $attributesToPrint[] = $attr . '="' . $value . '"'; - } - - return implode(PHP_EOL, $attributesToPrint); - } - - public static function generateImageSvgPlaceholder($params) - { - $width = $params['width']; - $height = $params['height']; - - return "data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='$width' height='$height' viewBox='0 0 1 1'%3E%3C/svg%3E"; - } - - public static function appendParamToUrl($params) - { - list( - 'url' => $url, - 'key' => $key, - 'value' => $value - ) = $params; - - $replace = false; - - if (isset($params['replace'])) { - $replace = $params['replace']; - } - - if (!is_array($value)) { - $value = [$value]; - } else { - $replace = false; - } - - foreach ($value as $qValue) { - $query = parse_url($url, PHP_URL_QUERY); - - if ($query) { - if ($replace) { - parse_str($query, $queryParams); - $queryParams[$key] = $qValue; - $url = str_replace("?$query", '?' . http_build_query($queryParams), $url); - } else { - $queryParams = []; - $queryParams[$key] = $qValue; - $url .= '&' . http_build_query($queryParams); - } - } else { - $url .= '?' . urlencode($key) . '=' . urlencode($qValue); - } - } - - return $url; - } - - public static function imagesBlock($params, $content, $smarty) - { - $webpEnabled = isset($params['webpEnabled']) ? $params['webpEnabled'] : \Configuration::get(WebpConfiguration::THEMECORE_WEBP_ENABLED); - - if ($webpEnabled && !empty($content)) { - $pictureGenerator = new WebpPictureGenerator($content); - - $pictureGenerator - ->loadContent() - ->generatePictureTags(); - - return $pictureGenerator->getContent(); - } - - return $content; - } - - public static function displayMobileBlock($params, $content, $smarty) - { - if (!empty($content) && \Context::getContext()->isMobile()) { - return $content; - } - - return ''; - } - - public static function displayDesktopBlock($params, $content, $smarty) - { - if (!empty($content) && !\Context::getContext()->isMobile()) { - return $content; - } - - return ''; - } - - public static function cmsImagesBlock($params, $content, $smarty) - { - $doc = new \DOMDocument(); - $doc->loadHTML('' . $content); - $context = \Context::getContext(); - - $images = $doc->getElementsByTagName('img'); - - $domains = \Tools::getDomains(); - $medias = [ - \Configuration::get('PS_MEDIA_SERVER_1'), - \Configuration::get('PS_MEDIA_SERVER_2'), - \Configuration::get('PS_MEDIA_SERVER_3'), - ]; - - $internalUrls = []; - - foreach ($domains as $domain => $options) { - $internalUrls[] = $domain; - } - - foreach ($medias as $media) { - if ($media) { - $internalUrls[] = $media; - } - } - - foreach ($images as $image) { - $newImg = $doc->createElement('img'); - $src = urldecode($image->attributes->getNamedItem('src')->nodeValue); - - if (!preg_match('/' . implode('|', $internalUrls) . '/i', $src)) { - $newImg->setAttribute('data-external-url', ''); - } - - foreach ($image->attributes as $attribute) { - $newImg->setAttribute($attribute->nodeName, $attribute->nodeValue); - } - - $image->parentNode->replaceChild($newImg, $image); - } - - $content = $doc->saveHTML(); - $content = str_replace('', '', $content); - - $webpEnabled = isset($params['webpEnabled']) ? $params['webpEnabled'] : \Configuration::get(WebpConfiguration::THEMECORE_WEBP_ENABLED); - - if ($webpEnabled && !empty($content)) { - $pictureGenerator = new WebpPictureGenerator($content); - - $pictureGenerator - ->loadContent() - ->generatePictureTags(); - - return $pictureGenerator->getContent(); - } - - return $content; - } - - - -/* CUSTOM ADDITIONS BELOW */ - - - public static function isBright($hexColor) - { - $calculator = new ColorBrightnessCalculator(); - return $calculator->isBright($hexColor); - } - - public static function displaySvgIcon($params){ - /* - Helper to display SVG icons stored in themes/falcon/_dev/img/icons/ - registered under public_html/modules/is_themecore/src/Hook/Smarty.php - - Usage examples in a TPL file: - - {svg_icon file='person.svg' fill='red' width='24' height='24'} - {svg_icon file='person.svg'} - */ - - // Grab svg under falcon/_dev/img and display an error if not found - if (empty($params['file'])) { - return ''; - } - $icon_path = _PS_THEME_DIR_ . '/_dev/img/' . basename($params['file']); - - if (!is_file($icon_path)) { - if (defined('_PS_MODE_DEV_') && _PS_MODE_DEV_) { - return 'Invalid SVG path: ' . htmlspecialchars($icon_path); - } - return ''; - } - - $svg_content = file_get_contents($icon_path); - - /* Define an associative array of SVG properties - If the property is a style, addd it in a style tag. - If the property is an attribute, replace it in the svg code. - - This reduces the risk of interfering with other attributes in the svg's code that can mess up the whole image. */ - $svg_props = array( - 'width' => 'style', - 'height' => 'style', - 'opacity' => 'style', - 'fill' => 'attribute', - 'stroke' => 'attribute', - ); - - // Styles - $styles = []; - foreach ($svg_props as $prop => $type) { - if ($type === 'style' && !empty($params[$prop])) { - $value = $params[$prop]; - if (in_array($prop, ['width', 'height']) && is_numeric($value)) { - $value .= 'px'; - } - $styles[] = $prop . ': ' . $value; - } - } - if (!empty($styles)) { - $style_attr = 'style="' . implode('; ', $styles) . '"'; - $svg_content = preg_replace('/(]*?)>/', '$1 ' . $style_attr . '>', $svg_content, 1); - } - - // Attributes - foreach ($svg_props as $prop => $type) { - if ($type === 'attribute' && !empty($params[$prop])) { - $value = $params[$prop]; - // Use word boundaries to avoid matching partial names like fill-opacity or stroke-width - // Replace ALL occurrences of the attribute - $svg_content = preg_replace( - '/\b' . preg_quote($prop) . '\b\s*=\s*"[^"]*"/', - $prop . '="' . $value . '"', - $svg_content - ); - } - } - - return $svg_content; - } - - - public static function displayPriceSplit($price, $show_currency = false) { - /* Helper to split the price into euros and cents to make it more stylish - registered under public_html/modules/is_themecore/src/Hook/Smarty.php - - Usage examples in a TPL file: - {price_split price=$product.price} - - */ - //Convert to a string and only keep numbers, commas and dots - $currency_name = \Context::getContext()->currency->name; - $currency_symbol = \Context::getContext()->currency->symbol; - $price_string = implode(',', $price); - $price_string = preg_replace('/[^0-9,.]/', '', $price_string); - - // Split by comma and wrap each part in a span - $price_parts = explode(',', $price_string); - if (count($price_parts) >= 2) { - echo '' . ($show_currency ? $currency_symbol : '') . $price_parts[0] . ''; - echo '' . $price_parts[1] . ''; - } else { - foreach ($price_parts as $part) { - echo '' . $part . ''; - } - } - } -} \ No newline at end of file diff --git a/is_themecore/is_themecore/src/Core/StructuredData/AbstractStructuredData.php b/is_themecore/is_themecore/src/Core/StructuredData/AbstractStructuredData.php deleted file mode 100644 index c8f32d2..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/AbstractStructuredData.php +++ /dev/null @@ -1,45 +0,0 @@ -provider = $provider; - $this->presenter = $presenter; - } - - /** - * Return formatted json data - * - * @return string - */ - public function getFormattedData(): string - { - $data = $this->provider->getData(); - - $jsonData = $this->presenter->present($data); - - \Hook::exec('actionStructuredData' . ucfirst($this->getStructuredDataType()), - [ - 'jsonData' => &$jsonData, - 'rawData' => $data, - ] - ); - - if (empty($jsonData)) { - return ''; - } else { - return json_encode($jsonData, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); - } - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/BreadcrumbStructuredData.php b/is_themecore/is_themecore/src/Core/StructuredData/BreadcrumbStructuredData.php deleted file mode 100644 index 7bd16aa..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/BreadcrumbStructuredData.php +++ /dev/null @@ -1,11 +0,0 @@ -breadcrumbData = $data; - - $this->presentBreadcrumbData(); - - return $this->presentedData; - } - - private function presentBreadcrumbData(): void - { - $breadcrumbs = $this->breadcrumbData['links']; - - if ($this->breadcrumbData['count'] > 1) { - $this->presentedData['@context'] = 'http://schema.org'; - $this->presentedData['@type'] = 'BreadcrumbList'; - $this->presentedData['itemListElement'] = []; - - foreach ($breadcrumbs as $i => $breadcrumb) { - $this->presentedData['itemListElement'][] = [ - '@type' => 'ListItem', - 'position' => $i + 1, - 'name' => $breadcrumb['title'], - 'item' => $breadcrumb['url'], - ]; - } - } - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataPresenterInterface.php b/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataPresenterInterface.php deleted file mode 100644 index 2be69d3..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataPresenterInterface.php +++ /dev/null @@ -1,15 +0,0 @@ -context = $context; - } - - public function present($data): array - { - $this->productData = $data; - - $this->getProductBasics(); - $this->getProductIdentifier(); - $this->getProductBrandData(); - $this->getProductReviewsData(); - $this->getProductOffers(); - - return $this->presentedData; - } - - private function getProductBasics(): void - { - $this->presentedData['@context'] = 'http://schema.org/'; - $this->presentedData['@type'] = 'Product'; - $this->presentedData['name'] = $this->productData['name']; - $this->presentedData['category'] = $this->productData['category_name']; - - if (!empty($this->productData['description_short'])) { - $this->presentedData['description'] = strip_tags($this->productData['description_short']); - } - - if ($this->productData['default_image']) { - $this->presentedData['image'] = $this->productData['default_image']['large']['url']; - } - - if ($this->productData['reference']) { - $this->presentedData['sku'] = $this->productData['reference']; - } - - if (!empty($this->productData['weight']) && $this->productData['weight'] > 0) { - $this->presentedData['weight'] = [ - '@context' => 'https://schema.org', - '@type' => 'QuantitativeValue', - 'value' => $this->productData['weight'], - 'unitCode' => $this->productData['weight_unit'], - ]; - } - } - - private function getProductBrandData(): void - { - if (empty($this->productData['id_manufacturer'])) { - return; - } - - $productManufacturer = new \Manufacturer((int) $this->productData['id_manufacturer'], $this->context->language->id); - - if (!empty($productManufacturer->name)) { - $this->presentedData['brand'] = [ - '@type' => 'Brand', - 'name' => $productManufacturer->name, - ]; - } - } - - private function getProductIdentifier(): void - { - if (!empty($this->productData['ean13'])) { - $this->presentedData['gtin13'] = $this->productData['ean13']; - } elseif (!empty($this->productData['upc'])) { - $this->presentedData['gtin13'] = '0' . $this->productData['upc']; - } elseif (!empty($this->productData['isbn'])) { - $this->presentedData['isbn'] = $this->productData['isbn']; - } elseif (!empty($this->productData['reference'])) { - $this->presentedData['mpn'] = $this->productData['reference']; - } - } - - private function getProductOffers(): void - { - if (!$this->productData['show_price']) { - return; - } - - $this->presentedData['offers'] = [ - '@type' => 'Offer', - 'name' => $this->productData['name'], - 'price' => $this->productData['price_amount'], - 'url' => $this->productData['url'], - 'priceCurrency' => $this->context->currency->iso_code, - ]; - - if (count($this->productData['images']) > 0) { - $images = []; - - foreach ($this->productData['images'] as $img) { - $images[] = $img['large']['url']; - } - - $this->presentedData['offers']['image'] = $images; - } - - if ($this->productData['reference']) { - $this->presentedData['offers']['sku'] = $this->productData['reference']; - } - - $this->presentedData['offers']['availability'] = $this->productData['quantity'] > 0 || $this->productData['allow_oosp'] ? 'http://schema.org/InStock' : 'http://schema.org/OutOfStock'; - - if ($this->productData['show_condition'] && isset($this->productData['condition'])) { - $this->presentedData['offers']['itemCondition'] = $this->productData['condition']['schema_url']; - } - - if ($this->productData['specific_prices'] && $this->productData['specific_prices']['to'] > (new \DateTime())->format('Y-m-d H:i:s')) { - $date = new \DateTime($this->productData['specific_prices']['to']); - $this->presentedData['offers']['priceValidUntil'] = $date->format('Y-m-d'); - } - } - - private function getProductReviewsData(): void - { - if (empty($this->productData['productRating'])) { - return; - } - - $reviews = []; - - foreach ($this->productData['productRating']['reviews'] as $review) { - $datePublished = new \DateTime($review['date_add']); - - $reviews[] = [ - '@type' => 'Review', - 'author' => [ - '@type' => 'Person', - 'name' => $review['customer_name'], - ], - 'name' => $review['title'], - 'reviewBody' => $review['content'], - 'datePublished' => $datePublished->format(\DateTime::ATOM), - 'reviewRating' => [ - '@type' => 'Rating', - 'ratingValue' => $review['grade'], - ], - ]; - } - - $aggregateRating = [ - '@type' => 'AggregateRating', - 'ratingValue' => $this->productData['productRating']['averageGrade'], - 'ratingCount' => $this->productData['productRating']['commentsNb'], - 'reviewCount' => $this->productData['productRating']['commentsNb'], - ]; - - if ($reviews) { - $this->presentedData['review'] = $reviews; - } - $this->presentedData['aggregateRating'] = $aggregateRating; - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataShopPresenter.php b/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataShopPresenter.php deleted file mode 100644 index 7e67d10..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataShopPresenter.php +++ /dev/null @@ -1,75 +0,0 @@ -context = $context; - } - - public function present($data): array - { - $this->shopData = $data; - - $this->presentShopData(); - - return $this->presentedData; - } - - private function presentShopData(): void - { - $this->presentedData['@context'] = 'http://schema.org'; - $this->presentedData['@type'] = 'Organization'; - $this->presentedData['name'] = $this->shopData['name']; - $this->presentedData['url'] = $this->context->link->getPageLink('index'); - $this->presentedData['logo'] = [ - '@type' => 'ImageObject', - 'url' => $this->shopData['logo'], - ]; - - if ($this->shopData['phone']) { - $this->presentedData['contactPoint'] = [ - '@type' => 'ContactPoint', - 'telephone' => $this->shopData['phone'], - 'contactType' => 'customer service', - ]; - } - - $address = $this->shopData['address']; - $postalCode = $address['postcode']; - $city = $address['city']; - $country = $address['country']; - $addressRegion = $address['state']; - $streetAddress = $address['address1']; - - if ($postalCode || $city || $country || $addressRegion || $streetAddress) { - $this->presentedData['address'] = [ - '@type' => 'PostalAddress', - ]; - - if ($postalCode) { - $this->presentedData['address']['postalCode'] = $postalCode; - } - if ($streetAddress) { - $this->presentedData['address']['streetAddress'] = $streetAddress; - } - if ($country || $city) { - $addressLocality = ''; - if ($city) { - $addressLocality = $city; - } - if ($country) { - $addressLocality .= ($addressLocality != '' ? ', ' : '') . $country; - } - - $this->presentedData['address']['addressLocality'] = $addressLocality; - } - } - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataWebsitePresenter.php b/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataWebsitePresenter.php deleted file mode 100644 index 2dd591b..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Presenter/StructuredDataWebsitePresenter.php +++ /dev/null @@ -1,35 +0,0 @@ -context = $context; - } - - public function present($data): array - { - $this->websiteData = $data; - - $this->presentShopData(); - - return $this->presentedData; - } - - private function presentShopData(): void - { - $this->presentedData['@context'] = 'http://schema.org'; - $this->presentedData['@type'] = 'WebSite'; - $this->presentedData['url'] = $this->context->link->getPageLink('index'); - $this->presentedData['image'] = [ - '@type' => 'ImageObject', - 'url' => $this->websiteData['logo'], - ]; - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/ProductStructuredData.php b/is_themecore/is_themecore/src/Core/StructuredData/ProductStructuredData.php deleted file mode 100644 index ad82831..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/ProductStructuredData.php +++ /dev/null @@ -1,11 +0,0 @@ -context = $context; - } - - public function getData(): array - { - return $this->context->controller->getBreadcrumb(); - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProductProvider.php b/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProductProvider.php deleted file mode 100644 index ec9ce9d..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProductProvider.php +++ /dev/null @@ -1,51 +0,0 @@ -context = $context; - } - - private function provideProductCommentsDataIfModuleEnabled(): void - { - $commentsData = []; - - if (\Module::isEnabled('productcomments')) { - $productCommentRepository = $this->context->controller->getContainer()->get('product_comment_repository'); - $commentsModerate = (bool) \Configuration::get('PRODUCT_COMMENTS_MODERATE'); - $commentsNb = $productCommentRepository->getCommentsNumber($this->data['id'], $commentsModerate); - - if ($commentsNb > 0) { - $averageGrade = $productCommentRepository->getAverageGrade($this->data['id'], $commentsModerate); - $reviewsData = $productCommentRepository->paginate($this->data['id'], 1, 50, $commentsModerate); // get 50 reviews - - $commentsData = [ - 'averageGrade' => $averageGrade, - 'commentsNb' => $commentsNb, - 'reviews' => $reviewsData, - ]; - } - } - - $this->data['productRating'] = $commentsData; - } - - public function getProductData(): void - { - $this->data = $this->context->controller->getTemplateVarProduct()->jsonSerialize(); - } - - public function getData(): array - { - $this->getProductData(); - $this->provideProductCommentsDataIfModuleEnabled(); - - return $this->data; - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProviderInterface.php b/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProviderInterface.php deleted file mode 100644 index 79dbeed..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataProviderInterface.php +++ /dev/null @@ -1,13 +0,0 @@ -context = $context; - } - - public function getData(): array - { - return $this->context->smarty->getTemplateVars('shop'); - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataWebsiteProvider.php b/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataWebsiteProvider.php deleted file mode 100644 index 077c685..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/Provider/StructuredDataWebsiteProvider.php +++ /dev/null @@ -1,18 +0,0 @@ -context = $context; - } - - public function getData(): array - { - return $this->context->smarty->getTemplateVars('shop'); - } -} diff --git a/is_themecore/is_themecore/src/Core/StructuredData/ShopStructuredData.php b/is_themecore/is_themecore/src/Core/StructuredData/ShopStructuredData.php deleted file mode 100644 index 76d25e3..0000000 --- a/is_themecore/is_themecore/src/Core/StructuredData/ShopStructuredData.php +++ /dev/null @@ -1,11 +0,0 @@ -themeAssetsFileDir = $themeDir . 'config/assets.yml'; - } - - public function getFileParsed(): array - { - if (!$this->fileContentRead) { - if (file_exists($this->themeAssetsFileDir)) { - $this->fileParsed = Yaml::parse(file_get_contents($this->themeAssetsFileDir)); - } - - $this->fileContentRead = true; - } - - return $this->fileParsed; - } - - public function getCssAssets(): array - { - $cssAssets = []; - - if (!empty($this->getFileParsed()['css'])) { - $cssAssets = $this->getFileParsed()['css']; - } - - return $cssAssets; - } - - public function getJsAssets(): array - { - $jsAssets = []; - - if (!empty($this->getFileParsed()['js'])) { - $jsAssets = $this->getFileParsed()['js']; - } - - return $jsAssets; - } -} diff --git a/is_themecore/is_themecore/src/Core/ThemeAssets/ThemeAssetsRegister.php b/is_themecore/is_themecore/src/Core/ThemeAssets/ThemeAssetsRegister.php deleted file mode 100644 index b4937fe..0000000 --- a/is_themecore/is_themecore/src/Core/ThemeAssets/ThemeAssetsRegister.php +++ /dev/null @@ -1,140 +0,0 @@ -assetsDataProvider = $assetsDataProvider; - $this->context = $context; - $this->themeName = $this->context->shop->theme->getName(); - $this->currentPageName = $this->context->controller->getPageName(); - $this->themePath = 'themes/' . $this->themeName . '/assets/'; - $this->cssAssets = $assetsDataProvider->getCssAssets(); - $this->jsAssets = $assetsDataProvider->getJsAssets(); - } - - private function getFilteredCssAssetsByPage(): array - { - return $this->filterAssetsArrayByPage($this->cssAssets); - } - - private function getFilteredJsAssetsByPage(): array - { - return $this->filterAssetsArrayByPage($this->jsAssets); - } - - private function filterAssetsArrayByPage($assetsArray): array - { - $pageName = $this->currentPageName; - - return array_filter($assetsArray, function ($asset) use ($pageName) { - if (empty($asset['include'])) { - return true; - } - - if (in_array($pageName, $asset['include'])) { - return true; - } - - foreach ($asset['include'] as $matchType) { - $regex = str_replace( - ['\*'], - ['.*', '.'], - preg_quote($matchType) - ); - - if (preg_match('/^' . $regex . '$/is', $pageName)) { - return true; - } - } - - return false; - }); - } - - public function registerThemeAssets(): void - { - $this->registerJsAssets(); - $this->registerCssAssets(); - } - - public function registerJsAssets(): void - { - $assetsToRegister = $this->getFilteredJsAssetsByPage(); - - $default_params = [ - 'position' => \AbstractAssetManager::DEFAULT_JS_POSITION, - 'priority' => \AbstractAssetManager::DEFAULT_PRIORITY, - 'inline' => false, - 'attributes' => null, - 'server' => 'local', - ]; - - foreach ($assetsToRegister as $id => $asset) { - $params = array_merge($default_params, $asset); - $file = $params['server'] === 'local' ? $this->themePath . 'js/' . $asset['fileName'] : $asset['fileName']; - - $this->context->controller->registerJavascript( - 'theme-' . $id, - $file, - [ - 'position' => $params['position'], - 'priority' => $params['priority'], - 'inline' => $params['inline'], - 'attributes' => $params['attributes'], - 'server' => $params['server'], - ] - ); - } - } - - public function registerCssAssets(): void - { - $assetsToRegister = $this->getFilteredCssAssetsByPage(); - - $default_params = [ - 'media' => \AbstractAssetManager::DEFAULT_MEDIA, - 'priority' => \AbstractAssetManager::DEFAULT_PRIORITY, - 'inline' => false, - 'server' => 'local', - ]; - - foreach ($assetsToRegister as $id => $asset) { - $params = array_merge($default_params, $asset); - $file = $params['server'] === 'local' ? $this->themePath . 'css/' . $asset['fileName'] : $asset['fileName']; - - $this->context->controller->registerStylesheet( - 'theme-' . $id, - $file, - [ - 'media' => $params['media'], - 'priority' => $params['priority'], - 'server' => $params['server'], - ] - ); - } - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/RelatedImageFileFinder.php b/is_themecore/is_themecore/src/Core/Webp/RelatedImageFileFinder.php deleted file mode 100644 index d8eaa4a..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/RelatedImageFileFinder.php +++ /dev/null @@ -1,38 +0,0 @@ -allowedImagesExtensions = $allowedImagesExtensions; - - return $this; - } - - public function getAllowedImagesExtensions() - { - return $this->allowedImagesExtensions; - } - - public function findFile($relatedFile) - { - $fileData = pathinfo($relatedFile); - $possibleFiles = []; - - $extensions = $this->getAllowedImagesExtensions(); - - foreach ($extensions as $ext) { - $possibleFiles[] = $fileData['dirname'] . '/' . $fileData['filename'] . '.' . $ext; - } - - foreach ($possibleFiles as $file) { - if (file_exists($file)) { - return $file; - } - } - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/WebpConvertLibraries.php b/is_themecore/is_themecore/src/Core/Webp/WebpConvertLibraries.php deleted file mode 100644 index 5b63676..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/WebpConvertLibraries.php +++ /dev/null @@ -1,60 +0,0 @@ - ['label' => 'Cwebp binary'], - 'vips' => ['label' => 'Vips PHP extension'], - 'imagick' => ['label' => 'Imagick PHP extension'], - 'gmagick' => ['label' => 'Gmagick PHP extension'], - 'imagemagick' => ['label' => 'Imagemagick binary'], - 'graphicsmagick' => ['label' => 'Graphicsmagick binary (gm)'], - 'gd' => ['label' => 'Gd PHP extension'], - // NOT SUPPORTED - // 'ewww' => ['label' => 'EWWW cloud service'], - ]; - - protected $exampleImgFile = _PS_MODULE_DIR_ . 'is_themecore/views/img/example.jpg'; - protected $exampleImgFileDesc = _PS_MODULE_DIR_ . 'is_themecore/views/img/example.webp'; - - public function getConvertersList(): array - { - $converters = $this->converters; - - foreach ($converters as $converterId => $converterOptions) { - $converters[$converterId]['id'] = $converterId; - - try { - $converterInstance = ConverterFactory::makeConverter($converterId, $this->exampleImgFile, $this->exampleImgFileDesc, []); - $converterInstance->checkOperationality(); - $converterInstance->doConvert(); - $converters[$converterId]['disabled'] = false; - } catch (ConversionFailedException $conversionFailedException) { - $converters[$converterId]['disabled'] = true; - } catch (ConverterNotFoundException $converterNotFoundException) { - $converters[$converterId]['disabled'] = true; - } - } - - return $converters; - } - - public function getFirstAvailableConverter(): array - { - $list = $this->getConvertersList(); - - foreach ($list as $converter) { - if (!$converter['disabled']) { - return $converter; - } - } - - return []; - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/WebpFilesEraser.php b/is_themecore/is_themecore/src/Core/Webp/WebpFilesEraser.php deleted file mode 100644 index 17987e8..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/WebpFilesEraser.php +++ /dev/null @@ -1,79 +0,0 @@ -finder = new Finder(); - } - - public function setQuery($query) - { - $this->query = $query; - - return $this; - } - - public function getQuery() - { - return $this->query; - } - - public function setExcludeList(array $excludeList) - { - $this->excludeList = $excludeList; - - return $this; - } - - public function getExcludeList() - { - return $this->excludeList; - } - - private function setFilesCount() - { - $this->filesCount = iterator_count($this->files); - - return $this; - } - - public function getFilesCount() - { - return $this->filesCount; - } - - private function findFiles() - { - $this->files = $this->finder - ->files() - ->ignoreUnreadableDirs() - ->in($this->query) - ->exclude($this->excludeList) - ->name('*.webp'); - } - - public function eraseFiles() - { - $this->findFiles(); - $this->setFilesCount(); - - foreach ($this->files as $file) { - try { - unlink($file->getPathname()); - } catch (\Throwable $error) { - throw $error; - } - } - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/WebpGenerator.php b/is_themecore/is_themecore/src/Core/Webp/WebpGenerator.php deleted file mode 100644 index fdc493c..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/WebpGenerator.php +++ /dev/null @@ -1,110 +0,0 @@ -fileFinder = $fileFinder; - } - - public function setQuality($quality) - { - $this->quality = $quality; - - return $this; - } - - public function getQuality(): int - { - return $this->quality; - } - - public function setConverter($converter) - { - $this->converter = $converter; - - return $this; - } - - public function getConverter(): string - { - return $this->converter; - } - - public function setSharpYuv($sharpYuv) - { - $this->sharpYuv = $sharpYuv; - - return $this; - } - - public function getSharpYuv(): bool - { - return $this->sharpYuv; - } - - public function setDebugEnabled($debugEnabled) - { - $this->debugEnabled = $debugEnabled; - - return $this; - } - - public function getDebugEnabled(): bool - { - return $this->debugEnabled; - } - - public function setDestinationFile($destinationFile) - { - $this->destinationFile = $destinationFile; - - return $this; - } - - public function getDestinationFile(): string - { - return $this->destinationFile; - } - - public function findRelatedFile() - { - return $this->fileFinder->findFile($this->getDestinationFile()); - } - - public function convertAndServe() - { - $sourceFile = $this->findRelatedFile(); - - WebPConvert::serveConverted($sourceFile, $this->destinationFile, [ - 'fail' => 'original', - 'show-report' => $this->getDebugEnabled(), - - 'serve-image' => [ - 'headers' => [ - 'cache-control' => true, - 'vary-accept' => true, - // other headers can be toggled... - ], - 'cache-control-header' => 'max-age=2', - ], - 'convert' => [ - 'stack-converters' => [$this->getConverter()], - 'quality' => $this->getQuality(), - 'encoding' => 'auto', - 'sharp-yuv' => $this->getSharpYuv(), - ], - ]); - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/WebpPictureGenerator.php b/is_themecore/is_themecore/src/Core/Webp/WebpPictureGenerator.php deleted file mode 100644 index 1dfba06..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/WebpPictureGenerator.php +++ /dev/null @@ -1,109 +0,0 @@ -content = $content; - $this->doc = new \DOMDocument(); - } - - public function loadContent() - { - @$this->doc->loadHTML('' . $this->content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); - - return $this; - } - - public function generatePictureTags(): void - { - $images = $this->doc->getElementsByTagName('img'); - - if (0 === count($images)) { - return; - } - - foreach ($images as $image) { - if ($image->hasAttribute('data-external-url')) { - continue; - } - - $this->generatePictureTagFromImg($image); - } - - $this->content = $this->doc->saveHTML(); - $this->content = str_replace('', '', $this->content); - } - - private function generatePictureTagFromImg($image) - { - $lazyLoad = !empty($params['lazyload']) ? $params['lazyload'] : (bool) preg_match('/' . implode('|', ['lazyload', 'swiper-lazy']) . '/i', $image->ownerDocument->saveHTML($image)); - $srcAttributePrefix = $lazyLoad ? 'data-' : ''; - $containSrcset = $image->hasAttribute($srcAttributePrefix . 'srcset'); - $srcAttribute = $srcAttributePrefix . ($containSrcset ? 'srcset' : 'src'); - - $src = $image->getAttribute($srcAttribute); - $rawSrcArray = explode(',', $src); - $imageSrcArray = []; - - foreach ($rawSrcArray as $rawSrc) { - $srcWithMediaArray = explode(' ', $rawSrc); - - $srcWithMediaArray = array_values(array_filter($srcWithMediaArray, function ($elem) { - return !empty($elem); - })); - - $imageSrcArray[] = [ - 'file' => $srcWithMediaArray[0] ?? null, - 'media' => $srcWithMediaArray[1] ?? null, - 'ext' => isset($srcWithMediaArray[0]) ? pathinfo($srcWithMediaArray[0], PATHINFO_EXTENSION) : null, - ]; - } - - $picture = $this->doc->createElement('picture'); - $pict_clone = $picture->cloneNode(); - $image->parentNode->replaceChild($pict_clone, $image); - $pict_clone->appendChild($image); - - $source = $this->doc->createElement('source'); - $source->setAttribute('type', 'image/webp'); - $sourceWebp = ''; - - $lastKey = array_key_last($imageSrcArray); - - foreach ($imageSrcArray as $key => $imageSrc) { - $ext = explode('?', $imageSrc['ext']); - $ext = $ext[0] ?? null; - - if (!in_array($ext, $this->allowedExtensions)) { - continue; - } - - $newWebpSrc = str_replace('.' . $imageSrc['ext'], '.webp', $imageSrc['file']); - - $sourceWebp .= $newWebpSrc . ($imageSrc['media'] ? ' ' . $imageSrc['media'] : ''); - - if ($key != $lastKey) { - $sourceWebp .= ', '; - } - } - - if ($sourceWebp) { - $source->setAttribute($lazyLoad ? 'data-srcset' : 'srcset', $sourceWebp); - $src_clone = $source->cloneNode(); - $image->parentNode->replaceChild($src_clone, $image); - $src_clone->appendChild($image); - } - } - - public function getContent(): string - { - return $this->content; - } -} diff --git a/is_themecore/is_themecore/src/Core/Webp/index.php b/is_themecore/is_themecore/src/Core/Webp/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Core/Webp/index.php +++ /dev/null @@ -1,11 +0,0 @@ -themeListDisplay = $themeListDisplay; - } - - /** - * @return array - */ - public function getChoices(): array - { - $choices = []; - - foreach ($this->themeListDisplay->getDisplayOptions() as $display) { - $choices[$display] = $display; - } - - return $choices; - } -} diff --git a/is_themecore/is_themecore/src/Form/ChoiceProvider/WebpLibraryChoiceProvider.php b/is_themecore/is_themecore/src/Form/ChoiceProvider/WebpLibraryChoiceProvider.php deleted file mode 100644 index 2752c2d..0000000 --- a/is_themecore/is_themecore/src/Form/ChoiceProvider/WebpLibraryChoiceProvider.php +++ /dev/null @@ -1,50 +0,0 @@ -webpConvertLibraries = $webpConvertLibraries; - } - - /** - * @return array - */ - public function getChoices(): array - { - $choices = []; - - foreach ($this->webpConvertLibraries->getConvertersList() as $converter) { - $choices[$converter['label']] = $converter['id']; - } - - return $choices; - } - - /** - * @return array - */ - public function getChoicesFull(): array - { - $choices = []; - - foreach ($this->webpConvertLibraries->getConvertersList() as $converter) { - $choices[$converter['id']] = $converter; - } - - return $choices; - } -} diff --git a/is_themecore/is_themecore/src/Form/ChoiceProvider/index.php b/is_themecore/is_themecore/src/Form/ChoiceProvider/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Form/ChoiceProvider/index.php +++ /dev/null @@ -1,11 +0,0 @@ - - */ - private array $fields = [ - 'list_display_settings' => self::THEMECORE_DISPLAY_LIST, - 'early_hints' => self::THEMECORE_EARLY_HINTS, - 'preload_css' => self::THEMECORE_PRELOAD_CSS, - 'load_party_town' => self::THEMECORE_LOAD_PARTY_TOWN, - 'debug_party_town' => self::THEMECORE_DEBUG_PARTY_TOWN, - ]; - - /** - * {@inheritdoc} - * - * @return array - */ - public function getConfiguration(): array - { - $configurationValues = []; - - foreach ($this->fields as $field => $configurationKey) { - $configurationValues[$field] = $this->configuration->get($configurationKey); - } - - return $configurationValues; - } - - /** - * {@inheritdoc} - * - * @param array $configuration - * - * @return array> - */ - public function updateConfiguration(array $configuration): array - { - $errors = []; - - if (!$this->validateConfiguration($configuration)) { - $errors[] = [ - 'key' => 'Invalid configuration', - 'parameters' => [], - 'domain' => 'Admin.Notifications.Warning', - ]; - } else { - $shopConstraint = $this->getShopConstraint(); - - try { - foreach ($this->fields as $field => $configurationKey) { - $this->updateConfigurationValue($configurationKey, $field, $configuration, $shopConstraint); - } - } catch (\Exception $exception) { - $errors[] = [ - 'key' => $exception->getMessage(), - 'parameters' => [], - 'domain' => 'Admin.Notifications.Warning', - ]; - } - } - - return $errors; - } - - /** - * Ensure the parameters passed are valid. - * - * @param array $configuration - * - * @return bool Returns true if no exception are thrown - */ - public function validateConfiguration(array $configuration): bool - { - foreach ($this->fields as $field => $configurationKey) { - $multistoreKey = MultistoreCheckboxEnabler::MULTISTORE_FIELD_PREFIX . $field; - $this->fields[$multistoreKey] = ''; - } - - foreach ($configuration as $key => $value) { - if (!key_exists($key, $this->fields)) { - return false; - } - } - - return true; - } - - /** - * @return OptionsResolver - */ - protected function buildResolver(): OptionsResolver - { - return (new OptionsResolver()) - ->setDefined(self::CONFIGURATION_FIELDS) - ->setAllowedTypes('list_display_settings', ['string', 'null']) - ->setAllowedTypes('early_hints', 'bool') - ->setAllowedTypes('preload_css', 'bool') - ->setAllowedTypes('load_party_town', 'bool') - ->setAllowedTypes('debug_party_town', 'bool'); - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/GeneralFormDataProvider.php b/is_themecore/is_themecore/src/Form/Settings/GeneralFormDataProvider.php deleted file mode 100644 index 17911a5..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/GeneralFormDataProvider.php +++ /dev/null @@ -1,49 +0,0 @@ -generalConfiguration = $generalConfiguration; - } - - /** - * {@inheritdoc} - * - * @return array The form data as an associative array - */ - public function getData(): array - { - return $this->generalConfiguration->getConfiguration(); - } - - /** - * {@inheritdoc} - * - * @param array $data - * - * @return array> An array of errors messages if data can't persisted - */ - public function setData(array $data): array - { - return $this->generalConfiguration->updateConfiguration($data); - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/GeneralType.php b/is_themecore/is_themecore/src/Form/Settings/GeneralType.php deleted file mode 100644 index 0bd08f3..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/GeneralType.php +++ /dev/null @@ -1,104 +0,0 @@ -displayListChoices = $displayListChoices; - } - - /** - * {@inheritdoc} - * - * @param FormBuilderInterface $builder - * @param array $options - */ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $builder - ->add('list_display_settings', - ChoiceType::class, - [ - 'choices' => $this->displayListChoices, - 'label' => $this->trans('Default list display', 'Modules.isthemecore.Admin'), - 'multistore_configuration_key' => GeneralConfiguration::THEMECORE_DISPLAY_LIST, - ] - ) - ->add('early_hints', - SwitchType::class, - [ - 'required' => false, - 'label' => $this->trans('Early hints (HTTP 103) enabled', 'Modules.isthemecore.Admin'), - 'help' => $this->trans('Cloudflare CDN, Early hints option have to enabled. More information', 'Modules.isthemecore.Admin'), - 'multistore_configuration_key' => GeneralConfiguration::THEMECORE_EARLY_HINTS, - ] - ) - ->add('preload_css', - SwitchType::class, - [ - 'required' => false, - 'label' => $this->trans('Preload css enabled, only working with CCC for css option enabled', 'Modules.isthemecore.Admin'), - 'multistore_configuration_key' => GeneralConfiguration::THEMECORE_PRELOAD_CSS, - ] - ) - ->add('load_party_town', - SwitchType::class, - [ - 'required' => false, - 'label' => $this->trans('Load partytown script', 'Modules.isthemecore.Admin'), - 'help' => $this->trans('Be aware that partytown is still beta. Make sure that everything is working as expected before pushing it to your production store.', 'Modules.isthemecore.Admin'), - 'multistore_configuration_key' => GeneralConfiguration::THEMECORE_LOAD_PARTY_TOWN, - ] - ) - ->add('debug_party_town', - SwitchType::class, - [ - 'required' => false, - 'label' => $this->trans('Enable debug mode for partytown', 'Modules.isthemecore.Admin'), - 'multistore_configuration_key' => GeneralConfiguration::THEMECORE_DEBUG_PARTY_TOWN, - ] - ); - } - - /** - * {@inheritdoc} - * - * @see MultistoreConfigurationTypeExtension - */ - public function getParent(): string - { - return MultistoreConfigurationType::class; - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/WebpConfiguration.php b/is_themecore/is_themecore/src/Form/Settings/WebpConfiguration.php deleted file mode 100644 index d75160f..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/WebpConfiguration.php +++ /dev/null @@ -1,131 +0,0 @@ - - */ - private $fields = [ - 'webp_enabled' => self::THEMECORE_WEBP_ENABLED, - 'webp_quality' => self::THEMECORE_WEBP_QUALITY, - 'webp_converter' => self::THEMECORE_WEBP_CONVERTER, - 'webp_sharpyuv' => self::THEMECORE_WEBP_SHARPYUV, - ]; - - /** - * @var Configuration - */ - protected $configuration; - - public function __construct(Configuration $configuration) - { - $this->configuration = $configuration; - } - - /** - * {@inheritdoc} - * - * @return array - */ - public function getConfiguration(): array - { - $configurationValues = []; - - foreach ($this->fields as $field => $configurationKey) { - $configurationValues[$field] = $this->configuration->get($configurationKey); - } - - return $configurationValues; - } - - /** - * {@inheritdoc} - * - * @param array $configuration - * - * @return array> - */ - public function updateConfiguration(array $configuration): array - { - $errors = []; - - if (!$this->validateConfiguration($configuration)) { - $errors[] = [ - 'key' => 'Invalid configuration', - 'parameters' => [], - 'domain' => 'Admin.Notifications.Warning', - ]; - } else { - try { - foreach ($this->fields as $field => $configurationKey) { - $this->configuration->set($configurationKey, $configuration[$field]); - } - } catch (\Exception $exception) { - $errors[] = [ - 'key' => $exception->getMessage(), - 'parameters' => [], - 'domain' => 'Admin.Notifications.Warning', - ]; - } - } - - return $errors; - } - - /** - * Ensure the parameters passed are valid. - * - * @param array $configuration - * - * @return bool Returns true if no exception are thrown - */ - public function validateConfiguration(array $configuration): bool - { - foreach ($configuration as $key => $value) { - if (!key_exists($key, $this->fields)) { - return false; - } - } - - return true; - } - - /** - * @return OptionsResolver - */ - protected function buildResolver(): OptionsResolver - { - return (new OptionsResolver()) - ->setDefined(self::CONFIGURATION_FIELDS) - ->setAllowedTypes('webp_enabled', 'bool') - ->setAllowedTypes('webp_quality', 'string') - ->setAllowedTypes('webp_converter', 'string') - ->setAllowedTypes('webp_sharpyuv', 'bool'); - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/WebpFormDataProvider.php b/is_themecore/is_themecore/src/Form/Settings/WebpFormDataProvider.php deleted file mode 100644 index f165a10..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/WebpFormDataProvider.php +++ /dev/null @@ -1,49 +0,0 @@ -webpConfiguration = $webpConfiguration; - } - - /** - * {@inheritdoc} - * - * @return array The form data as an associative array - */ - public function getData(): array - { - return $this->webpConfiguration->getConfiguration(); - } - - /** - * {@inheritdoc} - * - * @param array $data - * - * @return array> An array of errors messages if data can't persisted - */ - public function setData(array $data): array - { - return $this->webpConfiguration->updateConfiguration($data); - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/WebpType.php b/is_themecore/is_themecore/src/Form/Settings/WebpType.php deleted file mode 100644 index ff95d64..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/WebpType.php +++ /dev/null @@ -1,247 +0,0 @@ -convertersList = $convertersList; - $this->convertersListFull = $convertersListFull; - $this->router = $router; - } - - private function allWebpConvertersDisabled(): bool - { - return array_reduce($this->convertersListFull, function ($carry, $item) { - return $carry && $item['disabled']; - }, true); - } - - /** - * {@inheritdoc} - * - * @param FormBuilderInterface $builder - * @param array $options - */ - public function buildForm(FormBuilderInterface $builder, array $options): void - { - $webpDisabled = $this->allWebpConvertersDisabled(); - $extraAttributes = []; - - if ($webpDisabled) { - $extraAttributes = [ - 'alert_message' => $this->trans('Webp converters not available contact your admin or hosting provider.', 'Modules.isthemecore.Admin'), - 'alert_type' => 'danger', - 'alert_position' => 'append', - ]; - } - - $builder - ->add('webp_enabled', - SwitchType::class, - array_merge( - [ - 'required' => false, - 'label' => $this->trans('Enable WEBP', 'Modules.isthemecore.Admin'), - 'disabled' => $webpDisabled, - ], - $extraAttributes - ) - ) - ->add('webp_sharpyuv', - SwitchType::class, - [ - 'required' => false, - 'label' => $this->trans('Enable better RGB->YUV color conversion', 'Modules.isthemecore.Admin'), - 'disabled' => $webpDisabled, - ] - ) - ->add('webp_quality', - TextType::class, - [ - 'required' => false, - 'label' => $this->trans('Webp quality', 'Modules.isthemecore.Admin'), - 'help' => $this->trans('Range 1-100', 'Modules.isthemecore.Admin'), - 'disabled' => $webpDisabled, - 'constraints' => [ - $this->getRangeConstraint(1, 100), - $this->getNotBlankConstraint(), - ], - ] - ) - ->add('webp_converter', - ChoiceType::class, - [ - 'choices' => $this->convertersList, - 'label' => $this->trans('Webp converter options', 'Modules.isthemecore.Admin'), - 'disabled' => $webpDisabled, - 'expanded' => true, - 'multiple' => false, - 'choice_attr' => function ($choice) { - return ['disabled' => $this->convertersListFull[$choice]['disabled']]; - }, - 'choice_label' => function ($choice) { - return $this->convertersListFull[$choice]['label'] . ($this->convertersListFull[$choice]['disabled'] ? '' . $this->trans('not available', 'Modules.isthemecore.Admin') . '' : ''); - }, - ] - ) - ->add('erase_all_webp', IconButtonType::class, [ - 'label' => $this->trans('Erase all webp images', 'Modules.isthemecore.Admin'), - 'type' => 'link', - 'icon' => 'delete', - 'attr' => [ - 'class' => 'btn-danger', - 'href' => $this->router->generate( - 'is_themecore_module_settings_webp_erase_all', - [ - 'type' => 'all', - ] - ), - ], - ]) - ->add('erase_product_webp', IconButtonType::class, [ - 'label' => $this->trans('Erase all product webp images', 'Modules.isthemecore.Admin'), - 'type' => 'link', - 'icon' => 'delete', - 'attr' => [ - 'class' => 'btn-danger', - 'href' => $this->router->generate( - 'is_themecore_module_settings_webp_erase_all', - [ - 'type' => 'product', - ] - ), - ], - ]) - ->add('erase_modules_webp', IconButtonType::class, [ - 'label' => $this->trans('Erase all modules webp images', 'Modules.isthemecore.Admin'), - 'type' => 'link', - 'icon' => 'delete', - 'attr' => [ - 'class' => 'btn-danger', - 'href' => $this->router->generate( - 'is_themecore_module_settings_webp_erase_all', - [ - 'type' => 'module', - ] - ), - ], - ]) - ->add('erase_cms_webp', IconButtonType::class, [ - 'label' => $this->trans('Erase all CMS webp images', 'Modules.isthemecore.Admin'), - 'type' => 'link', - 'icon' => 'delete', - 'attr' => [ - 'class' => 'btn-danger', - 'href' => $this->router->generate( - 'is_themecore_module_settings_webp_erase_all', - [ - 'type' => 'cms', - ] - ), - ], - ]) - ->add('erase_themes_webp', IconButtonType::class, [ - 'label' => $this->trans('Erase all themes webp images', 'Modules.isthemecore.Admin'), - 'type' => 'link', - 'icon' => 'delete', - 'attr' => [ - 'class' => 'btn-danger', - 'href' => $this->router->generate( - 'is_themecore_module_settings_webp_erase_all', - [ - 'type' => 'themes', - ] - ), - ], - ]); - } - - /** - * {@inheritdoc} - * - * @see MultistoreConfigurationTypeExtension - */ - public function getParent(): string - { - return MultistoreConfigurationType::class; - } - - /** - * @return NotBlank - */ - private function getNotBlankConstraint() - { - return new NotBlank([ - 'message' => $this->trans('This field cannot be empty.', 'Modules.isthemecore.Admin'), - ]); - } - - /** - * @return Range - */ - private function getRangeConstraint(int $min = 1, int $max = 100) - { - return new Range([ - 'min' => $min, - 'max' => $max, - 'invalidMessage' => $this->trans( - 'This field value have to be between %min% and %max%.', - 'Modules.isthemecore.Admin', - [ - '%min%' => $min, - '%max%' => $max, - ] - ), - ]); - } -} diff --git a/is_themecore/is_themecore/src/Form/Settings/index.php b/is_themecore/is_themecore/src/Form/Settings/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/Form/Settings/index.php +++ /dev/null @@ -1,11 +0,0 @@ -module = $module; - $this->context = \Context::getContext(); - } - - /** - * @return array - */ - public function getAvailableHooks() - { - return static::HOOK_LIST; - } -} diff --git a/is_themecore/is_themecore/src/Hook/Assets.php b/is_themecore/is_themecore/src/Hook/Assets.php deleted file mode 100644 index 133a3f8..0000000 --- a/is_themecore/is_themecore/src/Hook/Assets.php +++ /dev/null @@ -1,45 +0,0 @@ -context->controller->unregisterJavascript('facetedsearch_front'); - $this->context->controller->unregisterStylesheet('facetedsearch_front'); - - $needsJQueryUi = \Module::isEnabled('pm_advancedsearch4') && $this->context->controller instanceof \ProductListingFrontController; - - if (!$needsJQueryUi) { - $this->context->controller->unregisterJavascript('jquery-ui'); - $this->context->controller->unregisterStylesheet('jquery-ui'); - $this->context->controller->unregisterStylesheet('jquery-ui-theme'); - } - } - - public function hookActionFrontControllerSetMedia() - { - $assetsRegister = new ThemeAssetsRegister( - new ThemeAssetConfigProvider(_PS_THEME_DIR_), - $this->context - ); - - $assetsRegister->registerThemeAssets(); - - \Media::addJsDef([ - 'listDisplayAjaxUrl' => $this->context->link->getModuleLink($this->module->name, 'ajaxTheme'), - ]); - } -} diff --git a/is_themecore/is_themecore/src/Hook/Header.php b/is_themecore/is_themecore/src/Hook/Header.php deleted file mode 100644 index 1e66050..0000000 --- a/is_themecore/is_themecore/src/Hook/Header.php +++ /dev/null @@ -1,136 +0,0 @@ -context->smarty->assign([ - 'listingDisplayType' => $themeListDisplay->getDisplay(), - 'preloadCss' => \Configuration::get(GeneralConfiguration::THEMECORE_PRELOAD_CSS), - 'webpEnabled' => \Configuration::get(WebpConfiguration::THEMECORE_WEBP_ENABLED), - 'loadPartytown' => (bool) \Configuration::get(GeneralConfiguration::THEMECORE_LOAD_PARTY_TOWN), - 'debugPartytown' => (bool) \Configuration::get(GeneralConfiguration::THEMECORE_DEBUG_PARTY_TOWN), - ]); - } - - public function hookDisplayHeader(): string - { - $themeListDisplay = new ThemeListDisplay(); - $breadcrumbs = (new ThemeBreadcrumbs())->getBreadcrumb(); - - if ($breadcrumbs['count']) { - $this->context->smarty->assign([ - 'breadcrumb' => $breadcrumbs, - ]); - } - - $this->context->smarty->assign([ - 'jsonData' => $this->getStructuredData(), - 'partytownScript' => $this->getPartytownScript(), - 'partytownScriptUri' => $this->getPartytownScriptUri(), - ]); - - return $this->module->fetch('module:is_themecore/views/templates/hook/head.tpl'); - } - - private function getPartytownScriptUri(): string - { - try { - $uriResolver = $this->module->get(PartytownScriptUriResolver::class); - } catch (\Exception $e) { - $uriResolver = null; - } - - if ($uriResolver) { - return $uriResolver->getScriptUri(); - } - - return ''; - } - - private function getPartytownScript(): string - { - try { - $partytownScript = $this->module->get(PartytownScript::class); - } catch (\Exception $e) { - $partytownScript = null; - } - - if ($partytownScript instanceof PartytownScript) { - return $partytownScript->getScriptContent(); - } - - return ''; - } - - private function getStructuredData(): array - { - $dataArray = []; - - if ($this->context->controller instanceof \ProductControllerCore && $this->context->controller->getProduct()->id !== null) { - try { - $productData = $this->module->get(ProductStructuredData::class); - } catch (\Exception $e) { - $productData = null; - } - - if ($productData instanceof StructuredDataInterface) { - $dataArray[] = $productData->getFormattedData(); - } - } - - try { - $breadcrumbData = $this->module->get(BreadcrumbStructuredData::class); - } catch (\Exception $e) { - $breadcrumbData = null; - } - - if ($breadcrumbData instanceof StructuredDataInterface) { - $dataArray[] = $breadcrumbData->getFormattedData(); - } - - try { - $shopData = $this->module->get(ShopStructuredData::class); - } catch (\Exception $e) { - $shopData = null; - } - - if ($shopData instanceof StructuredDataInterface) { - $dataArray[] = $shopData->getFormattedData(); - } - - if ($this->context->controller->getPageName() === 'index') { - try { - $website = $this->module->get(WebsiteStructuredData::class); - } catch (\Exception $e) { - $website = null; - } - - if ($website instanceof StructuredDataInterface) { - $dataArray[] = $website->getFormattedData(); - } - } - - return $dataArray; - } -} diff --git a/is_themecore/is_themecore/src/Hook/Htaccess.php b/is_themecore/is_themecore/src/Hook/Htaccess.php deleted file mode 100644 index efcfba2..0000000 --- a/is_themecore/is_themecore/src/Hook/Htaccess.php +++ /dev/null @@ -1,36 +0,0 @@ -module->get('oksydan.module.is_themecore.core.htaccess.htaccess_generator'); - - $generator->generate(); - $generator->writeFile(); - } - - public function hookObjectShopUrlAddAfter() - { - $this->hookActionHtaccessCreate(); - } - - public function hookObjectShopUrlUpdateAfter() - { - $this->hookActionHtaccessCreate(); - } - - public function hookObjectShopUrlDeleteAfter() - { - $this->hookActionHtaccessCreate(); - } -} diff --git a/is_themecore/is_themecore/src/Hook/HtmlOutput.php b/is_themecore/is_themecore/src/Hook/HtmlOutput.php deleted file mode 100644 index a90bedd..0000000 --- a/is_themecore/is_themecore/src/Hook/HtmlOutput.php +++ /dev/null @@ -1,111 +0,0 @@ -loadHTML( - '' . $html, - LIBXML_NOERROR | LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD - ); - $links = $doc->getElementsByTagName('link'); - - foreach ($links as $link) { - $rel = $link->hasAttribute('rel') ? $link->attributes->getNamedItem('rel')->nodeValue : false; - $as = $link->hasAttribute('as') ? $link->attributes->getNamedItem('as')->nodeValue : false; - - if ($webpEnabled && $rel === 'preload' && $as === 'image') { - $newLink = $doc->createElement('link'); - $src = urldecode($link->attributes->getNamedItem('href')->nodeValue); - - $newLink->setAttribute('href', str_replace(['.png', '.jpg', '.jpeg'], '.webp', $src)); - - foreach ($link->attributes as $attribute) { - if ($attribute->nodeName !== 'href') { - $newLink->setAttribute($attribute->nodeName, $attribute->nodeValue); - } - } - - $link->parentNode->replaceChild($newLink, $link); - } - - if ($earlyHintsEnabled && in_array($rel, self::REL_LIST)) { - if (isset($newLink)) { - $link = $newLink; - unset($newLink); - } - - switch ($rel) { - case 'preload': - $this->handlePreloadFromNodeElement($link); - break; - case 'preconnect': - $this->handlePreconnectFromNodeElement($link); - break; - } - } - } - - if ($webpEnabled) { - $content = $doc->saveHTML(); - $content = str_replace('', '', $content); - $params['html'] = $content; - } - - if (!empty($this->headers)) { - header('Link: ' . implode(', ', $this->headers)); - } - - libxml_use_internal_errors($preConfig); - } - - private function handlePreloadFromNodeElement($nodeElement) - { - $preloadAs = $nodeElement->attributes->getNamedItem('as')->nodeValue; - - if (in_array($preloadAs, self::PRELOAD_TYPES_TO_EARLY_HINT)) { - $url = $nodeElement->attributes->getNamedItem('href')->nodeValue; - - $this->headers[] = "<$url>; rel=preload; as=$preloadAs"; - } - } - - private function handlePreconnectFromNodeElement($nodeElement) - { - $url = $nodeElement->attributes->getNamedItem('href')->nodeValue; - - $this->headers[] = "<$url>; rel=preconnect"; - } -} diff --git a/is_themecore/is_themecore/src/Hook/Smarty.php b/is_themecore/is_themecore/src/Hook/Smarty.php deleted file mode 100644 index a83f7ec..0000000 --- a/is_themecore/is_themecore/src/Hook/Smarty.php +++ /dev/null @@ -1,70 +0,0 @@ -context->smarty->registered_plugins['function']['generateImagesSources'])) { - $this->context->smarty->registerPlugin('function', 'generateImagesSources', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImagesSources']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['function']['generateImageSvgPlaceholder'])) { - $this->context->smarty->registerPlugin('function', 'generateImageSvgPlaceholder', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'generateImageSvgPlaceholder']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['function']['appendParamToUrl'])) { - $this->context->smarty->registerPlugin('function', 'appendParamToUrl', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'appendParamToUrl']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['block']['images_block'])) { - $this->context->smarty->registerPlugin('block', 'images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'imagesBlock']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['block']['cms_images_block'])) { - $this->context->smarty->registerPlugin('block', 'cms_images_block', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'cmsImagesBlock']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['block']['display_mobile'])) { - $this->context->smarty->registerPlugin('block', 'display_mobile', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayMobileBlock']); - } else { - return; - } - - if (!isset($this->context->smarty->registered_plugins['block']['display_desktop'])) { - $this->context->smarty->registerPlugin('block', 'display_desktop', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayDesktopBlock']); - } else { - return; - } - if (!isset($this->context->smarty->registered_plugins['modifier']['is_bright'])) { - $this->context->smarty->registerPlugin('modifier', 'is_bright', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'isBright']); - } else { - return; - } - if (!isset($this->context->smarty->registered_plugins['function']['svg_icon'])) { - $this->context->smarty->registerPlugin('function', 'svg_icon', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displaySvgIcon']); - } else { - return; - } - if (!isset($this->context->smarty->registered_plugins['function']['price_split'])) { - $this->context->smarty->registerPlugin('function', 'price_split', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayPriceSplit']); - } else { - return; - } - } -} diff --git a/is_themecore/is_themecore/src/HookDispatcher.php b/is_themecore/is_themecore/src/HookDispatcher.php deleted file mode 100644 index 0598c8b..0000000 --- a/is_themecore/is_themecore/src/HookDispatcher.php +++ /dev/null @@ -1,63 +0,0 @@ -hooks[] = $hook; - } - } - - /** - * Get available hooks - * - * @return string[] - */ - public function getAvailableHooks() - { - $availableHooks = []; - foreach ($this->hooks as $hook) { - $availableHooks = array_merge($availableHooks, $hook->getAvailableHooks()); - } - - return $availableHooks; - } - - public function dispatch($hookName, array $params = []) - { - foreach ($this->hooks as $hook) { - if (method_exists($hook, $hookName)) { - return $hook->{$hookName}($params); - } - } - - return false; - } -} diff --git a/is_themecore/is_themecore/src/index.php b/is_themecore/is_themecore/src/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/src/index.php +++ /dev/null @@ -1,11 +0,0 @@ -in($rootDir) - ->exclude(['vendor', 'node_modules']) -; - -$config = new PrestaShop\CodingStandards\CsFixer\Config(); -return $config - ->setUsingCache(true) - ->setCacheFile(__DIR__.'/.php-cs-fixer.cache') - ->setFinder($finder) -; diff --git a/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.neon b/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.neon deleted file mode 100644 index 5111ecf..0000000 --- a/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.neon +++ /dev/null @@ -1,3 +0,0 @@ -parameters: - bootstrapFiles: - - %currentWorkingDirectory%/tests/php/.phpstan_bootstrap.php \ No newline at end of file diff --git a/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.php b/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.php deleted file mode 100644 index d961241..0000000 --- a/is_themecore/is_themecore/tests/php/.phpstan_bootstrap.php +++ /dev/null @@ -1,70 +0,0 @@ -getMessage(); - exit(1); -} - -// ----------- end of script ------------- - -function include_env_configuration(): bool -{ - if (file_exists(PHPSTAN_PS_ROOT_CONFIG_FILE)) { - require PHPSTAN_PS_ROOT_CONFIG_FILE; - - return true; - } - - return false; -} - -function create_default_config_file_and_exit(): void -{ - if (!getenv('_PS_ROOT_DIR_')) { - echo 'Environment variable _PS_ROOT_DIR_ not set.' . PHP_EOL; - - // check if config file exists and create a default one if needed. - if (!file_exists(PHPSTAN_PS_ROOT_CONFIG_FILE)) { - file_put_contents(PHPSTAN_PS_ROOT_CONFIG_FILE, - '&1 | (! grep -v "No syntax errors detected") \ No newline at end of file diff --git a/is_themecore/is_themecore/tests/php/phpstan.dist.neon b/is_themecore/is_themecore/tests/php/phpstan.dist.neon deleted file mode 100644 index cff2f13..0000000 --- a/is_themecore/is_themecore/tests/php/phpstan.dist.neon +++ /dev/null @@ -1,14 +0,0 @@ -parameters: - paths: - # We consider that the extension file will be stored the folder test/phpstan - # From Phpstan 0.12, paths are relative to the .neon file. - - ../../src - - ../../is_themecore.php - ignoreErrors: - # - "#Insert your error here (don't forget to escape special characters like the following hash: \\#)#" - reportUnmatchedIgnoredErrors: true - level: 9 - -includes: - - %currentWorkingDirectory%/tests/php/.phpstan_bootstrap.neon - - %currentWorkingDirectory%/vendor/prestashop/php-dev-tools/phpstan/ps-module-extension.neon diff --git a/is_themecore/is_themecore/translations/index.php b/is_themecore/is_themecore/translations/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/translations/index.php +++ /dev/null @@ -1,11 +0,0 @@ -registerHook('actionDispatcherBefore'); - - return $module->registerHook('actionOutputHTMLBefore'); -} diff --git a/is_themecore/is_themecore/upgrade/upgrade-2-2-1.php b/is_themecore/is_themecore/upgrade/upgrade-2-2-1.php deleted file mode 100644 index 583e2bf..0000000 --- a/is_themecore/is_themecore/upgrade/upgrade-2-2-1.php +++ /dev/null @@ -1,10 +0,0 @@ -registerHook('actionDispatcherBefore'); -} diff --git a/is_themecore/is_themecore/upgrade/upgrade-2-3-0.php b/is_themecore/is_themecore/upgrade/upgrade-2-3-0.php deleted file mode 100644 index 62d42e7..0000000 --- a/is_themecore/is_themecore/upgrade/upgrade-2-3-0.php +++ /dev/null @@ -1,15 +0,0 @@ -registerHook('actionHtaccessCreate'); - $res &= $module->registerHook('objectShopUrlAddAfter'); - $res &= $module->registerHook('objectShopUrlUpdateAfter'); - $res &= $module->registerHook('objectShopUrlDeleteAfter'); - - return $res; -} diff --git a/is_themecore/is_themecore/upgrade/upgrade-2-4-0.php b/is_themecore/is_themecore/upgrade/upgrade-2-4-0.php deleted file mode 100644 index c00c440..0000000 --- a/is_themecore/is_themecore/upgrade/upgrade-2-4-0.php +++ /dev/null @@ -1,20 +0,0 @@ -installPartytown(); - $success &= Configuration::updateValue(GeneralConfiguration::THEMECORE_LOAD_PARTY_TOWN, false); - $success &= Configuration::updateValue(GeneralConfiguration::THEMECORE_DEBUG_PARTY_TOWN, false); - - return $success; -} diff --git a/is_themecore/is_themecore/upgrade/upgrade-4.1.2.php b/is_themecore/is_themecore/upgrade/upgrade-4.1.2.php deleted file mode 100644 index 561db06..0000000 --- a/is_themecore/is_themecore/upgrade/upgrade-4.1.2.php +++ /dev/null @@ -1,14 +0,0 @@ -registerHook('actionFrontControllerInitBefore'); -} diff --git a/is_themecore/is_themecore/upgrade/upgrade-4.1.3.php b/is_themecore/is_themecore/upgrade/upgrade-4.1.3.php deleted file mode 100644 index bc47f9a..0000000 --- a/is_themecore/is_themecore/upgrade/upgrade-4.1.3.php +++ /dev/null @@ -1,20 +0,0 @@ -registerHook('actionFrontControllerInitBefore'); - $success &= Configuration::updateValue(GeneralConfiguration::THEMECORE_LOAD_PARTY_TOWN, false); - $success &= Configuration::updateValue(GeneralConfiguration::THEMECORE_DEBUG_PARTY_TOWN, false); - - return $success; -} diff --git a/is_themecore/is_themecore/views/img/example.jpg b/is_themecore/is_themecore/views/img/example.jpg deleted file mode 100644 index b603a5f2b4a02c89cd47308ed95b84da3872f6b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2275 zcmds1O>7%Q6n?X7uN~WQys=F}57j0(jgU%dlO}LW6E|@j1?1XEi;#L)$7^S$?XJ7K zZj=*kC~&2wq=H*%pyJ5?v27Yaa3U#x1tHNw0U-solmNHo&8(d`6qH=J@a#7;`+nwq z^X9#AzI48Y$k<4F1PDjSZn7J|Srz6o(}rzW(?(h9-Ln@S9ZEmOuLiP;WoQ*!HFQ9V zP+K5?UhYh-Jk9MRPe>`v$jh2Eu9l{4RWC_{dP!5Lj|X`tv%9}_!){QsRl8EyY{B0R zW=vJLr4daoS?Je9H=slq9#0^gG|ICkjlpbO71MP`VqjskNcHOcvxUS5~sC=Q8zYr5>;FjnPq@o}pksI77g80qpwOd21Q|2K9dH@k9PezN%#KUO3B@#P zhV%wq-3}qAsZ*}EibD7FR1GkXyo&6BB>slL%@NgXrutn_DYd75TM$Dois@uhn$&H% zR8k7{>nF9!h_#K&vzXxYK`Eu^iYeQ8!9%h|3yk6?Y>!a#*!wcE64J> ztZI1vThs;_Zv|4g%m5tSi}H`49f-53W3Wa>@qT`R@L<8nD^NIzKE(MNPD9A=_c!@N zO-&&&7zm2-mQbiA-X4v{qtSLT#Hcp8AAcW7b1>K(ZjOY*kytn!j?p0;b6v#kY~Wl5 z(T@ix^Q03vk?P=$a^|k_jv~o$O1d$c5Cf$@x-(9 zuf6-h=Rf@ZNa{#w=DBkh-}~^3AO8@6;}ETfVe$#yJ_eyIdeNX|F^PmFN~067<6! zz(&I6VjU=i#xlbx=}<+cAyE!K@MAFiV@Gw=I_dy*;32|ueB%=XtjXLG-qy%%5Wh|h zp0uR6b;WiU&LVBHd06EMR;AlyOK{Z989h>+0xXO5FE&RSpFb*jUc5)rdXK~{K7u_b sqRXX|)bW2uPvI&3gu{0T!k5?@->3C8eV^)bjuQszYrbJkh%3MT7f - {{ icon|default('settings') }} {{ header }} - diff --git a/is_themecore/is_themecore/views/templates/back/components/atoms/index.php b/is_themecore/is_themecore/views/templates/back/components/atoms/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/views/templates/back/components/atoms/index.php +++ /dev/null @@ -1,11 +0,0 @@ - -
- {% include '@Modules/is_themecore/views/templates/back/components/organisms/form.html.twig' with { - 'form': general_form, - 'form_id': 'settings_general_form', - 'form_action': path('is_themecore_module_settings_general_save'), - 'card_header': 'General' | trans({}, 'Modules.isthemecore.Admin'), - 'cancel_path': 'is_themecore_module_settings' - } %} -
- -
- {% include '@Modules/is_themecore/views/templates/back/components/organisms/form.html.twig' with { - 'form': webp_form, - 'form_id': 'settings_webp_form', - 'form_action': path('is_themecore_module_settings_webp_save'), - 'card_header': 'Webp' | trans({}, 'Modules.isthemecore.Admin'), - 'icon_header': 'image', - 'cancel_path': 'is_themecore_module_settings' - } %} -
- -{% endblock %} diff --git a/is_themecore/is_themecore/views/templates/back/components/molecules/index.php b/is_themecore/is_themecore/views/templates/back/components/molecules/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/views/templates/back/components/molecules/index.php +++ /dev/null @@ -1,11 +0,0 @@ - - {% include '@Modules/is_themecore/views/templates/back/components/atoms/card-header.html.twig' - with { - 'header': card_header, - 'icon': icon_header|default('settings') - } - %} -
-
- {{ form_widget(form) }} -
-
- - - {{ form_end(form) }} -{% endblock %} diff --git a/is_themecore/is_themecore/views/templates/back/components/organisms/index.php b/is_themecore/is_themecore/views/templates/back/components/organisms/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/views/templates/back/components/organisms/index.php +++ /dev/null @@ -1,11 +0,0 @@ - - {$jsonElem nofilter} - - {/if} -{/foreach} - -{if $loadPartytown && $partytownScript && $partytownScriptUri} - - - -{/if} diff --git a/is_themecore/is_themecore/views/templates/hook/og-data.tpl b/is_themecore/is_themecore/views/templates/hook/og-data.tpl deleted file mode 100644 index d452253..0000000 --- a/is_themecore/is_themecore/views/templates/hook/og-data.tpl +++ /dev/null @@ -1,34 +0,0 @@ - -{if !empty($page.meta.description)} - -{/if} - - - - -{if isset($product) && $page.page_name == 'product'} - - {if $product.images|count > 0} - {foreach from=$product.images item=p_img name="p_img_list"} - - {/foreach} - - - - {/if} - {if $product.show_price} - - - {if $product.has_discount} - - {/if} - {/if} - {if !empty($product_manufacturer) && $product_manufacturer->name} - - {/if} - -{elseif $page.page_name === 'category' && isset($category) && !empty($category.image.large.url)} - -{else} - -{/if} diff --git a/is_themecore/is_themecore/views/templates/hook/twitter-data.tpl b/is_themecore/is_themecore/views/templates/hook/twitter-data.tpl deleted file mode 100644 index 45858e3..0000000 --- a/is_themecore/is_themecore/views/templates/hook/twitter-data.tpl +++ /dev/null @@ -1,25 +0,0 @@ - - -{if !empty($page.meta.description)} - -{/if} - - - - -{if isset($product) && $page.page_name == 'product' && !empty($product.default_image)} - - {if !empty($page.meta.description)} - - {/if} -{elseif $page.page_name === 'category' && isset($category) && !empty($category.image.large.url)} - - {if !empty($page.meta.description)} - - {/if} -{else} - - {if !empty($page.meta.description)} - - {/if} -{/if} diff --git a/is_themecore/is_themecore/views/templates/index.php b/is_themecore/is_themecore/views/templates/index.php deleted file mode 100644 index 88355f6..0000000 --- a/is_themecore/is_themecore/views/templates/index.php +++ /dev/null @@ -1,11 +0,0 @@ -setDestinationFile($_GET['source']); -$webpGenerator->setQuality((int) Configuration::get(WebpConfiguration::THEMECORE_WEBP_QUALITY)); -$webpGenerator->setConverter(Configuration::get(WebpConfiguration::THEMECORE_WEBP_CONVERTER)); -$webpGenerator->setSharpYuv((bool) Configuration::get(WebpConfiguration::THEMECORE_WEBP_SHARPYUV)); -$webpGenerator->convertAndServe(); -exit; diff --git a/is_themecore/is_themecore/public/partytown.js b/is_themecore/public/partytown.js similarity index 100% rename from is_themecore/is_themecore/public/partytown.js rename to is_themecore/public/partytown.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-atomics.js b/is_themecore/public/~partytown/debug/partytown-atomics.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-atomics.js rename to is_themecore/public/~partytown/debug/partytown-atomics.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-media.js b/is_themecore/public/~partytown/debug/partytown-media.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-media.js rename to is_themecore/public/~partytown/debug/partytown-media.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-sandbox-sw.js b/is_themecore/public/~partytown/debug/partytown-sandbox-sw.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-sandbox-sw.js rename to is_themecore/public/~partytown/debug/partytown-sandbox-sw.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-sw.js b/is_themecore/public/~partytown/debug/partytown-sw.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-sw.js rename to is_themecore/public/~partytown/debug/partytown-sw.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-ww-atomics.js b/is_themecore/public/~partytown/debug/partytown-ww-atomics.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-ww-atomics.js rename to is_themecore/public/~partytown/debug/partytown-ww-atomics.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown-ww-sw.js b/is_themecore/public/~partytown/debug/partytown-ww-sw.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown-ww-sw.js rename to is_themecore/public/~partytown/debug/partytown-ww-sw.js diff --git a/is_themecore/is_themecore/public/~partytown/debug/partytown.js b/is_themecore/public/~partytown/debug/partytown.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/debug/partytown.js rename to is_themecore/public/~partytown/debug/partytown.js diff --git a/is_themecore/is_themecore/public/~partytown/partytown-atomics.js b/is_themecore/public/~partytown/partytown-atomics.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/partytown-atomics.js rename to is_themecore/public/~partytown/partytown-atomics.js diff --git a/is_themecore/is_themecore/public/~partytown/partytown-media.js b/is_themecore/public/~partytown/partytown-media.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/partytown-media.js rename to is_themecore/public/~partytown/partytown-media.js diff --git a/is_themecore/is_themecore/public/~partytown/partytown-sw.js b/is_themecore/public/~partytown/partytown-sw.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/partytown-sw.js rename to is_themecore/public/~partytown/partytown-sw.js diff --git a/is_themecore/is_themecore/public/~partytown/partytown.js b/is_themecore/public/~partytown/partytown.js similarity index 100% rename from is_themecore/is_themecore/public/~partytown/partytown.js rename to is_themecore/public/~partytown/partytown.js diff --git a/is_themecore/src/Controller/Admin/SettingsController.php b/is_themecore/src/Controller/Admin/SettingsController.php index c6f7ca4..938152e 100644 --- a/is_themecore/src/Controller/Admin/SettingsController.php +++ b/is_themecore/src/Controller/Admin/SettingsController.php @@ -22,11 +22,6 @@ use Symfony\Component\HttpFoundation\Response; class SettingsController extends FrameworkBundleAdminController { /** - * @AdminSecurity( - * "is_granted(['read'], request.get('_legacy_controller'))", - * message="You do not have permission to access this." - * ) - * * @param Request $request * * @return Response @@ -47,14 +42,6 @@ class SettingsController extends FrameworkBundleAdminController } /** - * @AdminSecurity( - * "is_granted('update', request.get('_legacy_controller')) && is_granted('create', request.get('_legacy_controller')) && is_granted('delete', request.get('_legacy_controller'))", - * message="You do not have permission to update this.", - * redirectRoute="is_themecore_module_settings" - * ) - * - * @DemoRestricted(redirectRoute="is_themecore_module_settings") - * * @param Request $request * * @return RedirectResponse @@ -71,14 +58,6 @@ class SettingsController extends FrameworkBundleAdminController } /** - * @AdminSecurity( - * "is_granted('update', request.get('_legacy_controller')) && is_granted('create', request.get('_legacy_controller')) && is_granted('delete', request.get('_legacy_controller'))", - * message="You do not have permission to update this.", - * redirectRoute="is_themecore_module_settings" - * ) - * - * @DemoRestricted(redirectRoute="is_themecore_module_settings") - * * @param Request $request * * @return RedirectResponse @@ -95,8 +74,6 @@ class SettingsController extends FrameworkBundleAdminController } /** - * @DemoRestricted(redirectRoute="is_themecore_module_settings") - * * @param Request $request * * @return RedirectResponse @@ -110,22 +87,22 @@ class SettingsController extends FrameworkBundleAdminController switch ($request->get('type')) { case 'all': - $eraser->setQuery(_PS_ROOT_DIR_); + $eraser->setQuery(\_PS_ROOT_DIR_); break; case 'product': - $eraser->setQuery(_PS_PROD_IMG_DIR_); + $eraser->setQuery(\_PS_IMG_DIR_ . 'p/'); break; case 'module': - $eraser->setQuery(_PS_MODULE_DIR_); + $eraser->setQuery(\_PS_MODULE_DIR_); break; case 'cms': - $eraser->setQuery(_PS_IMG_DIR_ . 'cms/'); + $eraser->setQuery(\_PS_IMG_DIR_ . 'cms/'); break; case 'themes': - $eraser->setQuery(_PS_ROOT_DIR_ . '/themes/'); + $eraser->setQuery(\_PS_ROOT_DIR_ . '/themes/'); break; default: - $eraser->setQuery(_PS_ROOT_DIR_); + $eraser->setQuery(\_PS_ROOT_DIR_); break; } diff --git a/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php b/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php index a28ea5f..8b1ab23 100644 --- a/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php +++ b/is_themecore/src/Core/Smarty/SmartyHelperFunctions.php @@ -190,9 +190,114 @@ class SmartyHelperFunctions return $content; } - public static function isBright($hexColor) + + + +/* CUSTOM ADDITIONS BELOW */ + + + public static function isBright($hexColor) { $calculator = new ColorBrightnessCalculator(); return $calculator->isBright($hexColor); } -} + + public static function displaySvgIcon($params){ + /* + Helper to display SVG icons stored in themes/falcon/_dev/img/icons/ + registered under public_html/modules/is_themecore/src/Hook/Smarty.php + + Usage examples in a TPL file: + + {svg_icon file='person.svg' fill='red' width='24' height='24'} + {svg_icon file='person.svg'} + */ + + // Grab svg under falcon/_dev/img and display an error if not found + if (empty($params['file'])) { + return ''; + } + $icon_path = _PS_THEME_DIR_ . '/_dev/img/' . basename($params['file']); + + if (!is_file($icon_path)) { + if (defined('_PS_MODE_DEV_') && _PS_MODE_DEV_) { + return 'Invalid SVG path: ' . htmlspecialchars($icon_path); + } + return ''; + } + + $svg_content = file_get_contents($icon_path); + + /* Define an associative array of SVG properties + If the property is a style, addd it in a style tag. + If the property is an attribute, replace it in the svg code. + + This reduces the risk of interfering with other attributes in the svg's code that can mess up the whole image. */ + $svg_props = array( + 'width' => 'style', + 'height' => 'style', + 'opacity' => 'style', + 'fill' => 'attribute', + 'stroke' => 'attribute', + ); + + // Styles + $styles = []; + foreach ($svg_props as $prop => $type) { + if ($type === 'style' && !empty($params[$prop])) { + $value = $params[$prop]; + if (in_array($prop, ['width', 'height']) && is_numeric($value)) { + $value .= 'px'; + } + $styles[] = $prop . ': ' . $value; + } + } + if (!empty($styles)) { + $style_attr = 'style="' . implode('; ', $styles) . '"'; + $svg_content = preg_replace('/(]*?)>/', '$1 ' . $style_attr . '>', $svg_content, 1); + } + + // Attributes + foreach ($svg_props as $prop => $type) { + if ($type === 'attribute' && !empty($params[$prop])) { + $value = $params[$prop]; + // Use word boundaries to avoid matching partial names like fill-opacity or stroke-width + // Replace ALL occurrences of the attribute + $svg_content = preg_replace( + '/\b' . preg_quote($prop) . '\b\s*=\s*"[^"]*"/', + $prop . '="' . $value . '"', + $svg_content + ); + } + } + + return $svg_content; + } + + + public static function displayPriceSplit($price, $show_currency = false) { + /* Helper to split the price into euros and cents to make it more stylish + registered under public_html/modules/is_themecore/src/Hook/Smarty.php + + Usage examples in a TPL file: + {price_split price=$product.price} + + */ + //Convert to a string and only keep numbers, commas and dots + $currency_name = \Context::getContext()->currency->name; + $currency_symbol = \Context::getContext()->currency->symbol; + $price_string = implode(',', $price); + $price_string = preg_replace('/[^0-9,.]/', '', $price_string); + + // Split by comma and wrap each part in a span + $price_parts = explode(',', $price_string); + if (count($price_parts) >= 2) { + echo '' . ($show_currency ? $currency_symbol : '') . $price_parts[0] . ''; + echo '' . $price_parts[1] . ''; + } else { + foreach ($price_parts as $part) { + echo '' . $part . ''; + } + } + } +} \ No newline at end of file diff --git a/is_themecore/src/Core/Webp/WebpPictureGenerator.php b/is_themecore/src/Core/Webp/WebpPictureGenerator.php index e770148..1dfba06 100644 --- a/is_themecore/src/Core/Webp/WebpPictureGenerator.php +++ b/is_themecore/src/Core/Webp/WebpPictureGenerator.php @@ -16,7 +16,7 @@ class WebpPictureGenerator public function loadContent() { - $this->doc->loadHTML('' . $this->content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); + @$this->doc->loadHTML('' . $this->content, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD); return $this; } diff --git a/is_themecore/src/Form/Settings/GeneralType.php b/is_themecore/src/Form/Settings/GeneralType.php index dc88221..0bd08f3 100644 --- a/is_themecore/src/Form/Settings/GeneralType.php +++ b/is_themecore/src/Form/Settings/GeneralType.php @@ -31,7 +31,7 @@ class GeneralType extends TranslatorAwareType * @param array $displayListChoices */ public function __construct( - TranslatorInterface $translator, + $translator, array $locales, array $displayListChoices ) { diff --git a/is_themecore/src/Form/Settings/WebpType.php b/is_themecore/src/Form/Settings/WebpType.php index 7d50ad4..ff95d64 100644 --- a/is_themecore/src/Form/Settings/WebpType.php +++ b/is_themecore/src/Form/Settings/WebpType.php @@ -47,7 +47,7 @@ class WebpType extends TranslatorAwareType * @param array $convertersListFull */ public function __construct( - TranslatorInterface $translator, + $translator, array $locales, array $convertersList, array $convertersListFull, diff --git a/is_themecore/src/Hook/Smarty.php b/is_themecore/src/Hook/Smarty.php index 7a9fc00..a83f7ec 100644 --- a/is_themecore/src/Hook/Smarty.php +++ b/is_themecore/src/Hook/Smarty.php @@ -56,5 +56,15 @@ public function hookActionDispatcherBefore(): void } else { return; } + if (!isset($this->context->smarty->registered_plugins['function']['svg_icon'])) { + $this->context->smarty->registerPlugin('function', 'svg_icon', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displaySvgIcon']); + } else { + return; + } + if (!isset($this->context->smarty->registered_plugins['function']['price_split'])) { + $this->context->smarty->registerPlugin('function', 'price_split', ['Oksydan\Module\IsThemeCore\Core\Smarty\SmartyHelperFunctions', 'displayPriceSplit']); + } else { + return; + } } } diff --git a/is_themecore/is_themecore/translations/nl.php b/is_themecore/translations/nl.php similarity index 100% rename from is_themecore/is_themecore/translations/nl.php rename to is_themecore/translations/nl.php diff --git a/is_themecore/is_themecore/upgrade/upgrade-4-1-0.php b/is_themecore/upgrade/upgrade-4-1-0.php similarity index 100% rename from is_themecore/is_themecore/upgrade/upgrade-4-1-0.php rename to is_themecore/upgrade/upgrade-4-1-0.php diff --git a/is_themecore/is_themecore/upgrade/upgrade-4-1-2.php b/is_themecore/upgrade/upgrade-4-1-2.php similarity index 100% rename from is_themecore/is_themecore/upgrade/upgrade-4-1-2.php rename to is_themecore/upgrade/upgrade-4-1-2.php diff --git a/is_themecore/is_themecore/views/img/example.webp b/is_themecore/views/img/example.webp similarity index 100% rename from is_themecore/is_themecore/views/img/example.webp rename to is_themecore/views/img/example.webp