From f8ccd5bc22bbc25188077dc20f0049f7068852ea Mon Sep 17 00:00:00 2001 From: d-buchmann Date: Wed, 25 Oct 2023 13:58:59 +0200 Subject: [PATCH 01/21] Add price_related_quantity to PriceDTO.php --- src/Services/InfoProviderSystem/DTOs/PriceDTO.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/DTOs/PriceDTO.php b/src/Services/InfoProviderSystem/DTOs/PriceDTO.php index 8c563149..f1eb28f7 100644 --- a/src/Services/InfoProviderSystem/DTOs/PriceDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/PriceDTO.php @@ -41,6 +41,8 @@ class PriceDTO public readonly ?string $currency_iso_code, /** @var bool If the price includes tax */ public readonly ?bool $includes_tax = true, + /** @var float the price related quantity */ + public readonly ?float $price_related_quantity = 1.0, ) { $this->price_as_big_decimal = BigDecimal::of($this->price); @@ -54,4 +56,4 @@ class PriceDTO { return $this->price_as_big_decimal; } -} \ No newline at end of file +} From e6870c61ee727da0e427c55e40a9d42d4b504795 Mon Sep 17 00:00:00 2001 From: d-buchmann Date: Wed, 25 Oct 2023 14:01:46 +0200 Subject: [PATCH 02/21] Update DTOtoEntityConverter.php --- src/Services/InfoProviderSystem/DTOtoEntityConverter.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php index 881d5f20..abccf444 100644 --- a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php +++ b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php @@ -87,6 +87,7 @@ final class DTOtoEntityConverter { $entity->setMinDiscountQuantity($dto->minimum_discount_amount); $entity->setPrice($dto->getPriceAsBigDecimal()); + $entity->setPriceRelatedQuantity($dto->price_related_quantity); //Currency TODO if ($dto->currency_iso_code !== null) { @@ -95,7 +96,6 @@ final class DTOtoEntityConverter $entity->setCurrency(null); } - return $entity; } @@ -295,4 +295,4 @@ final class DTOtoEntityConverter return $tmp; } -} \ No newline at end of file +} From aeed7c08028a4c369229b6405b3068e594dc1673 Mon Sep 17 00:00:00 2001 From: buchmann Date: Wed, 25 Oct 2023 14:29:18 +0200 Subject: [PATCH 03/21] fix line breaks --- src/Services/InfoProviderSystem/DTOtoEntityConverter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php index abccf444..df890a90 100644 --- a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php +++ b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php @@ -295,4 +295,4 @@ final class DTOtoEntityConverter return $tmp; } -} +} \ No newline at end of file From 5144b75ed7c9f8c5b95cec2f15ace4097cde08a9 Mon Sep 17 00:00:00 2001 From: buchmann Date: Wed, 25 Oct 2023 15:56:40 +0200 Subject: [PATCH 04/21] Fix image type alt name if newly generated --- src/Services/InfoProviderSystem/DTOtoEntityConverter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php index df890a90..c88ab429 100644 --- a/src/Services/InfoProviderSystem/DTOtoEntityConverter.php +++ b/src/Services/InfoProviderSystem/DTOtoEntityConverter.php @@ -289,7 +289,7 @@ final class DTOtoEntityConverter //If the entity was newly created, set the file filter if ($tmp->getID() === null) { $tmp->setFiletypeFilter('image/*'); - $tmp->setAlternativeNames(self::TYPE_DATASHEETS_NAME); + $tmp->setAlternativeNames(self::TYPE_IMAGE_NAME); } return $tmp; From a1c680d14d542f55f8ade3e1a8ba508cfd9f9d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 25 Oct 2023 17:05:24 +0200 Subject: [PATCH 05/21] Increase xdebug.max_nesting_level to 1000 if required in bin/console script Fix issue #411 --- bin/console | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bin/console b/bin/console index c933dc53..88268a20 100755 --- a/bin/console +++ b/bin/console @@ -4,6 +4,13 @@ use App\Kernel; use Symfony\Bundle\FrameworkBundle\Console\Application; +//Increase xdebug.max_nesting_level to 1000 if required (see issue #411) +//Check if xdebug extension is active, and xdebug.max_nesting_level is set to 256 or lower +if (extension_loaded('xdebug') && ((int) ini_get('xdebug.max_nesting_level')) <= 256) { + //Increase xdebug.max_nesting_level to 1000 + ini_set('xdebug.max_nesting_level', '1000'); +} + if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) { throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".'); } From eb24aa2e6828fc139b8914d85c8b27ebe2965f75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 25 Oct 2023 17:14:02 +0200 Subject: [PATCH 06/21] Updated dependencies --- composer.lock | 432 +++++++++++++++++++++++++------------------------ yarn.lock | 440 +++++++++++++++++++++++++++++--------------------- 2 files changed, 475 insertions(+), 397 deletions(-) diff --git a/composer.lock b/composer.lock index 41cbb33f..4facb6fc 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.0", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "de8d5835f0a349f80a32b268be893d8e2cf85a07" + "reference": "13aa25cd319ee5d45ce28d1e98e43b01f6132499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/de8d5835f0a349f80a32b268be893d8e2cf85a07", - "reference": "de8d5835f0a349f80a32b268be893d8e2cf85a07", + "url": "https://api.github.com/repos/api-platform/core/zipball/13aa25cd319ee5d45ce28d1e98e43b01f6132499", + "reference": "13aa25cd319ee5d45ce28d1e98e43b01f6132499", "shasum": "" }, "require": { @@ -166,9 +166,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.0" + "source": "https://github.com/api-platform/core/tree/v3.2.1" }, - "time": "2023-10-12T10:35:19+00:00" + "time": "2023-10-18T07:46:05+00:00" }, { "name": "beberlei/assert", @@ -2033,7 +2033,7 @@ "issues": "https://github.com/dompdf/dompdf/issues", "source": "https://github.com/dompdf/dompdf/tree/master" }, - "time": "2023-10-11T01:22:36+00:00" + "time": "2023-10-25T11:17:32+00:00" }, { "name": "egulias/email-validator", @@ -3298,16 +3298,16 @@ }, { "name": "knpuniversity/oauth2-client-bundle", - "version": "v2.15.0", + "version": "v2.16.0", "source": { "type": "git", "url": "https://github.com/knpuniversity/oauth2-client-bundle.git", - "reference": "9df0736d02eb20b953ec8e9986743611747d9ed9" + "reference": "2d4aacdf4d32a869d785d20515adf0615d9da248" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/9df0736d02eb20b953ec8e9986743611747d9ed9", - "reference": "9df0736d02eb20b953ec8e9986743611747d9ed9", + "url": "https://api.github.com/repos/knpuniversity/oauth2-client-bundle/zipball/2d4aacdf4d32a869d785d20515adf0615d9da248", + "reference": "2d4aacdf4d32a869d785d20515adf0615d9da248", "shasum": "" }, "require": { @@ -3352,35 +3352,35 @@ ], "support": { "issues": "https://github.com/knpuniversity/oauth2-client-bundle/issues", - "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.15.0" + "source": "https://github.com/knpuniversity/oauth2-client-bundle/tree/v2.16.0" }, - "time": "2023-05-03T16:44:38+00:00" + "time": "2023-10-24T15:57:05+00:00" }, { "name": "laminas/laminas-code", - "version": "4.12.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-code.git", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0" + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/36cbee228b427446419dd51944bdfb6bb8ddbcd0", - "reference": "36cbee228b427446419dd51944bdfb6bb8ddbcd0", + "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", + "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "require-dev": { - "doctrine/annotations": "^2.0.0", + "doctrine/annotations": "^2.0.1", "ext-phar": "*", - "laminas/laminas-coding-standard": "^2.3.0", - "laminas/laminas-stdlib": "^3.6.1", - "phpunit/phpunit": "^10.0.9", + "laminas/laminas-coding-standard": "^2.5.0", + "laminas/laminas-stdlib": "^3.17.0", + "phpunit/phpunit": "^10.3.3", "psalm/plugin-phpunit": "^0.18.4", - "vimeo/psalm": "^5.7.1" + "vimeo/psalm": "^5.15.0" }, "suggest": { "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", @@ -3417,7 +3417,7 @@ "type": "community_bridge" } ], - "time": "2023-09-06T14:56:25+00:00" + "time": "2023-10-18T10:00:55+00:00" }, { "name": "lcobucci/clock", @@ -5249,31 +5249,26 @@ }, { "name": "php-http/promise", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/php-http/promise.git", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88" + "reference": "ef4905bfb492ff389eb7f12e26925a0f20073050" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", - "reference": "4c4c1f9b7289a2ec57cde7f1e9762a5789506f88", + "url": "https://api.github.com/repos/php-http/promise/zipball/ef4905bfb492ff389eb7f12e26925a0f20073050", + "reference": "ef4905bfb492ff389eb7f12e26925a0f20073050", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "friends-of-phpspec/phpspec-code-coverage": "^4.3.2", - "phpspec/phpspec": "^5.1.2 || ^6.2" + "friends-of-phpspec/phpspec-code-coverage": "^4.3.2 || ^6.3", + "phpspec/phpspec": "^5.1.2 || ^6.2 || ^7.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, "autoload": { "psr-4": { "Http\\Promise\\": "src/" @@ -5300,9 +5295,9 @@ ], "support": { "issues": "https://github.com/php-http/promise/issues", - "source": "https://github.com/php-http/promise/tree/1.1.0" + "source": "https://github.com/php-http/promise/tree/1.2.0" }, - "time": "2020-07-07T09:29:14+00:00" + "time": "2023-10-24T09:20:26+00:00" }, { "name": "php-translation/common", @@ -7355,16 +7350,16 @@ }, { "name": "symfony/cache", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da" + "reference": "84aff8d948d6292d2b5a01ac622760be44dddc72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/6c1a3ea078c4d88ee892530945df63a87981b2da", - "reference": "6c1a3ea078c4d88ee892530945df63a87981b2da", + "url": "https://api.github.com/repos/symfony/cache/zipball/84aff8d948d6292d2b5a01ac622760be44dddc72", + "reference": "84aff8d948d6292d2b5a01ac622760be44dddc72", "shasum": "" }, "require": { @@ -7373,7 +7368,7 @@ "psr/log": "^1.1|^2|^3", "symfony/cache-contracts": "^2.5|^3", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.2.10" + "symfony/var-exporter": "^6.3.6" }, "conflict": { "doctrine/dbal": "<2.13.1", @@ -7388,7 +7383,7 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "symfony/config": "^5.4|^6.0", @@ -7431,7 +7426,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.3.5" + "source": "https://github.com/symfony/cache/tree/v6.3.6" }, "funding": [ { @@ -7447,7 +7442,7 @@ "type": "tidelift" } ], - "time": "2023-09-26T15:48:55+00:00" + "time": "2023-10-17T14:44:58+00:00" }, { "name": "symfony/cache-contracts", @@ -7978,16 +7973,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "9977eb1adf999ceded213e88c1ac6dff7a1a0306" + "reference": "6479c0b2cb2fa94338a5fb5b810a82d573ca15c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/9977eb1adf999ceded213e88c1ac6dff7a1a0306", - "reference": "9977eb1adf999ceded213e88c1ac6dff7a1a0306", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/6479c0b2cb2fa94338a5fb5b810a82d573ca15c2", + "reference": "6479c0b2cb2fa94338a5fb5b810a82d573ca15c2", "shasum": "" }, "require": { @@ -8020,8 +8015,8 @@ "doctrine/annotations": "^1.13.1|^2", "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.12", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.12|^3", "psr/log": "^1|^2|^3", "symfony/cache": "^5.4|^6.0", "symfony/config": "^5.4|^6.0", @@ -8068,7 +8063,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.5" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.6" }, "funding": [ { @@ -8084,7 +8079,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T16:16:03+00:00" + "time": "2023-10-17T16:20:28+00:00" }, { "name": "symfony/dotenv", @@ -8583,16 +8578,16 @@ }, { "name": "symfony/flex", - "version": "v2.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35" + "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/9c402af768c6c9f8126a9ffa192ecf7c16581e35", - "reference": "9c402af768c6c9f8126a9ffa192ecf7c16581e35", + "url": "https://api.github.com/repos/symfony/flex/zipball/46bebc3d097d1bb1dce04c5ba83658afd79988f9", + "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9", "shasum": "" }, "require": { @@ -8628,7 +8623,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.3.3" + "source": "https://github.com/symfony/flex/tree/v2.4.0" }, "funding": [ { @@ -8644,20 +8639,20 @@ "type": "tidelift" } ], - "time": "2023-08-04T09:02:35+00:00" + "time": "2023-10-22T18:05:25+00:00" }, { "name": "symfony/form", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "0f9ad8600c1021983d096512066ee54332aa3139" + "reference": "6af3c25eda0f2a028aeab7d81c2597dfedecd96a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/0f9ad8600c1021983d096512066ee54332aa3139", - "reference": "0f9ad8600c1021983d096512066ee54332aa3139", + "url": "https://api.github.com/repos/symfony/form/zipball/6af3c25eda0f2a028aeab7d81c2597dfedecd96a", + "reference": "6af3c25eda0f2a028aeab7d81c2597dfedecd96a", "shasum": "" }, "require": { @@ -8725,7 +8720,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.3.5" + "source": "https://github.com/symfony/form/tree/v6.3.6" }, "funding": [ { @@ -8741,20 +8736,20 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:47:23+00:00" + "time": "2023-10-17T11:32:53+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "567cafcfc08e3076b47290a7558b0ca17a98b0ce" + "reference": "5b5dca452a70d06d0463d3aeae640b2d034ef485" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/567cafcfc08e3076b47290a7558b0ca17a98b0ce", - "reference": "567cafcfc08e3076b47290a7558b0ca17a98b0ce", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/5b5dca452a70d06d0463d3aeae640b2d034ef485", + "reference": "5b5dca452a70d06d0463d3aeae640b2d034ef485", "shasum": "" }, "require": { @@ -8869,7 +8864,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.3.5" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.6" }, "funding": [ { @@ -8885,20 +8880,20 @@ "type": "tidelift" } ], - "time": "2023-09-29T10:45:15+00:00" + "time": "2023-10-12T17:41:20+00:00" }, { "name": "symfony/http-client", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d" + "reference": "ab8446f997efb9913627e9da10fa784d2182fe92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/213e564da4cbf61acc9728d97e666bcdb868c10d", - "reference": "213e564da4cbf61acc9728d97e666bcdb868c10d", + "url": "https://api.github.com/repos/symfony/http-client/zipball/ab8446f997efb9913627e9da10fa784d2182fe92", + "reference": "ab8446f997efb9913627e9da10fa784d2182fe92", "shasum": "" }, "require": { @@ -8961,7 +8956,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.3.5" + "source": "https://github.com/symfony/http-client/tree/v6.3.6" }, "funding": [ { @@ -8977,7 +8972,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T15:57:12+00:00" + "time": "2023-10-06T10:08:56+00:00" }, { "name": "symfony/http-client-contracts", @@ -9059,16 +9054,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957" + "reference": "c186627f52febe09c6d5270b04f8462687a250a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b50f5e281d722cb0f4c296f908bacc3e2b721957", - "reference": "b50f5e281d722cb0f4c296f908bacc3e2b721957", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c186627f52febe09c6d5270b04f8462687a250a6", + "reference": "c186627f52febe09c6d5270b04f8462687a250a6", "shasum": "" }, "require": { @@ -9078,12 +9073,12 @@ "symfony/polyfill-php83": "^1.27" }, "conflict": { - "symfony/cache": "<6.2" + "symfony/cache": "<6.3" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3.0", + "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.0", - "symfony/cache": "^5.4|^6.0", + "symfony/cache": "^6.3", "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^5.4|^6.0", "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", @@ -9116,7 +9111,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.5" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.6" }, "funding": [ { @@ -9132,20 +9127,20 @@ "type": "tidelift" } ], - "time": "2023-09-04T21:33:54+00:00" + "time": "2023-10-17T11:32:53+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc" + "reference": "4945f5001b06ff9080cd3d8f1f9f069094c0d156" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f991a964368bee8d883e8d57ced4fe9fff04dfc", - "reference": "9f991a964368bee8d883e8d57ced4fe9fff04dfc", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4945f5001b06ff9080cd3d8f1f9f069094c0d156", + "reference": "4945f5001b06ff9080cd3d8f1f9f069094c0d156", "shasum": "" }, "require": { @@ -9229,7 +9224,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.5" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.6" }, "funding": [ { @@ -9245,7 +9240,7 @@ "type": "tidelift" } ], - "time": "2023-09-30T06:37:04+00:00" + "time": "2023-10-21T13:12:51+00:00" }, { "name": "symfony/intl", @@ -10995,16 +10990,16 @@ }, { "name": "symfony/rate-limiter", - "version": "v6.3.2", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/rate-limiter.git", - "reference": "5223387e4017f26c8c61c46d8e39c11fe4d504b7" + "reference": "1eba1f963a7a35cee5f19593c84c374b54bf12dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/5223387e4017f26c8c61c46d8e39c11fe4d504b7", - "reference": "5223387e4017f26c8c61c46d8e39c11fe4d504b7", + "url": "https://api.github.com/repos/symfony/rate-limiter/zipball/1eba1f963a7a35cee5f19593c84c374b54bf12dc", + "reference": "1eba1f963a7a35cee5f19593c84c374b54bf12dc", "shasum": "" }, "require": { @@ -11045,7 +11040,7 @@ "rate-limiter" ], "support": { - "source": "https://github.com/symfony/rate-limiter/tree/v6.3.2" + "source": "https://github.com/symfony/rate-limiter/tree/v6.3.6" }, "funding": [ { @@ -11061,7 +11056,7 @@ "type": "tidelift" } ], - "time": "2023-07-13T14:29:38+00:00" + "time": "2023-10-11T18:18:20+00:00" }, { "name": "symfony/routing", @@ -11227,16 +11222,16 @@ }, { "name": "symfony/security-bundle", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "2df460eacceb11b9287cfafddda4d27023dd9001" + "reference": "0b07f3820370aba96e1633993c5c561364f88f30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/2df460eacceb11b9287cfafddda4d27023dd9001", - "reference": "2df460eacceb11b9287cfafddda4d27023dd9001", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/0b07f3820370aba96e1633993c5c561364f88f30", + "reference": "0b07f3820370aba96e1633993c5c561364f88f30", "shasum": "" }, "require": { @@ -11253,7 +11248,8 @@ "symfony/password-hasher": "^5.4|^6.0", "symfony/security-core": "^6.2", "symfony/security-csrf": "^5.4|^6.0", - "symfony/security-http": "^6.3.4" + "symfony/security-http": "^6.3.6", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/browser-kit": "<5.4", @@ -11317,7 +11313,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.3.5" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.6" }, "funding": [ { @@ -11333,7 +11329,7 @@ "type": "tidelift" } ], - "time": "2023-09-25T17:05:55+00:00" + "time": "2023-10-12T16:11:32+00:00" }, { "name": "symfony/security-core", @@ -11490,16 +11486,16 @@ }, { "name": "symfony/security-http", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "47058ea557a4c64ba86e9249651222842bd52e2a" + "reference": "573ef96ab62d509ac953362fa61f9d1bd283f3a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/47058ea557a4c64ba86e9249651222842bd52e2a", - "reference": "47058ea557a4c64ba86e9249651222842bd52e2a", + "url": "https://api.github.com/repos/symfony/security-http/zipball/573ef96ab62d509ac953362fa61f9d1bd283f3a7", + "reference": "573ef96ab62d509ac953362fa61f9d1bd283f3a7", "shasum": "" }, "require": { @@ -11509,7 +11505,8 @@ "symfony/http-kernel": "^6.3", "symfony/polyfill-mbstring": "~1.0", "symfony/property-access": "^5.4|^6.0", - "symfony/security-core": "^6.3" + "symfony/security-core": "^6.3", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/clock": "<6.3", @@ -11557,7 +11554,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v6.3.5" + "source": "https://github.com/symfony/security-http/tree/v6.3.6" }, "funding": [ { @@ -11573,20 +11570,20 @@ "type": "tidelift" } ], - "time": "2023-08-30T06:30:46+00:00" + "time": "2023-10-13T10:26:24+00:00" }, { "name": "symfony/serializer", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c" + "reference": "8c5fb7144889839751ad9680cf4f183f60f8fbce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", - "reference": "855fc058c8bdbb69f53834f2fdb3876c9bc0ab7c", + "url": "https://api.github.com/repos/symfony/serializer/zipball/8c5fb7144889839751ad9680cf4f183f60f8fbce", + "reference": "8c5fb7144889839751ad9680cf4f183f60f8fbce", "shasum": "" }, "require": { @@ -11651,7 +11648,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.5" + "source": "https://github.com/symfony/serializer/tree/v6.3.6" }, "funding": [ { @@ -11667,7 +11664,7 @@ "type": "tidelift" } ], - "time": "2023-09-29T16:18:53+00:00" + "time": "2023-10-17T11:32:53+00:00" }, { "name": "symfony/service-contracts", @@ -11969,16 +11966,16 @@ }, { "name": "symfony/translation", - "version": "v6.3.3", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd" + "reference": "869b26c7a9d4b8a48afdd77ab36031909c87e3a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", - "reference": "3ed078c54bc98bbe4414e1e9b2d5e85ed5a5c8bd", + "url": "https://api.github.com/repos/symfony/translation/zipball/869b26c7a9d4b8a48afdd77ab36031909c87e3a2", + "reference": "869b26c7a9d4b8a48afdd77ab36031909c87e3a2", "shasum": "" }, "require": { @@ -12044,7 +12041,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.3" + "source": "https://github.com/symfony/translation/tree/v6.3.6" }, "funding": [ { @@ -12060,7 +12057,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-17T11:32:53+00:00" }, { "name": "symfony/translation-contracts", @@ -12581,16 +12578,16 @@ }, { "name": "symfony/validator", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47" + "reference": "254290aa13d591883eb36327cbe80689cee38ffb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", - "reference": "48e815ba3b5eb72e632588dbf7ea2dc4e608ee47", + "url": "https://api.github.com/repos/symfony/validator/zipball/254290aa13d591883eb36327cbe80689cee38ffb", + "reference": "254290aa13d591883eb36327cbe80689cee38ffb", "shasum": "" }, "require": { @@ -12657,7 +12654,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.5" + "source": "https://github.com/symfony/validator/tree/v6.3.6" }, "funding": [ { @@ -12673,20 +12670,20 @@ "type": "tidelift" } ], - "time": "2023-09-29T07:41:15+00:00" + "time": "2023-10-20T16:20:17+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.5", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5" + "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3d9999376be5fea8de47752837a3e1d1c5f69ef5", - "reference": "3d9999376be5fea8de47752837a3e1d1c5f69ef5", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", + "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", "shasum": "" }, "require": { @@ -12741,7 +12738,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.5" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" }, "funding": [ { @@ -12757,20 +12754,20 @@ "type": "tidelift" } ], - "time": "2023-09-12T10:11:35+00:00" + "time": "2023-10-12T18:45:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.3.4", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691" + "reference": "374d289c13cb989027274c86206ddc63b16a2441" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/df1f8aac5751871b83d30bf3e2c355770f8f0691", - "reference": "df1f8aac5751871b83d30bf3e2c355770f8f0691", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/374d289c13cb989027274c86206ddc63b16a2441", + "reference": "374d289c13cb989027274c86206ddc63b16a2441", "shasum": "" }, "require": { @@ -12815,7 +12812,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.3.4" + "source": "https://github.com/symfony/var-exporter/tree/v6.3.6" }, "funding": [ { @@ -12831,7 +12828,7 @@ "type": "tidelift" } ], - "time": "2023-08-16T18:14:47+00:00" + "time": "2023-10-13T09:16:49+00:00" }, { "name": "symfony/web-link", @@ -12918,16 +12915,16 @@ }, { "name": "symfony/webpack-encore-bundle", - "version": "v2.1.0", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/symfony/webpack-encore-bundle.git", - "reference": "50d4af5cca35dab66a51dfeeb63616937ba96f4a" + "reference": "75cb918df3f65e28cf0d4bc03042bc45ccb19dd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/50d4af5cca35dab66a51dfeeb63616937ba96f4a", - "reference": "50d4af5cca35dab66a51dfeeb63616937ba96f4a", + "url": "https://api.github.com/repos/symfony/webpack-encore-bundle/zipball/75cb918df3f65e28cf0d4bc03042bc45ccb19dd0", + "reference": "75cb918df3f65e28cf0d4bc03042bc45ccb19dd0", "shasum": "" }, "require": { @@ -12969,7 +12966,7 @@ "description": "Integration with your Symfony app & Webpack Encore!", "support": { "issues": "https://github.com/symfony/webpack-encore-bundle/issues", - "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.1.0" + "source": "https://github.com/symfony/webpack-encore-bundle/tree/v2.1.1" }, "funding": [ { @@ -12985,7 +12982,7 @@ "type": "tidelift" } ], - "time": "2023-09-26T14:41:29+00:00" + "time": "2023-10-22T18:53:08+00:00" }, { "name": "symfony/yaml", @@ -13061,16 +13058,16 @@ }, { "name": "tecnickcom/tc-lib-barcode", - "version": "1.17.38", + "version": "1.18.4", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git", - "reference": "b74f197e80e85707c0db2cc6f0fc57fb5e80e331" + "reference": "cd81392e6e1e57e0f6ff8519b1edbc11d8e47a44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/b74f197e80e85707c0db2cc6f0fc57fb5e80e331", - "reference": "b74f197e80e85707c0db2cc6f0fc57fb5e80e331", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/cd81392e6e1e57e0f6ff8519b1edbc11d8e47a44", + "reference": "cd81392e6e1e57e0f6ff8519b1edbc11d8e47a44", "shasum": "" }, "require": { @@ -13078,7 +13075,7 @@ "ext-date": "*", "ext-gd": "*", "ext-pcre": "*", - "php": ">=5.4", + "php": ">=5.6", "tecnickcom/tc-lib-color": "^1.14" }, "require-dev": { @@ -13118,6 +13115,9 @@ "EAN 13", "EAN 8", "ECC200", + "ISO IEC 15438 2006", + "ISO IEC 16022", + "ISO IEC 24778 2008", "Intelligent Mail Barcode", "Interleaved 2 of 5", "KIX", @@ -13134,6 +13134,7 @@ "USD-3", "USPS-B-3200", "USS-93", + "aztec", "barcode", "datamatrix", "pdf417", @@ -13145,7 +13146,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-barcode/issues", - "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/1.17.38" + "source": "https://github.com/tecnickcom/tc-lib-barcode/tree/1.18.4" }, "funding": [ { @@ -13153,20 +13154,20 @@ "type": "custom" } ], - "time": "2023-10-11T16:48:03+00:00" + "time": "2023-10-23T09:30:01+00:00" }, { "name": "tecnickcom/tc-lib-color", - "version": "1.14.37", + "version": "1.14.39", "source": { "type": "git", "url": "https://github.com/tecnickcom/tc-lib-color.git", - "reference": "2d7b7e421dba1836d23912723d83adebc53f0ef6" + "reference": "f7a414e7ddbdcd98105506ca1eecc68d4820fb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/2d7b7e421dba1836d23912723d83adebc53f0ef6", - "reference": "2d7b7e421dba1836d23912723d83adebc53f0ef6", + "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/f7a414e7ddbdcd98105506ca1eecc68d4820fb89", + "reference": "f7a414e7ddbdcd98105506ca1eecc68d4820fb89", "shasum": "" }, "require": { @@ -13214,7 +13215,7 @@ ], "support": { "issues": "https://github.com/tecnickcom/tc-lib-color/issues", - "source": "https://github.com/tecnickcom/tc-lib-color/tree/1.14.37" + "source": "https://github.com/tecnickcom/tc-lib-color/tree/1.14.39" }, "funding": [ { @@ -13222,7 +13223,7 @@ "type": "custom" } ], - "time": "2023-10-11T16:46:17+00:00" + "time": "2023-10-23T09:28:20+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -13897,7 +13898,7 @@ }, { "name": "web-auth/metadata-service", - "version": "4.7.2", + "version": "4.7.3", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-metadata-service.git", @@ -13962,7 +13963,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.7.2" + "source": "https://github.com/web-auth/webauthn-metadata-service/tree/4.7.3" }, "funding": [ { @@ -13978,16 +13979,16 @@ }, { "name": "web-auth/webauthn-lib", - "version": "4.7.2", + "version": "4.7.3", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-lib.git", - "reference": "c48f7049c96c1ed96672bcbbef13be5eb90a9163" + "reference": "d9b0d0563c561eaec5c24c46a551bf8ff23a030b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/c48f7049c96c1ed96672bcbbef13be5eb90a9163", - "reference": "c48f7049c96c1ed96672bcbbef13be5eb90a9163", + "url": "https://api.github.com/repos/web-auth/webauthn-lib/zipball/d9b0d0563c561eaec5c24c46a551bf8ff23a030b", + "reference": "d9b0d0563c561eaec5c24c46a551bf8ff23a030b", "shasum": "" }, "require": { @@ -14050,7 +14051,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-lib/tree/4.7.2" + "source": "https://github.com/web-auth/webauthn-lib/tree/4.7.3" }, "funding": [ { @@ -14062,20 +14063,20 @@ "type": "patreon" } ], - "time": "2023-09-29T14:10:15+00:00" + "time": "2023-10-15T11:54:31+00:00" }, { "name": "web-auth/webauthn-symfony-bundle", - "version": "4.7.2", + "version": "4.7.3", "source": { "type": "git", "url": "https://github.com/web-auth/webauthn-symfony-bundle.git", - "reference": "18a53727eb6bbebe39d031c135f338b69a7fd0a6" + "reference": "8209537a94314eb0fb9b186f72601536b953d16f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/18a53727eb6bbebe39d031c135f338b69a7fd0a6", - "reference": "18a53727eb6bbebe39d031c135f338b69a7fd0a6", + "url": "https://api.github.com/repos/web-auth/webauthn-symfony-bundle/zipball/8209537a94314eb0fb9b186f72601536b953d16f", + "reference": "8209537a94314eb0fb9b186f72601536b953d16f", "shasum": "" }, "require": { @@ -14133,7 +14134,7 @@ "webauthn" ], "support": { - "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.7.2" + "source": "https://github.com/web-auth/webauthn-symfony-bundle/tree/4.7.3" }, "funding": [ { @@ -14145,7 +14146,7 @@ "type": "patreon" } ], - "time": "2023-09-29T16:47:38+00:00" + "time": "2023-10-15T11:40:15+00:00" }, { "name": "web-token/jwt-core", @@ -15481,16 +15482,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.38", + "version": "1.10.39", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691" + "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691", - "reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d9dedb0413f678b4d03cbc2279a48f91592c97c4", + "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4", "shasum": "" }, "require": { @@ -15539,7 +15540,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T14:19:14+00:00" + "time": "2023-10-17T15:46:26+00:00" }, { "name": "phpstan/phpstan-doctrine", @@ -16221,16 +16222,16 @@ }, { "name": "rector/rector", - "version": "0.18.5", + "version": "0.18.6", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb" + "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/2a3b82f317e431fc142d21f3303891a4e64c96eb", - "reference": "2a3b82f317e431fc142d21f3303891a4e64c96eb", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/02041b220704b9cbe075f0310d0954b2fda5c40c", + "reference": "02041b220704b9cbe075f0310d0954b2fda5c40c", "shasum": "" }, "require": { @@ -16265,7 +16266,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/0.18.5" + "source": "https://github.com/rectorphp/rector/tree/0.18.6" }, "funding": [ { @@ -16273,7 +16274,7 @@ "type": "github" } ], - "time": "2023-10-05T11:25:40+00:00" + "time": "2023-10-24T15:00:59+00:00" }, { "name": "roave/security-advisories", @@ -16281,12 +16282,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "efd339340c840237fad050f3ea6fd8bbbbfc7ed6" + "reference": "66671a636e514920046c1028f8c837c1d5a54873" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/efd339340c840237fad050f3ea6fd8bbbbfc7ed6", - "reference": "efd339340c840237fad050f3ea6fd8bbbbfc7ed6", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/66671a636e514920046c1028f8c837c1d5a54873", + "reference": "66671a636e514920046c1028f8c837c1d5a54873", "shasum": "" }, "conflict": { @@ -16323,6 +16324,7 @@ "azuracast/azuracast": "<0.18.3", "backdrop/backdrop": "<1.24.2", "backpack/crud": "<3.4.9", + "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", "badaso/core": "<2.7", "bagisto/bagisto": "<0.1.5", "barrelstrength/sprout-base-email": "<1.2.7", @@ -16388,14 +16390,14 @@ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", "desperado/xml-bundle": "<=0.1.7", "directmailteam/direct-mail": "<5.2.4", - "doctrine/annotations": ">=1,<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", + "doctrine/annotations": "<1.2.7", + "doctrine/cache": "<1.3.2|>=1.4,<1.4.2", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", "doctrine/doctrine-bundle": "<1.5.2", "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": ">=1,<1.0.2", - "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", "dolibarr/dolibarr": "<18", "dompdf/dompdf": "<2.0.2|==2.0.2", @@ -16411,6 +16413,7 @@ "enshrined/svg-sanitize": "<0.15", "erusev/parsedown": "<1.7.2", "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", "exceedone/exment": "<4.4.3|>=5,<5.0.3", "exceedone/laravel-admin": "<2.2.3|==3", "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", @@ -16426,7 +16429,7 @@ "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", "ezsystems/ezplatform-user": ">=1,<1.0.1", "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.30", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", @@ -16564,7 +16567,7 @@ "magento/magento1ee": ">=1,<1.14.4.3-dev", "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", "maikuolan/phpmussel": ">=1,<1.6", - "mantisbt/mantisbt": "<=2.25.5", + "mantisbt/mantisbt": "<=2.25.7", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", "mautic/core": "<4.3", @@ -16584,6 +16587,7 @@ "mongodb/mongodb": ">=1,<1.9.2", "monolog/monolog": ">=1.8,<1.12", "moodle/moodle": "<4.2.0.0-RC2-dev|==4.2", + "mos/cimage": "<0.7.19", "movim/moxl": ">=0.8,<=0.10", "mpdf/mpdf": "<=7.1.7", "mustache/mustache": ">=2,<2.14.1", @@ -16599,6 +16603,7 @@ "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", "nilsteampassnet/teampass": "<3.0.10", + "nonfiction/nterchange": "<4.1.1", "notrinos/notrinos-erp": "<=0.7", "noumo/easyii": "<=0.9", "nukeviet/nukeviet": "<4.5.02", @@ -16610,6 +16615,7 @@ "october/october": "<=3.4.4", "october/rain": "<1.0.472|>=1.1,<1.1.2", "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.0.66", + "omeka/omeka-s": "<4.0.3", "onelogin/php-saml": "<2.10.4", "oneup/uploader-bundle": "<1.9.3|>=2,<2.1.5", "open-web-analytics/open-web-analytics": "<1.7.4", @@ -16716,7 +16722,7 @@ "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", "silverstripe/framework": "<4.13.14|>=5,<5.0.13", - "silverstripe/graphql": "<3.5.2|>=4.0.0.0-alpha1,<4.0.0.0-alpha2|>=4.1.1,<4.1.2|>=4.2.2,<4.2.3", + "silverstripe/graphql": "<3.8.2|>=4,<4.1.3|>=4.2,<4.2.5|>=4.3,<4.3.4|>=5,<5.0.3", "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", "silverstripe/recipe-cms": ">=4.5,<4.5.3", "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", @@ -16809,7 +16815,7 @@ "thinkcmf/thinkcmf": "<=5.1.7", "thorsten/phpmyfaq": "<3.2.0.0-beta2", "tikiwiki/tiki-manager": "<=17.1", - "tinymce/tinymce": "<5.10.7|>=6,<6.3.1", + "tinymce/tinymce": "<5.10.8|>=6,<6.7.1", "tinymighty/wiki-seo": "<1.2.2", "titon/framework": "<9.9.99", "tobiasbg/tablepress": "<=2.0.0.0-RC1", @@ -16882,7 +16888,7 @@ "yourls/yourls": "<=1.8.2", "zencart/zencart": "<=1.5.7.0-beta", "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-cache": "<2.4.8|>=2.5,<2.5.3", "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", @@ -16914,7 +16920,7 @@ "zenstruck/collection": "<0.2.1", "zetacomponents/mail": "<1.8.2", "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfcampus/zf-apigility-doctrine": "<1.0.3", "zfr/zfr-oauth2-server-module": "<0.1.2", "zoujingli/thinkadmin": "<6.0.22" }, @@ -16954,7 +16960,7 @@ "type": "tidelift" } ], - "time": "2023-10-11T21:04:21+00:00" + "time": "2023-10-24T03:04:20+00:00" }, { "name": "sebastian/cli-parser", @@ -18286,16 +18292,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.3.2", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d" + "reference": "c6f1df6a76c2c12bd14a0a5bf7c556dd935efe1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/e020e1efbd1b42cb670fcd7d19a25abbddba035d", - "reference": "e020e1efbd1b42cb670fcd7d19a25abbddba035d", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/c6f1df6a76c2c12bd14a0a5bf7c556dd935efe1d", + "reference": "c6f1df6a76c2c12bd14a0a5bf7c556dd935efe1d", "shasum": "" }, "require": { @@ -18347,7 +18353,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.2" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.3.6" }, "funding": [ { @@ -18363,20 +18369,20 @@ "type": "tidelift" } ], - "time": "2023-07-12T16:00:22+00:00" + "time": "2023-10-12T15:02:41+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v6.3.2", + "version": "v6.3.6", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "6101b5ab7857c373d237e121f9060c68b32e1373" + "reference": "249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6101b5ab7857c373d237e121f9060c68b32e1373", - "reference": "6101b5ab7857c373d237e121f9060c68b32e1373", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd", + "reference": "249cb2486597d3ab810d8bcc8e4db5ad0fc3e3bd", "shasum": "" }, "require": { @@ -18428,7 +18434,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.2" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.6" }, "funding": [ { @@ -18444,7 +18450,7 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:17:28+00:00" + "time": "2023-10-11T18:18:20+00:00" }, { "name": "symplify/easy-coding-standard", diff --git a/yarn.lock b/yarn.lock index f19be439..729353ef 100644 --- a/yarn.lock +++ b/yarn.lock @@ -990,10 +990,10 @@ "@ckeditor/ckeditor5-utils" "40.0.0" lodash-es "4.17.21" -"@ckeditor/ckeditor5-dev-translations@^39.1.0": - version "39.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.1.0.tgz#d78f383f658d61934cc318ce8198f37cbc045bb5" - integrity sha512-QvgIHjjn7p9sJuJb1COdMINAajcv6iTLJUnsg9bf2/xSqvbz3c3KixeNXddlDHsLTaD6ZVopQvdGKMus0HuLLQ== +"@ckeditor/ckeditor5-dev-translations@^39.1.0", "@ckeditor/ckeditor5-dev-translations@^39.2.0": + version "39.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-translations/-/ckeditor5-dev-translations-39.2.0.tgz#9414e7ee37aba9792269fba941792be01135d956" + integrity sha512-Bz57yt70Kb4g4snkZwIZ0fKZo5vLphyX0G05ETiPu1hDcZN0oQSy7aK/kn4eJ3ptO3/7lwJhQZUE0opzkfWSqQ== dependencies: "@babel/parser" "^7.18.9" "@babel/traverse" "^7.18.9" @@ -1003,11 +1003,11 @@ webpack-sources "^2.0.1" "@ckeditor/ckeditor5-dev-utils@^39.1.0": - version "39.1.0" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.1.0.tgz#c23b057db8fde233175d85f00f00158cbafeee8c" - integrity sha512-rIUzpS00xbBaFqar8EThDDLZS1IQ5xuYDsi9hiOAhMAM5hqxGktjY666/yqXtuXp3FHW8pYUFwCjHj9T1rWVSw== + version "39.2.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-39.2.0.tgz#d4b44d6f54a546808a184b0ad39aa32da5f038c8" + integrity sha512-mmBLo+xvG0ACErcJR6QLXi0mz8rRnC5sCp9IhS/P2tl1TrYGyo7fma1M1YL2WZ6n8Z6sT1xWdQga4ZN0fxYdDg== dependencies: - "@ckeditor/ckeditor5-dev-translations" "^39.1.0" + "@ckeditor/ckeditor5-dev-translations" "^39.2.0" chalk "^3.0.0" cli-cursor "^3.1.0" cli-spinners "^2.6.1" @@ -1477,10 +1477,10 @@ dependencies: tslib "^2.4.0" -"@formatjs/icu-messageformat-parser@2.6.2": - version "2.6.2" - resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.6.2.tgz#9bbb29099416e4ce2c7df50029c48985d4f901b3" - integrity sha512-nF/Iww7sc5h+1MBCDRm68qpHTCG4xvGzYs/x9HFcDETSGScaJ1Fcadk5U/NXjXeCtzD+DhN4BAwKFVclHfKMdA== +"@formatjs/icu-messageformat-parser@2.7.0": + version "2.7.0" + resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.0.tgz#9b13f2710a3b4efddfeb544480f684f27a53483b" + integrity sha512-7uqC4C2RqOaBQtcjqXsSpGRYVn+ckjhNga5T/otFh6MgxRrCJQqvjfbrGLpX1Lcbxdm5WH3Z2WZqt1+Tm/cn/Q== dependencies: "@formatjs/ecma402-abstract" "1.17.2" "@formatjs/icu-skeleton-parser" "1.6.2" @@ -1583,9 +1583,9 @@ integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@^0.3.17", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.9": - version "0.3.19" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz#f8a3249862f91be48d3127c3cfe992f79b4b8811" - integrity sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw== + version "0.3.20" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz#72e45707cf240fa6b081d0366f8265b0cd10197f" + integrity sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q== dependencies: "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" @@ -1687,13 +1687,13 @@ version "0.1.0" "@symfony/webpack-encore@^4.1.0": - version "4.4.0" - resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-4.4.0.tgz#9cc67e360ed19206d05cd50b706b7d68aaa424c4" - integrity sha512-p3n2Z16sGV6odZ3ihIU+gupYc55KfrfCt62+Gppe8MUo6QuT5Bk2cXXjR4Hb89KvCRDHnjYEWVfnewRsfE8TRQ== + version "4.5.0" + resolved "https://registry.yarnpkg.com/@symfony/webpack-encore/-/webpack-encore-4.5.0.tgz#6f8251518412e37e947100cb6daadf846cfea8dd" + integrity sha512-eGHtQc1BDDj7hS35FyIDxQdgQcgKZ5kPh9nLLUihyDE37kPav/id1PfaHoAfydqQyv4QHsXQzLfdYC7k8agFLw== dependencies: "@nuxt/friendly-errors-webpack-plugin" "^2.5.1" assets-webpack-plugin "7.0.*" - babel-loader "^8.2.5" + babel-loader "^9.1.3" chalk "^4.0.0" clean-webpack-plugin "^4.0.0" css-loader "^6.7.0" @@ -1723,60 +1723,60 @@ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA== "@types/body-parser@*": - version "1.19.3" - resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.3.tgz#fb558014374f7d9e56c8f34bab2042a3a07d25cd" - integrity sha512-oyl4jvAfTGX9Bt6Or4H9ni1Z447/tQuxnZsytsCaExKlmJiU8sFgnIBRzJUpKwB5eWn9HuBYlUlVA74q/yN0eQ== + version "1.19.4" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.4.tgz#78ad68f1f79eb851aa3634db0c7f57f6f601b462" + integrity sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA== dependencies: "@types/connect" "*" "@types/node" "*" "@types/bonjour@^3.5.9": - version "3.5.11" - resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.11.tgz#fbaa46a1529ea5c5e46cde36e4be6a880db55b84" - integrity sha512-isGhjmBtLIxdHBDl2xGwUzEM8AOyOvWsADWq7rqirdi/ZQoHnLWErHvsThcEzTX8juDRiZtzp2Qkv5bgNh6mAg== + version "3.5.12" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.12.tgz#49badafb988e6c433ca675a5fd769b93b7649fc8" + integrity sha512-ky0kWSqXVxSqgqJvPIkgFkcn4C8MnRog308Ou8xBBIVo39OmUFy+jqNe0nPwLCDFxUpmT9EvT91YzOJgkDRcFg== dependencies: "@types/node" "*" "@types/connect-history-api-fallback@^1.3.5": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.1.tgz#6e5e3602d93bda975cebc3449e1a318340af9e20" - integrity sha512-iaQslNbARe8fctL5Lk+DsmgWOM83lM+7FzP0eQUJs1jd3kBE8NWqBTIT2S8SqQOJjxvt2eyIjpOuYeRXq2AdMw== + version "1.5.2" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.2.tgz#acf51e088b3bb6507f7b093bd2b0de20940179cc" + integrity sha512-gX2j9x+NzSh4zOhnRPSdPPmTepS4DfxES0AvIFv3jGv5QyeAJf6u6dY5/BAoAJU9Qq1uTvwOku8SSC2GnCRl6Q== dependencies: "@types/express-serve-static-core" "*" "@types/node" "*" "@types/connect@*": - version "3.4.36" - resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.36.tgz#e511558c15a39cb29bd5357eebb57bd1459cd1ab" - integrity sha512-P63Zd/JUGq+PdrM1lv0Wv5SBYeA2+CORvbrXbngriYY0jzLUWfQMQQxOhjONEz/wlHOAxOdY7CY65rgQdTjq2w== + version "3.4.37" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.37.tgz#c66a96689fd3127c8772eb3e9e5c6028ec1a9af5" + integrity sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q== dependencies: "@types/node" "*" "@types/eslint-scope@^3.7.3": - version "3.7.5" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.5.tgz#e28b09dbb1d9d35fdfa8a884225f00440dfc5a3e" - integrity sha512-JNvhIEyxVW6EoMIFIvj93ZOywYFatlpu9deeH6eSx6PE3WHYvHaQtmHmQeNw7aA81bYGBPPQqdtBm6b1SsQMmA== + version "3.7.6" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.6.tgz#585578b368ed170e67de8aae7b93f54a1b2fdc26" + integrity sha512-zfM4ipmxVKWdxtDaJ3MP3pBurDXOCoyjvlpE3u6Qzrmw4BPbfm4/ambIeTk/r/J0iq/+2/xp0Fmt+gFvXJY2PQ== dependencies: "@types/eslint" "*" "@types/estree" "*" "@types/eslint@*": - version "8.44.4" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.4.tgz#28eaff82e1ca0a96554ec5bb0188f10ae1a74c2f" - integrity sha512-lOzjyfY/D9QR4hY9oblZ76B90MYTB3RrQ4z2vBIJKj9ROCRqdkYl2gSUx1x1a4IWPjKJZLL4Aw1Zfay7eMnmnA== + version "8.44.6" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.44.6.tgz#60e564551966dd255f4c01c459f0b4fb87068603" + integrity sha512-P6bY56TVmX8y9J87jHNgQh43h6VVU+6H7oN7hgvivV81K2XY8qJZ5vqPy/HdUoVIelii2kChYVzQanlswPWVFw== dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.2.tgz#ff02bc3dc8317cd668dfec247b750ba1f1d62453" - integrity sha512-VeiPZ9MMwXjO32/Xu7+OwflfmeoRwkE/qzndw42gGtgJwZopBnzy2gD//NN1+go1mADzkDcqf/KnFRSjTJ8xJA== + version "1.0.3" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" + integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": - version "4.17.37" - resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.37.tgz#7e4b7b59da9142138a2aaa7621f5abedce8c7320" - integrity sha512-ZohaCYTgGFcOP7u6aJOhY9uIZQgZ2vxC2yWoArY+FeDXlqeH66ZVBjgvg+RLVAS/DWNq4Ap9ZXu1+SUQiiWYMg== + version "4.17.39" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz#2107afc0a4b035e6cb00accac3bdf2d76ae408c8" + integrity sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ== dependencies: "@types/node" "*" "@types/qs" "*" @@ -1784,9 +1784,9 @@ "@types/send" "*" "@types/express@*", "@types/express@^4.17.13": - version "4.17.19" - resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.19.tgz#6ff9b4851fda132c5d3dcd2f89fdb6a7a0031ced" - integrity sha512-UtOfBtzN9OvpZPPbnnYunfjM7XCI4jyk1NvnFhTVz5krYAnW4o5DCoIekvms+8ApqhB4+9wSge1kBijdfTSmfg== + version "4.17.20" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.20.tgz#e7c9b40276d29e38a4e3564d7a3d65911e2aa433" + integrity sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw== dependencies: "@types/body-parser" "*" "@types/express-serve-static-core" "^4.17.33" @@ -1802,50 +1802,50 @@ "@types/node" "*" "@types/http-errors@*": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.2.tgz#a86e00bbde8950364f8e7846687259ffcd96e8c2" - integrity sha512-lPG6KlZs88gef6aD85z3HNkztpj7w2R7HmR3gygjfXCQmsLloWNARFkMuzKiiY8FGdh1XDpgBdrSf4aKDiA7Kg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.3.tgz#c54e61f79b3947d040f150abd58f71efb422ff62" + integrity sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA== "@types/http-proxy@^1.17.8": - version "1.17.12" - resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.12.tgz#86e849e9eeae0362548803c37a0a1afc616bd96b" - integrity sha512-kQtujO08dVtQ2wXAuSFfk9ASy3sug4+ogFR8Kd8UgP8PEuc1/G/8yjYRmp//PcDNJEUKOza/MrQu15bouEUCiw== + version "1.17.13" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.13.tgz#dd3a4da550580eb0557d4c7128a2ff1d1a38d465" + integrity sha512-GkhdWcMNiR5QSQRYnJ+/oXzu0+7JJEPC8vkWXK351BkhjraZF+1W13CUYARUvX9+NqIU2n6YHA4iwywsc/M6Sw== dependencies: "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0": - version "2.0.4" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz#8467d4b3c087805d63580480890791277ce35c44" - integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g== + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#fdfdd69fa16d530047d9963635bd77c71a08c068" + integrity sha512-zONci81DZYCZjiLe0r6equvZut0b+dBRPBN5kBDjsONnutYNtJMoWQ9uR2RkL1gLG9NMTzvf+29e5RFfPbeKhQ== "@types/istanbul-lib-report@*": - version "3.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#412e0725ef41cde73bfa03e0e833eaff41e0fd63" - integrity sha512-gPQuzaPR5h/djlAv2apEG1HVOyj1IUs7GpfMZixU0/0KXT3pm64ylHuMUI1/Akh+sq/iikxg6Z2j+fcMDXaaTQ== + version "3.0.2" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.2.tgz#394798d5f727402eb5ec99eb9618ffcd2b7645a1" + integrity sha512-8toY6FgdltSdONav1XtUHl4LN1yTmLza+EuDazb/fEmRNCwjyqNVIQWs2IfC74IqjHkREs/nQ2FWq5kZU9IC0w== dependencies: "@types/istanbul-lib-coverage" "*" "@types/istanbul-reports@^3.0.0": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.2.tgz#edc8e421991a3b4df875036d381fc0a5a982f549" - integrity sha512-kv43F9eb3Lhj+lr/Hn6OcLCs/sSM8bt+fIaP11rCYngfV6NVjzWXJ17owQtDQTL9tQ8WSLUrGsSJ6rJz0F1w1A== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.3.tgz#0313e2608e6d6955d195f55361ddeebd4b74c6e7" + integrity sha512-1nESsePMBlf0RPRffLZi5ujYh7IH1BWL4y9pr+Bn3cJBdxz+RTP8bUFljLz9HvzhhOSWKdyBZ4DIivdL6rvgZg== dependencies: "@types/istanbul-lib-report" "*" -"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": - version "7.0.13" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85" - integrity sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ== +"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.14" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" + integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== "@types/mime@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.2.tgz#c1ae807f13d308ee7511a5b81c74f327028e66e8" - integrity sha512-Wj+fqpTLtTbG7c0tH47dkahefpLKEbB+xAZuLq7b4/IDHPl/n6VoXcyUQ2bypFlbSwvCr0y+bD4euTTqTJsPxQ== + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.3.tgz#886674659ce55fe7c6c06ec5ca7c0eb276a08f91" + integrity sha512-i8MBln35l856k5iOhKk2XJ4SeAWg75mLIpZB4v6imOagKL6twsukBZGDMNhdOVk7yRFTMPpfILocMos59Q1otQ== "@types/mime@^1": - version "1.3.3" - resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.3.tgz#bbe64987e0eb05de150c305005055c7ad784a9ce" - integrity sha512-Ys+/St+2VF4+xuY6+kDIXGxbNRO0mesVg0bbxEfB97Od1Vjpjx9KD1qxs64Gcb3CWPirk9Xe+PT4YiiHQ9T+eg== + version "1.3.4" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.4.tgz#a4ed836e069491414bab92c31fdea9e557aca0d9" + integrity sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw== "@types/minimatch@*": version "5.1.2" @@ -1853,26 +1853,26 @@ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== "@types/node@*": - version "20.8.6" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.6.tgz#0dbd4ebcc82ad0128df05d0e6f57e05359ee47fa" - integrity sha512-eWO4K2Ji70QzKUqRy6oyJWUeB7+g2cRagT3T/nxYibYcT4y2BDL8lqolRXjTHmkZCdJfIPaY73KbJAZmcryxTQ== + version "20.8.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.8.tgz#adee050b422061ad5255fc38ff71b2bb96ea2a0e" + integrity sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ== dependencies: undici-types "~5.25.1" "@types/parse-json@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" - integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.1.tgz#27f7559836ad796cea31acb63163b203756a5b4e" + integrity sha512-3YmXzzPAdOTVljVMkTMBdBEvlOLg2cDQaDhnnhT3nT9uDbnJzjWhKlzb+desT12Y7tGqaN6d+AbozcKzyL36Ng== "@types/qs@*": - version "6.9.8" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.8.tgz#f2a7de3c107b89b441e071d5472e6b726b4adf45" - integrity sha512-u95svzDlTysU5xecFNTgfFG5RUWu1A9P0VzgpcIiGZA9iraHOdSzcxMxQ55DyeRaGCSxQi7LxXDI4rzq/MYfdg== + version "6.9.9" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.9.tgz#66f7b26288f6799d279edf13da7ccd40d2fa9197" + integrity sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg== "@types/range-parser@*": - version "1.2.5" - resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.5.tgz#38bd1733ae299620771bd414837ade2e57757498" - integrity sha512-xrO9OoVPqFuYyR/loIHjnbvvyRZREYKLjxV4+dY6v3FQR3stQ9ZxIGkaclF7YhI9hfjpuTbu14hZEy94qKLtOA== + version "1.2.6" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.6.tgz#7cb33992049fd7340d5b10c0098e104184dfcd2a" + integrity sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA== "@types/retry@0.12.0": version "0.12.0" @@ -1880,57 +1880,57 @@ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== "@types/send@*": - version "0.17.2" - resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.2.tgz#af78a4495e3c2b79bfbdac3955fdd50e03cc98f2" - integrity sha512-aAG6yRf6r0wQ29bkS+x97BIs64ZLxeE/ARwyS6wrldMm3C1MdKwCcnnEwMC1slI8wuxJOpiUH9MioC0A0i+GJw== + version "0.17.3" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.3.tgz#81b2ea5a3a18aad357405af2d643ccbe5a09020b" + integrity sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug== dependencies: "@types/mime" "^1" "@types/node" "*" "@types/serve-index@^1.9.1": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.2.tgz#cb26e775678a8526b73a5d980a147518740aaecd" - integrity sha512-asaEIoc6J+DbBKXtO7p2shWUpKacZOoMBEGBgPG91P8xhO53ohzHWGCs4ScZo5pQMf5ukQzVT9fhX1WzpHihig== + version "1.9.3" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.3.tgz#af9403916eb6fbf7d6ec6f47b2a4c46eb3222cc9" + integrity sha512-4KG+yMEuvDPRrYq5fyVm/I2uqAJSAwZK9VSa+Zf+zUq9/oxSSvy3kkIqyL+jjStv6UCVi8/Aho0NHtB1Fwosrg== dependencies: "@types/express" "*" "@types/serve-static@*", "@types/serve-static@^1.13.10": - version "1.15.3" - resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.3.tgz#2cfacfd1fd4520bbc3e292cca432d5e8e2e3ee61" - integrity sha512-yVRvFsEMrv7s0lGhzrggJjNOSmZCdgCjw9xWrPr/kNNLp6FaDfMC1KaYl3TSJ0c58bECwNBMoQrZJ8hA8E1eFg== + version "1.15.4" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.4.tgz#44b5895a68ca637f06c229119e1c774ca88f81b2" + integrity sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw== dependencies: "@types/http-errors" "*" "@types/mime" "*" "@types/node" "*" "@types/sockjs@^0.3.33": - version "0.3.34" - resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.34.tgz#43e10e549b36d2ba2589278f00f81b5d7ccda167" - integrity sha512-R+n7qBFnm/6jinlteC9DBL5dGiDGjWAvjo4viUanpnc/dG1y7uDoacXPIQ/PQEg1fI912SMHIa014ZjRpvDw4g== + version "0.3.35" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.35.tgz#f4a568c73d2a8071944bd6ffdca0d4e66810cd21" + integrity sha512-tIF57KB+ZvOBpAQwSaACfEu7htponHXaFzP7RfKYgsOS0NoYnn+9+jzp7bbq4fWerizI3dTB4NfAZoyeQKWJLw== dependencies: "@types/node" "*" "@types/webpack-env@^1.16.4": - version "1.18.2" - resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.2.tgz#0264bc30c0c4a073118ce5b26c5ef143da4374df" - integrity sha512-BFqcTHHTrrI8EBmIzNAmLPP3IqtEG9J1IPFWbPeS/F0/TGNmo0pI5svOa7JbMF9vSCXQCvJWT2gxLJNVuf9blw== + version "1.18.3" + resolved "https://registry.yarnpkg.com/@types/webpack-env/-/webpack-env-1.18.3.tgz#e81f769199a5609c751f34fcc6f6095ceac7831f" + integrity sha512-v4CH6FLBCftYGFAswDhzFLjKgucXsOkIf5Mzl8ZZhEtC6oye9whFInNPKszNB9AvX7JEZMtpXxWctih6addP+Q== "@types/ws@^8.5.5": - version "8.5.7" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.7.tgz#1ca585074fe5d2c81dec7a3d451f244a2a6d83cb" - integrity sha512-6UrLjiDUvn40CMrAubXuIVtj2PEfKDffJS7ychvnPU44j+KVeXmdHHTgqcM/dxLUTHxlXHiFM8Skmb8ozGdTnQ== + version "8.5.8" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.5.8.tgz#13efec7bd439d0bdf2af93030804a94f163b1430" + integrity sha512-flUksGIQCnJd6sZ1l5dqCEG/ksaoAg/eUwiLAGTJQcfgvZJKF++Ta4bJA6A5aPSJmsr+xlseHn4KLgVlNnvPTg== dependencies: "@types/node" "*" "@types/yargs-parser@*": - version "21.0.1" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.1.tgz#07773d7160494d56aa882d7531aac7319ea67c3b" - integrity sha512-axdPBuLuEJt0c4yI5OZssC19K2Mq1uKdrfZBzuxLvaztgqUtFYZUNw7lETExPYJR9jdEoIg4mb7RQKRQzOkeGQ== + version "21.0.2" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.2.tgz#7bd04c5da378496ef1695a1008bf8f71847a8b8b" + integrity sha512-5qcvofLPbfjmBfKaLfj/+f+Sbd6pN4zl7w7VSVI5uz7m9QZTuB2aZAa2uo1wHFBNN2x6g/SoTkXmd8mQnQF2Cw== "@types/yargs@^17.0.8": - version "17.0.28" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.28.tgz#d106e4301fbacde3d1796ab27374dd16588ec851" - integrity sha512-N3e3fkS86hNhtk6BEnc0rj3zcehaxx8QWhCROJkqpl5Zaoi7nAic3jH8q94jVD3zu5LGk+PUB6KAiDmimYOEQw== + version "17.0.29" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.29.tgz#06aabc72497b798c643c812a8b561537fea760cf" + integrity sha512-nacjqA3ee9zRF/++a3FUY1suHTFKZeHba2n8WeDw9cCVdmzmHpIxyzOJBcpHvvEmS8E9KqWlSnWHUkOrkhWcvA== dependencies: "@types/yargs-parser" "*" @@ -2211,7 +2211,7 @@ ajv-keywords@^5.1.0: dependencies: fast-deep-equal "^3.1.3" -ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.12.5: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -2333,15 +2333,13 @@ at-least-node@^1.0.0: resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== -babel-loader@^8.2.5: - version "8.3.0" - resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.3.0.tgz#124936e841ba4fe8176786d6ff28add1f134d6a8" - integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q== +babel-loader@^9.1.3: + version "9.1.3" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-9.1.3.tgz#3d0e01b4e69760cc694ee306fe16d358aa1c6f9a" + integrity sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw== dependencies: - find-cache-dir "^3.3.1" - loader-utils "^2.0.0" - make-dir "^3.1.0" - schema-utils "^2.6.5" + find-cache-dir "^4.0.0" + schema-utils "^4.0.0" babel-plugin-polyfill-corejs2@^0.4.6: version "0.4.6" @@ -2353,12 +2351,12 @@ babel-plugin-polyfill-corejs2@^0.4.6: semver "^6.3.1" babel-plugin-polyfill-corejs3@^0.8.5: - version "0.8.5" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.5.tgz#a75fa1b0c3fc5bd6837f9ec465c0f48031b8cab1" - integrity sha512-Q6CdATeAvbScWPNLB8lzSO7fgUVBkQt6zLgNlfyeCr/EQaEQR+bWiBYYPYAFyE528BMjRhL+1QBMOI4jc/c5TA== + version "0.8.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz#25c2d20002da91fe328ff89095c85a391d6856cf" + integrity sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ== dependencies: "@babel/helper-define-polyfill-provider" "^0.4.3" - core-js-compat "^3.32.2" + core-js-compat "^3.33.1" babel-plugin-polyfill-regenerator@^0.5.3: version "0.5.3" @@ -2558,12 +2556,13 @@ cacache@^15.0.5: unique-filename "^1.1.1" call-bind@^1.0.0, call-bind@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" - integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + version "1.0.5" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513" + integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ== dependencies: - function-bind "^1.1.1" - get-intrinsic "^1.0.2" + function-bind "^1.1.2" + get-intrinsic "^1.2.1" + set-function-length "^1.1.1" callsites@^3.0.0: version "3.1.0" @@ -2591,9 +2590,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001541: - version "1.0.30001549" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz#7d1a3dce7ea78c06ed72c32c2743ea364b3615aa" - integrity sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA== + version "1.0.30001554" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a" + integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" @@ -2779,6 +2778,11 @@ commander@^8.3.0: resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== +common-path-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0" + integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w== + commondir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" @@ -2869,17 +2873,17 @@ cookie@0.5.0: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b" integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== -core-js-compat@^3.31.0, core-js-compat@^3.32.2: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.0.tgz#24aa230b228406450b2277b7c8bfebae932df966" - integrity sha512-0w4LcLXsVEuNkIqwjjf9rjCoPhK8uqA4tMRh4Ge26vfLtUutshn+aRJU21I9LCJlh2QQHfisNToLjw1XEJLTWw== +core-js-compat@^3.31.0, core-js-compat@^3.33.1: + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" + integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== dependencies: browserslist "^4.22.1" core-js@^3.23.0: - version "3.33.0" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.0.tgz#70366dbf737134761edb017990cf5ce6c6369c40" - integrity sha512-HoZr92+ZjFEKar5HS6MC776gYslNOKHt75mEBKWKnPeFDpZ6nH5OeF3S6HFT1mUAUZKrzkez05VboaX8myjSuw== + version "3.33.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.1.tgz#ef3766cfa382482d0a2c2bc5cb52c6d88805da52" + integrity sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q== core-util-is@~1.0.0: version "1.0.3" @@ -2907,9 +2911,9 @@ cross-spawn@^7.0.3: which "^2.0.1" crypto-js@^4.0.0: - version "4.1.1" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.1.1.tgz#9e485bcf03521041bd85844786b83fb7619736cf" - integrity sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw== + version "4.2.0" + resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== css-declaration-sorter@^6.3.1: version "6.4.1" @@ -3307,7 +3311,7 @@ default-gateway@^6.0.3: dependencies: execa "^5.0.0" -define-data-property@^1.0.1: +define-data-property@^1.0.1, define-data-property@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3" integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ== @@ -3503,9 +3507,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.554" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz#04e09c2ee31dc0f1546174033809b54cc372740b" - integrity sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ== + version "1.4.566" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.566.tgz#5c5ba1d2dc895f4887043f0cc7e61798c7e5919a" + integrity sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg== emoji-regex@^8.0.0: version "8.0.0" @@ -3936,6 +3940,14 @@ find-cache-dir@^3.3.1: make-dir "^3.0.2" pkg-dir "^4.1.0" +find-cache-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-4.0.0.tgz#a30ee0448f81a3990708f6453633c733e2f6eec2" + integrity sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg== + dependencies: + common-path-prefix "^3.0.0" + pkg-dir "^7.0.0" + find-up@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" @@ -3951,6 +3963,19 @@ find-up@^4.0.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-6.3.0.tgz#2abab3d3280b2dc7ac10199ef324c4e002c8c790" + integrity sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw== + dependencies: + locate-path "^7.1.0" + path-exists "^5.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + follow-redirects@^1.0.0: version "1.15.3" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a" @@ -4007,7 +4032,7 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -function-bind@^1.1.1: +function-bind@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== @@ -4027,15 +4052,15 @@ get-assigned-identifiers@^1.1.0: resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ== -get-intrinsic@^1.0.2, get-intrinsic@^1.1.1, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" - integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== +get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b" + integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA== dependencies: - function-bind "^1.1.1" - has "^1.0.3" + function-bind "^1.1.2" has-proto "^1.0.1" has-symbols "^1.0.3" + hasown "^2.0.0" get-port@^3.1.0: version "3.2.0" @@ -4160,11 +4185,11 @@ has-flag@^4.0.0: integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-property-descriptors@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz#610708600606d36961ed04c196193b6a607fa861" - integrity sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ== + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340" + integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg== dependencies: - get-intrinsic "^1.1.1" + get-intrinsic "^1.2.2" has-proto@^1.0.1: version "1.0.1" @@ -4183,11 +4208,18 @@ has-tostringtag@^1.0.0: dependencies: has-symbols "^1.0.2" -has@^1.0.1, has@^1.0.3: +has@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6" integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ== +hasown@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c" + integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA== + dependencies: + function-bind "^1.1.2" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -4387,13 +4419,13 @@ interpret@^2.2.0: integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== intl-messageformat@^10.2.5: - version "10.5.3" - resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.3.tgz#db0779d4a1988faa2977d76574489b7a25f0d5d0" - integrity sha512-TzKn1uhJBMyuKTO4zUX47SU+d66fu1W9tVzIiZrQ6hBqQQeYscBMIzKL/qEXnFbJrH9uU5VV3+T5fWib4SIcKA== + version "10.5.4" + resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.4.tgz#7b212b083f1b354d7e282518e78057e025134af9" + integrity sha512-z+hrFdiJ/heRYlzegrdFYqU1m/KOMOVMqNilIArj+PbsuU8TNE7v4TWdQgSoxlxbT4AcZH3Op3/Fu15QTp+W1w== dependencies: "@formatjs/ecma402-abstract" "1.17.2" "@formatjs/fast-memoize" "2.2.0" - "@formatjs/icu-messageformat-parser" "2.6.2" + "@formatjs/icu-messageformat-parser" "2.7.0" tslib "^2.4.0" ipaddr.js@1.9.1: @@ -4427,11 +4459,11 @@ is-binary-path@~2.1.0: binary-extensions "^2.0.0" is-core-module@^2.13.0: - version "2.13.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.0.tgz#bb52aa6e2cbd49a30c2ba68c42bf3435ba6072db" - integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== + version "2.13.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384" + integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw== dependencies: - has "^1.0.3" + hasown "^2.0.0" is-date-object@^1.0.1: version "1.0.5" @@ -4774,6 +4806,13 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-7.2.0.tgz#69cb1779bd90b35ab1e771e1f2f89a202c2a8a8a" + integrity sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA== + dependencies: + p-locate "^6.0.0" + lodash-es@4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" @@ -4845,7 +4884,7 @@ magic-string@0.25.1: dependencies: sourcemap-codec "^1.4.1" -make-dir@^3.0.2, make-dir@^3.1.0: +make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== @@ -5133,9 +5172,9 @@ object-assign@^4.0.1: integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== object-inspect@^1.6.0, object-inspect@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.0.tgz#42695d3879e1cd5bda6df5062164d80c996e23e2" - integrity sha512-HQ4J+ic8hKrgIt3mqk6cVOVrW2ozL4KdvHlqpBv9vDYWx9ysAgENAdvy4FoGF+KFdhR7nQTNm5J0ctAeOwn+3g== + version "1.13.1" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2" + integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ== object-is@^1.0.1: version "1.1.5" @@ -5221,6 +5260,13 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" +p-limit@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-4.0.0.tgz#914af6544ed32bfa54670b061cafcbd04984b644" + integrity sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ== + dependencies: + yocto-queue "^1.0.0" + p-locate@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" @@ -5235,6 +5281,13 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-6.0.0.tgz#3da9a49d4934b901089dca3302fa65dc5a05c04f" + integrity sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw== + dependencies: + p-limit "^4.0.0" + p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -5314,6 +5367,11 @@ path-exists@^4.0.0: resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== +path-exists@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-5.0.0.tgz#a6aad9489200b21fab31e49cf09277e5116fb9e7" + integrity sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ== + path-is-absolute@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -5393,6 +5451,13 @@ pkg-dir@^4.1.0, pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pkg-dir@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-7.0.0.tgz#8f0c08d6df4476756c5ff29b3282d0bab7517d11" + integrity sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA== + dependencies: + find-up "^6.3.0" + pkg-up@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/pkg-up/-/pkg-up-3.1.0.tgz#100ec235cc150e4fd42519412596a28512a0def5" @@ -6251,15 +6316,6 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -schema-utils@^2.6.5: - version "2.7.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" - integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== - dependencies: - "@types/json-schema" "^7.0.5" - ajv "^6.12.4" - ajv-keywords "^3.5.2" - schema-utils@^3.0.0, schema-utils@^3.1.1, schema-utils@^3.2.0: version "3.3.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" @@ -6377,6 +6433,16 @@ serve-static@1.15.0: parseurl "~1.3.3" send "0.18.0" +set-function-length@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed" + integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ== + dependencies: + define-data-property "^1.1.1" + get-intrinsic "^1.2.1" + gopd "^1.0.1" + has-property-descriptors "^1.0.0" + set-function-name@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.1.tgz#12ce38b7954310b9f61faa12701620a0c882793a" @@ -6784,9 +6850,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.16.8, terser@^5.3.4: - version "5.21.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.21.0.tgz#d2b27e92b5e56650bc83b6defa00a110f0b124b2" - integrity sha512-WtnFKrxu9kaoXuiZFSGrcAvvBqAdmKx0SFNmVNYdJamMu9yyN3I/QF0FbH4QcqJQ+y1CJnzxGIKH0cSj+FGYRw== + version "5.22.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" + integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -6854,9 +6920,9 @@ toidentifier@1.0.1: integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tom-select@^2.1.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.2.tgz#8e5f9296e6d80254feccb57f0986bd6c44d126e2" - integrity sha512-igGah1yY6yhrnN2h/Ky8I5muw/nE/YQxIsEZoYu5qaA4bsRibvKto3s8QZZosKpOd0uO8fNYhRfAwgHB4IAYew== + version "2.2.3" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.3.tgz#858acca2dcec1dbe1a94a3f4c944384e166a4f40" + integrity sha512-VMhRdFlugLGdnNZsP5r8sHKtyvWekIbtr53uoKONMzM+JSBWgy5pV9F+iZ2LTEbzIQI0efIwZ7I6h+wzZoM/zQ== dependencies: "@orchidjs/sifter" "^1.0.3" "@orchidjs/unicode-variants" "^1.0.4" @@ -7200,11 +7266,12 @@ webpack-dev-server@^4.8.0: ws "^8.13.0" webpack-merge@^5.7.3: - version "5.9.0" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.9.0.tgz#dc160a1c4cf512ceca515cc231669e9ddb133826" - integrity sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg== + version "5.10.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" + integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== dependencies: clone-deep "^4.0.1" + flat "^5.0.2" wildcard "^2.0.0" webpack-notifier@^1.15.0: @@ -7379,3 +7446,8 @@ yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +yocto-queue@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251" + integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g== From 294f7cf005b87cb59210ad6f14a5919803630dab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 25 Oct 2023 17:27:37 +0200 Subject: [PATCH 07/21] Fixed some deprecations related to missing return types --- src/Doctrine/Functions/Field2.php | 4 ++-- src/Entity/OAuthToken.php | 6 +++--- src/EventSubscriber/SwitchUserEventSubscriber.php | 2 +- src/Form/InfoProviderSystem/ProviderSelectType.php | 2 +- src/Form/PasswordTypeExtension.php | 2 +- src/Form/ProjectSystem/ProjectAddPartsType.php | 4 ++-- src/Serializer/AttachmentNormalizer.php | 2 +- src/Serializer/BigNumberNormalizer.php | 4 ++-- src/Services/SnakeCasePropertyAccessExtractor.php | 4 ++-- .../Constraints/UniqueObjectCollectionValidator.php | 2 +- .../Constraints/ValidGoogleAuthCodeValidatorTest.php | 9 ++++----- 11 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/Doctrine/Functions/Field2.php b/src/Doctrine/Functions/Field2.php index dc12b294..2e11a855 100644 --- a/src/Doctrine/Functions/Field2.php +++ b/src/Doctrine/Functions/Field2.php @@ -36,7 +36,7 @@ class Field2 extends FunctionNode private $values = []; - public function parse(\Doctrine\ORM\Query\Parser $parser) + public function parse(\Doctrine\ORM\Query\Parser $parser): void { $parser->match(Lexer::T_IDENTIFIER); $parser->match(Lexer::T_OPEN_PARENTHESIS); @@ -58,7 +58,7 @@ class Field2 extends FunctionNode $parser->match(Lexer::T_CLOSE_PARENTHESIS); } - public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) + public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker): string { $query = 'FIELD2('; diff --git a/src/Entity/OAuthToken.php b/src/Entity/OAuthToken.php index b1534a4d..3924e1a8 100644 --- a/src/Entity/OAuthToken.php +++ b/src/Entity/OAuthToken.php @@ -135,17 +135,17 @@ class OAuthToken extends AbstractNamedDBElement implements AccessTokenInterface $this->expires_at = self::unixTimestampToDatetime($accessToken->getExpires() ?? time() + self::DEFAULT_EXPIRATION_TIME); } - public function getExpires() + public function getExpires(): ?int { return $this->expires_at->getTimestamp(); } - public function hasExpired() + public function hasExpired(): bool { return $this->isExpired(); } - public function getValues() + public function getValues(): array { return []; } diff --git a/src/EventSubscriber/SwitchUserEventSubscriber.php b/src/EventSubscriber/SwitchUserEventSubscriber.php index a7f2e39c..b68f6b4f 100644 --- a/src/EventSubscriber/SwitchUserEventSubscriber.php +++ b/src/EventSubscriber/SwitchUserEventSubscriber.php @@ -38,7 +38,7 @@ class SwitchUserEventSubscriber implements EventSubscriberInterface { } - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ 'security.switch_user' => 'onSwitchUser', diff --git a/src/Form/InfoProviderSystem/ProviderSelectType.php b/src/Form/InfoProviderSystem/ProviderSelectType.php index 6ebe663d..26ff6be9 100644 --- a/src/Form/InfoProviderSystem/ProviderSelectType.php +++ b/src/Form/InfoProviderSystem/ProviderSelectType.php @@ -43,7 +43,7 @@ class ProviderSelectType extends AbstractType return ChoiceType::class; } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'choices' => $this->providerRegistry->getActiveProviders(), diff --git a/src/Form/PasswordTypeExtension.php b/src/Form/PasswordTypeExtension.php index f97eeb8e..a911bf90 100644 --- a/src/Form/PasswordTypeExtension.php +++ b/src/Form/PasswordTypeExtension.php @@ -46,7 +46,7 @@ class PasswordTypeExtension extends AbstractTypeExtension $resolver->setAllowedTypes('password_estimator', 'bool'); } - public function finishView(FormView $view, FormInterface $form, array $options) + public function finishView(FormView $view, FormInterface $form, array $options): void { $view->vars['password_estimator'] = $options['password_estimator']; } diff --git a/src/Form/ProjectSystem/ProjectAddPartsType.php b/src/Form/ProjectSystem/ProjectAddPartsType.php index f89f3567..ddcdc33a 100644 --- a/src/Form/ProjectSystem/ProjectAddPartsType.php +++ b/src/Form/ProjectSystem/ProjectAddPartsType.php @@ -35,7 +35,7 @@ use Symfony\Component\Validator\Constraints\NotNull; class ProjectAddPartsType extends AbstractType { - public function buildForm(FormBuilderInterface $builder, array $options) + public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('project', StructuralEntityType::class, [ 'class' => Project::class, @@ -73,7 +73,7 @@ class ProjectAddPartsType extends AbstractType }); } - public function configureOptions(OptionsResolver $resolver) + public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'project' => null, diff --git a/src/Serializer/AttachmentNormalizer.php b/src/Serializer/AttachmentNormalizer.php index 7911a9c3..c71e035d 100644 --- a/src/Serializer/AttachmentNormalizer.php +++ b/src/Serializer/AttachmentNormalizer.php @@ -40,7 +40,7 @@ class AttachmentNormalizer implements NormalizerInterface } - public function normalize(mixed $object, string $format = null, array $context = []) + public function normalize(mixed $object, string $format = null, array $context = []): array|null { if (!$object instanceof Attachment) { throw new \InvalidArgumentException('This normalizer only supports Attachment objects!'); diff --git a/src/Serializer/BigNumberNormalizer.php b/src/Serializer/BigNumberNormalizer.php index 80bb98d7..8ef06d67 100644 --- a/src/Serializer/BigNumberNormalizer.php +++ b/src/Serializer/BigNumberNormalizer.php @@ -58,7 +58,7 @@ class BigNumberNormalizer implements NormalizerInterface, DenormalizerInterface ]; } - public function denormalize(mixed $data, string $type, string $format = null, array $context = []) + public function denormalize(mixed $data, string $type, string $format = null, array $context = []): BigNumber|null { if (!is_a($type, BigNumber::class, true)) { throw new \InvalidArgumentException('This normalizer only supports BigNumber objects!'); @@ -67,7 +67,7 @@ class BigNumberNormalizer implements NormalizerInterface, DenormalizerInterface return $type::of($data); } - public function supportsDenormalization(mixed $data, string $type, string $format = null) + public function supportsDenormalization(mixed $data, string $type, string $format = null, array $context = []): bool { //data must be a string or a number (int, float, etc.) and the type must be BigNumber or BigDecimal return (is_string($data) || is_numeric($data)) && (is_subclass_of($type, BigNumber::class)); diff --git a/src/Services/SnakeCasePropertyAccessExtractor.php b/src/Services/SnakeCasePropertyAccessExtractor.php index bfe82c63..0eaed204 100644 --- a/src/Services/SnakeCasePropertyAccessExtractor.php +++ b/src/Services/SnakeCasePropertyAccessExtractor.php @@ -41,7 +41,7 @@ class SnakeCasePropertyAccessExtractor implements PropertyAccessExtractorInterfa //$this->reflectionExtractor = new ReflectionExtractor(); } - public function isReadable(string $class, string $property, array $context = []) + public function isReadable(string $class, string $property, array $context = []): ?bool { //Null means skip this extractor return null; @@ -56,7 +56,7 @@ class SnakeCasePropertyAccessExtractor implements PropertyAccessExtractorInterfa } - public function isWritable(string $class, string $property, array $context = []) + public function isWritable(string $class, string $property, array $context = []): ?bool { //Check writeablity using a camelized property name $isWriteable = $this->reflectionExtractor->isWritable($class, $this->camelize($property), $context); diff --git a/src/Validator/Constraints/UniqueObjectCollectionValidator.php b/src/Validator/Constraints/UniqueObjectCollectionValidator.php index 5522ca19..eaac097d 100644 --- a/src/Validator/Constraints/UniqueObjectCollectionValidator.php +++ b/src/Validator/Constraints/UniqueObjectCollectionValidator.php @@ -32,7 +32,7 @@ use Symfony\Component\Validator\Exception\UnexpectedValueException; class UniqueObjectCollectionValidator extends ConstraintValidator { - public function validate(mixed $value, Constraint $constraint) + public function validate(mixed $value, Constraint $constraint): void { if (!$constraint instanceof UniqueObjectCollection) { throw new UnexpectedTypeException($constraint, UniqueObjectCollection::class); diff --git a/tests/Validator/Constraints/ValidGoogleAuthCodeValidatorTest.php b/tests/Validator/Constraints/ValidGoogleAuthCodeValidatorTest.php index 6b3887e4..5ba98a47 100644 --- a/tests/Validator/Constraints/ValidGoogleAuthCodeValidatorTest.php +++ b/tests/Validator/Constraints/ValidGoogleAuthCodeValidatorTest.php @@ -28,22 +28,21 @@ use Scheb\TwoFactorBundle\Model\Google\TwoFactorInterface; use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Google\GoogleAuthenticatorInterface; use Symfony\Bundle\SecurityBundle\Security; use Symfony\Component\Security\Core\User\UserInterface; +use Symfony\Component\Validator\ConstraintValidator; +use Symfony\Component\Validator\ConstraintValidatorInterface; use Symfony\Component\Validator\Test\ConstraintValidatorTestCase; class ValidGoogleAuthCodeValidatorTest extends ConstraintValidatorTestCase { - protected function createValidator() + protected function createValidator(): ConstraintValidatorInterface { $googleAuth = new class implements GoogleAuthenticatorInterface { public function checkCode(TwoFactorInterface $user, string $code): bool { - if ($code === '123456') { - return true; - } - return false; + return $code === '123456'; } public function getQRContent(TwoFactorInterface $user): string From d0a5b4dcd7d823f21ecaf76c1e8b4e0e6f6f3384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 25 Oct 2023 17:30:06 +0200 Subject: [PATCH 08/21] Bumped version to 1.8.2 --- VERSION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERSION b/VERSION index a8fdfda1..53adb84c 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.1 +1.8.2 From 717a9fb0a31417bcf27fc1cd25b9f74cc4f252fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Wed, 25 Oct 2023 20:40:41 +0200 Subject: [PATCH 09/21] Fixed API Platform deprecations --- VERSION | 2 +- composer.json | 1 + composer.lock | 2 +- config/packages/api_platform.yaml | 2 ++ src/ApiResource/PartDBInfo.php | 3 ++- src/Entity/Attachments/AttachmentType.php | 3 ++- src/Entity/Parts/Category.php | 7 +++++-- src/Entity/Parts/Footprint.php | 7 +++++-- src/Entity/Parts/Manufacturer.php | 7 +++++-- src/Entity/Parts/MeasurementUnit.php | 7 +++++-- src/Entity/Parts/StorageLocation.php | 7 +++++-- src/Entity/Parts/Supplier.php | 7 +++++-- src/Entity/PriceInformations/Currency.php | 7 +++++-- src/Entity/PriceInformations/Orderdetail.php | 7 +++++-- src/Entity/ProjectSystem/Project.php | 7 +++++-- src/Entity/ProjectSystem/ProjectBOMEntry.php | 7 +++++-- src/Entity/UserSystem/ApiToken.php | 5 ++++- src/Entity/UserSystem/User.php | 13 +++++++++---- 18 files changed, 72 insertions(+), 29 deletions(-) diff --git a/VERSION b/VERSION index 53adb84c..b57588e5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.8.2 +1.9.0-dev diff --git a/composer.json b/composer.json index a16706b9..a47bd12a 100644 --- a/composer.json +++ b/composer.json @@ -70,6 +70,7 @@ "symfony/runtime": "6.3.*", "symfony/security-bundle": "6.3.*", "symfony/serializer": "6.3.*", + "symfony/string": "6.3.*", "symfony/translation": "6.3.*", "symfony/twig-bundle": "6.3.*", "symfony/ux-translator": "^2.10", diff --git a/composer.lock b/composer.lock index 4facb6fc..f8a2abeb 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a3d850bada24e7349d2181693a50c637", + "content-hash": "258be26a5e5d25abc80062849a2a948e", "packages": [ { "name": "api-platform/core", diff --git a/config/packages/api_platform.yaml b/config/packages/api_platform.yaml index b53cc7e0..9bc2168c 100644 --- a/config/packages/api_platform.yaml +++ b/config/packages/api_platform.yaml @@ -8,6 +8,8 @@ api_platform: # eager_loading: # max_joins: 100 + keep_legacy_inflector: false + swagger: api_keys: # overridden in OpenApiFactoryDecorator diff --git a/src/ApiResource/PartDBInfo.php b/src/ApiResource/PartDBInfo.php index 9a06f262..25aed05e 100644 --- a/src/ApiResource/PartDBInfo.php +++ b/src/ApiResource/PartDBInfo.php @@ -26,6 +26,7 @@ namespace App\ApiResource; use ApiPlatform\Metadata\ApiFilter; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\State\PartDBInfoProvider; @@ -35,7 +36,7 @@ use App\State\PartDBInfoProvider; #[ApiResource( uriTemplate: '/info.{_format}', description: 'Basic information about Part-DB like version, title, etc.', - operations: [new Get(openapiContext: ['summary' => 'Get basic information about the installed Part-DB instance.'])], + operations: [new Get(openapi: new Operation(summary: 'Get basic information about the installed Part-DB instance.'))], provider: PartDBInfoProvider::class )] #[ApiFilter(PropertyFilter::class)] diff --git a/src/Entity/Attachments/AttachmentType.php b/src/Entity/Attachments/AttachmentType.php index d4cc7b25..241f3d18 100644 --- a/src/Entity/Attachments/AttachmentType.php +++ b/src/Entity/Attachments/AttachmentType.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Parts\Footprint; @@ -70,7 +71,7 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/attachment_types/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of an attachment type.'], + new GetCollection(openapi: new Operation(summary: 'Retrieves the children elements of an attachment type.'), security: 'is_granted("@attachment_types.read")') ], uriVariables: [ diff --git a/src/Entity/Parts/Category.php b/src/Entity/Parts/Category.php index b1dc8c97..95e2295c 100644 --- a/src/Entity/Parts/Category.php +++ b/src/Entity/Parts/Category.php @@ -34,6 +34,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -72,8 +73,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/categories/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a category.'], - security: 'is_granted("@categories.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a category.'), + security: 'is_granted("@categories.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Category::class) diff --git a/src/Entity/Parts/Footprint.php b/src/Entity/Parts/Footprint.php index 2cdf9fba..c3f70087 100644 --- a/src/Entity/Parts/Footprint.php +++ b/src/Entity/Parts/Footprint.php @@ -34,6 +34,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -72,8 +73,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/footprints/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a footprint.'], - security: 'is_granted("@footprints.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a footprint.'), + security: 'is_granted("@footprints.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Footprint::class) diff --git a/src/Entity/Parts/Manufacturer.php b/src/Entity/Parts/Manufacturer.php index 14b31409..1a5db9ba 100644 --- a/src/Entity/Parts/Manufacturer.php +++ b/src/Entity/Parts/Manufacturer.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -71,8 +72,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/manufacturers/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a manufacturer.'], - security: 'is_granted("@manufacturers.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a manufacturer.'), + security: 'is_granted("@manufacturers.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Manufacturer::class) diff --git a/src/Entity/Parts/MeasurementUnit.php b/src/Entity/Parts/MeasurementUnit.php index f9f45ca5..299c230d 100644 --- a/src/Entity/Parts/MeasurementUnit.php +++ b/src/Entity/Parts/MeasurementUnit.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -75,8 +76,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/footprints/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a MeasurementUnit.'], - security: 'is_granted("@measurement_units.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a MeasurementUnit.'), + security: 'is_granted("@measurement_units.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: MeasurementUnit::class) diff --git a/src/Entity/Parts/StorageLocation.php b/src/Entity/Parts/StorageLocation.php index 3a7847d9..564f30ce 100644 --- a/src/Entity/Parts/StorageLocation.php +++ b/src/Entity/Parts/StorageLocation.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -71,8 +72,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/storage_locations/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a storage location.'], - security: 'is_granted("@storelocations.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a storage location.'), + security: 'is_granted("@storelocations.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Manufacturer::class) diff --git a/src/Entity/Parts/Supplier.php b/src/Entity/Parts/Supplier.php index 83289439..5103a565 100644 --- a/src/Entity/Parts/Supplier.php +++ b/src/Entity/Parts/Supplier.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -75,8 +76,10 @@ use Symfony\Component\Validator\Constraints as Assert; )] #[ApiResource( uriTemplate: '/suppliers/{id}/children.{_format}', - operations: [new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a supplier'], - security: 'is_granted("@manufacturers.read")')], + operations: [new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a supplier.'), + security: 'is_granted("@manufacturers.read")' + )], uriVariables: [ 'id' => new Link(fromClass: Supplier::class, fromProperty: 'children') ], diff --git a/src/Entity/PriceInformations/Currency.php b/src/Entity/PriceInformations/Currency.php index a108feeb..2e95dc09 100644 --- a/src/Entity/PriceInformations/Currency.php +++ b/src/Entity/PriceInformations/Currency.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -75,8 +76,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/currencies/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a currency.'], - security: 'is_granted("@currencies.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a currency.'), + security: 'is_granted("@currencies.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Currency::class) diff --git a/src/Entity/PriceInformations/Orderdetail.php b/src/Entity/PriceInformations/Orderdetail.php index 62426597..6fed2d75 100644 --- a/src/Entity/PriceInformations/Orderdetail.php +++ b/src/Entity/PriceInformations/Orderdetail.php @@ -34,6 +34,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use Doctrine\DBAL\Types\Types; @@ -73,8 +74,10 @@ use Symfony\Component\Validator\Constraints as Assert; #[ApiResource( uriTemplate: '/parts/{id}/orderdetails.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the orderdetails of a part.'], - security: 'is_granted("@parts.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the orderdetails of a part.'), + security: 'is_granted("@parts.read")' + ) ], uriVariables: [ 'id' => new Link(toProperty: 'part', fromClass: Part::class) diff --git a/src/Entity/ProjectSystem/Project.php b/src/Entity/ProjectSystem/Project.php index 81b1fc09..0859c7f1 100644 --- a/src/Entity/ProjectSystem/Project.php +++ b/src/Entity/ProjectSystem/Project.php @@ -33,6 +33,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -74,8 +75,10 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; #[ApiResource( uriTemplate: '/projects/{id}/children.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the children elements of a project.'], - security: 'is_granted("@projects.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the children elements of a project.'), + security: 'is_granted("@projects.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'children', fromClass: Project::class) diff --git a/src/Entity/ProjectSystem/ProjectBOMEntry.php b/src/Entity/ProjectSystem/ProjectBOMEntry.php index 8ecaa1ed..b45e1af0 100644 --- a/src/Entity/ProjectSystem/ProjectBOMEntry.php +++ b/src/Entity/ProjectSystem/ProjectBOMEntry.php @@ -32,6 +32,7 @@ use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Link; use ApiPlatform\Metadata\Patch; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Validator\UniqueValidatableInterface; @@ -69,8 +70,10 @@ use Symfony\Component\Validator\Context\ExecutionContextInterface; #[ApiResource( uriTemplate: '/projects/{id}/bom.{_format}', operations: [ - new GetCollection(openapiContext: ['summary' => 'Retrieves the BOM entries of the given project.'], - security: 'is_granted("@projects.read")') + new GetCollection( + openapi: new Operation(summary: 'Retrieves the BOM entries of the given project.'), + security: 'is_granted("@projects.read")' + ) ], uriVariables: [ 'id' => new Link(fromProperty: 'bom_entries', fromClass: Project::class) diff --git a/src/Entity/UserSystem/ApiToken.php b/src/Entity/UserSystem/ApiToken.php index 88a0ad84..95919e1d 100644 --- a/src/Entity/UserSystem/ApiToken.php +++ b/src/Entity/UserSystem/ApiToken.php @@ -26,6 +26,7 @@ namespace App\Entity\UserSystem; use ApiPlatform\Metadata\ApiFilter; use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\Entity\Base\AbstractNamedDBElement; use App\Entity\Base\TimestampTrait; @@ -46,7 +47,9 @@ use Symfony\Component\Validator\Constraints\NotBlank; #[ApiResource( uriTemplate: '/tokens/current.{_format}', description: 'A token used to authenticate API requests.', - operations: [new Get(openapiContext: ['summary' => 'Get information about the API token that is currently used.'])], + operations: [new Get( + openapi: new Operation(summary: 'Get information about the API token that is currently used.'), + )], normalizationContext: ['groups' => ['token:read', 'api:basic:read'], 'openapi_definition_name' => 'Read'], provider: CurrentApiTokenProvider::class, )] diff --git a/src/Entity/UserSystem/User.php b/src/Entity/UserSystem/User.php index a6caaa0f..2ee96406 100644 --- a/src/Entity/UserSystem/User.php +++ b/src/Entity/UserSystem/User.php @@ -31,6 +31,7 @@ use ApiPlatform\Metadata\ApiResource; use ApiPlatform\Metadata\Get; use ApiPlatform\Metadata\GetCollection; use ApiPlatform\Metadata\Post; +use ApiPlatform\OpenApi\Model\Operation; use ApiPlatform\Serializer\Filter\PropertyFilter; use App\ApiPlatform\Filter\LikeFilter; use App\Entity\Attachments\Attachment; @@ -86,10 +87,14 @@ use Jbtronics\TFAWebauthn\Model\TwoFactorInterface as WebauthnTwoFactorInterface #[ApiResource( shortName: 'User', operations: [ - new Get(openapiContext: ['summary' => 'Get a specific user.'], - security: 'is_granted("read", object)'), - new GetCollection(openapiContext: ['summary' => 'Get all users defined in the system.'], - security: 'is_granted("@users.read")'), + new Get( + openapi: new Operation(summary: 'Get information about the current user.'), + security: 'is_granted("read", object)' + ), + new GetCollection( + openapi: new Operation(summary: 'Get all users defined in the system.'), + security: 'is_granted("@users.read")' + ), ], normalizationContext: ['groups' => ['user:read'], 'openapi_definition_name' => 'Read'], )] From 783a00ca2f8cee46b83bfe3073c256ad86c156c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 26 Oct 2023 17:41:26 +0200 Subject: [PATCH 10/21] Added test for price related quantity in DTOToEntityConverter --- tests/Services/InfoProviderSystem/DTOtoEntityConverterTest.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/Services/InfoProviderSystem/DTOtoEntityConverterTest.php b/tests/Services/InfoProviderSystem/DTOtoEntityConverterTest.php index d9544145..5a9002c3 100644 --- a/tests/Services/InfoProviderSystem/DTOtoEntityConverterTest.php +++ b/tests/Services/InfoProviderSystem/DTOtoEntityConverterTest.php @@ -70,11 +70,13 @@ class DTOtoEntityConverterTest extends WebTestCase price: "10.0", currency_iso_code: 'CNY', includes_tax: true, + price_related_quantity: 10.0, ); $entity = $this->service->convertPrice($dto); $this->assertEquals($dto->minimum_discount_amount, $entity->getMinDiscountQuantity()); $this->assertEquals((float) $dto->price, (float) (string) $entity->getPrice()); + $this->assertEquals($dto->price_related_quantity, $entity->getPriceRelatedQuantity()); //For non-base currencies, a new currency entity is created $currency = $entity->getCurrency(); From cd7013f776909b18bd10f10a35dbb06c341fb2ce Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 26 Oct 2023 17:44:42 +0200 Subject: [PATCH 11/21] Bump actions/setup-node from 3 to 4 (#420) Bumps [actions/setup-node](https://github.com/actions/setup-node) from 3 to 4. - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/setup-node dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/assets_artifact_build.yml | 2 +- .github/workflows/tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/assets_artifact_build.yml b/.github/workflows/assets_artifact_build.yml index 89e6bfd6..80ce11e6 100644 --- a/.github/workflows/assets_artifact_build.yml +++ b/.github/workflows/assets_artifact_build.yml @@ -57,7 +57,7 @@ jobs: ${{ runner.os }}-yarn- - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '18' diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index bd8d335d..a22d07a6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -87,7 +87,7 @@ jobs: run: composer install --prefer-dist --no-progress - name: Setup node - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: '18' From 563edb17319efb760e9f510b9b8c2fecc9b591df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 26 Oct 2023 17:55:03 +0200 Subject: [PATCH 12/21] Added ipn to possible columns in project BOM view This fixes issue #418 --- src/DataTables/ProjectBomEntriesDataTable.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/DataTables/ProjectBomEntriesDataTable.php b/src/DataTables/ProjectBomEntriesDataTable.php index 4586d2f7..5a706146 100644 --- a/src/DataTables/ProjectBomEntriesDataTable.php +++ b/src/DataTables/ProjectBomEntriesDataTable.php @@ -100,7 +100,16 @@ class ProjectBomEntriesDataTable implements DataTableTypeInterface throw new \Exception('This should never happen!'); }, ]) - + ->add('ipn', TextColumn::class, [ + 'label' => $this->translator->trans('part.table.ipn'), + 'orderField' => 'part.ipn', + 'visible' => false, + 'render' => function ($value, ProjectBOMEntry $context) { + if($context->getPart() instanceof Part) { + return $context->getPart()->getIpn(); + } + } + ]) ->add('description', MarkdownColumn::class, [ 'label' => $this->translator->trans('part.table.description'), 'data' => function (ProjectBOMEntry $context) { From bdcd51d533bfb46d54d0dbd7b36130e1621165af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 26 Oct 2023 22:23:43 +0200 Subject: [PATCH 13/21] Refactored barcode scan functions This is preparatory work for issue #373 --- src/Controller/ScanController.php | 26 +++- .../Barcodes/BarcodeRedirector.php | 23 ++- ...deNormalizer.php => BarcodeScanHelper.php} | 82 +++++++++-- .../Barcodes/BarcodeScanResult.php | 39 +++++ .../Barcodes/BarcodeSourceType.php | 33 +++++ .../Barcodes/BarcodeNormalizerTest.php | 115 --------------- .../Barcodes/BarcodeRedirectorTest.php | 30 ++-- .../Barcodes/BarcodeScanHelperTest.php | 136 ++++++++++++++++++ 8 files changed, 322 insertions(+), 162 deletions(-) rename src/Services/LabelSystem/Barcodes/{BarcodeNormalizer.php => BarcodeScanHelper.php} (53%) create mode 100644 src/Services/LabelSystem/Barcodes/BarcodeScanResult.php create mode 100644 src/Services/LabelSystem/Barcodes/BarcodeSourceType.php delete mode 100644 tests/Services/LabelSystem/Barcodes/BarcodeNormalizerTest.php create mode 100644 tests/Services/LabelSystem/Barcodes/BarcodeScanHelperTest.php diff --git a/src/Controller/ScanController.php b/src/Controller/ScanController.php index b261f3fd..311b19f4 100644 --- a/src/Controller/ScanController.php +++ b/src/Controller/ScanController.php @@ -42,8 +42,10 @@ declare(strict_types=1); namespace App\Controller; use App\Form\LabelSystem\ScanDialogType; -use App\Services\LabelSystem\Barcodes\BarcodeNormalizer; +use App\Services\LabelSystem\Barcodes\BarcodeScanHelper; use App\Services\LabelSystem\Barcodes\BarcodeRedirector; +use App\Services\LabelSystem\Barcodes\BarcodeScanResult; +use App\Services\LabelSystem\Barcodes\BarcodeSourceType; use Doctrine\ORM\EntityNotFoundException; use InvalidArgumentException; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; @@ -55,7 +57,7 @@ use Symfony\Component\Routing\Annotation\Route; #[Route(path: '/scan')] class ScanController extends AbstractController { - public function __construct(protected BarcodeRedirector $barcodeParser, protected BarcodeNormalizer $barcodeNormalizer) + public function __construct(protected BarcodeRedirector $barcodeParser, protected BarcodeScanHelper $barcodeNormalizer) { } @@ -73,10 +75,9 @@ class ScanController extends AbstractController if ($input !== null) { try { - [$type, $id] = $this->barcodeNormalizer->normalizeBarcodeContent($input); - + $scan_result = $this->barcodeNormalizer->scanBarcodeContent($input); try { - return $this->redirect($this->barcodeParser->getRedirectURL($type, $id)); + return $this->redirect($this->barcodeParser->getRedirectURL($scan_result)); } catch (EntityNotFoundException) { $this->addFlash('success', 'scan.qr_not_found'); } @@ -95,10 +96,23 @@ class ScanController extends AbstractController */ public function scanQRCode(string $type, int $id): Response { + $type = strtolower($type); + try { $this->addFlash('success', 'scan.qr_success'); - return $this->redirect($this->barcodeParser->getRedirectURL($type, $id)); + if (!isset(BarcodeScanHelper::QR_TYPE_MAP[$type])) { + throw new InvalidArgumentException('Unknown type: '.$type); + } + //Construct the scan result manually, as we don't have a barcode here + $scan_result = new BarcodeScanResult( + target_type: BarcodeScanHelper::QR_TYPE_MAP[$type], + target_id: $id, + //The routes are only used on the internal generated QR codes + source_type: BarcodeSourceType::INTERNAL + ); + + return $this->redirect($this->barcodeParser->getRedirectURL($scan_result)); } catch (EntityNotFoundException) { $this->addFlash('success', 'scan.qr_not_found'); diff --git a/src/Services/LabelSystem/Barcodes/BarcodeRedirector.php b/src/Services/LabelSystem/Barcodes/BarcodeRedirector.php index 0eba0ed4..bc21b787 100644 --- a/src/Services/LabelSystem/Barcodes/BarcodeRedirector.php +++ b/src/Services/LabelSystem/Barcodes/BarcodeRedirector.php @@ -41,6 +41,7 @@ declare(strict_types=1); namespace App\Services\LabelSystem\Barcodes; +use App\Entity\LabelSystem\LabelSupportedElement; use App\Entity\Parts\PartLot; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\EntityNotFoundException; @@ -59,32 +60,30 @@ final class BarcodeRedirector /** * Determines the URL to which the user should be redirected, when scanning a QR code. * - * @param string $type The type of the element that was scanned (e.g. 'part', 'lot', etc.) - * @param int $id The ID of the element that was scanned - * + * @param BarcodeScanResult $barcodeScan The result of the barcode scan * @return string the URL to which should be redirected * * @throws EntityNotFoundException */ - public function getRedirectURL(string $type, int $id): string + public function getRedirectURL(BarcodeScanResult $barcodeScan): string { - switch ($type) { - case 'part': - return $this->urlGenerator->generate('app_part_show', ['id' => $id]); - case 'lot': + switch ($barcodeScan->target_type) { + case LabelSupportedElement::PART: + return $this->urlGenerator->generate('app_part_show', ['id' => $barcodeScan->target_id]); + case LabelSupportedElement::PART_LOT: //Try to determine the part to the given lot - $lot = $this->em->find(PartLot::class, $id); + $lot = $this->em->find(PartLot::class, $barcodeScan->target_id); if (!$lot instanceof PartLot) { throw new EntityNotFoundException(); } return $this->urlGenerator->generate('app_part_show', ['id' => $lot->getPart()->getID()]); - case 'location': - return $this->urlGenerator->generate('part_list_store_location', ['id' => $id]); + case LabelSupportedElement::STORELOCATION: + return $this->urlGenerator->generate('part_list_store_location', ['id' => $barcodeScan->target_id]); default: - throw new InvalidArgumentException('Unknown $type: '.$type); + throw new InvalidArgumentException('Unknown $type: '.$barcodeScan->target_type->name); } } } diff --git a/src/Services/LabelSystem/Barcodes/BarcodeNormalizer.php b/src/Services/LabelSystem/Barcodes/BarcodeScanHelper.php similarity index 53% rename from src/Services/LabelSystem/Barcodes/BarcodeNormalizer.php rename to src/Services/LabelSystem/Barcodes/BarcodeScanHelper.php index a5b6cb5e..b2dcdac7 100644 --- a/src/Services/LabelSystem/Barcodes/BarcodeNormalizer.php +++ b/src/Services/LabelSystem/Barcodes/BarcodeScanHelper.php @@ -41,24 +41,59 @@ declare(strict_types=1); namespace App\Services\LabelSystem\Barcodes; +use App\Entity\LabelSystem\LabelSupportedElement; use InvalidArgumentException; /** * @see \App\Tests\Services\LabelSystem\Barcodes\BarcodeNormalizerTest */ -final class BarcodeNormalizer +final class BarcodeScanHelper { private const PREFIX_TYPE_MAP = [ - 'L' => 'lot', - 'P' => 'part', - 'S' => 'location', + 'L' => LabelSupportedElement::PART_LOT, + 'P' => LabelSupportedElement::PART, + 'S' => LabelSupportedElement::STORELOCATION, + ]; + + public const QR_TYPE_MAP = [ + 'lot' => LabelSupportedElement::PART_LOT, + 'part' => LabelSupportedElement::PART, + 'location' => LabelSupportedElement::STORELOCATION, ]; /** - * Parses barcode content and normalizes it. - * Returns an array in the format ['part', 1]: First entry contains element type, second the ID of the element. + * Parse the given barcode content and return the target type and ID. + * If the barcode could not be parsed, an exception is thrown. + * Using the $type parameter, you can specify how the barcode should be parsed. If set to null, the function + * will try to guess the type. + * @param string $input + * @param BarcodeSourceType|null $type + * @return BarcodeScanResult */ - public function normalizeBarcodeContent(string $input): array + public function scanBarcodeContent(string $input, ?BarcodeSourceType $type = null): BarcodeScanResult + { + //Do specific parsing + if ($type === BarcodeSourceType::INTERNAL) { + return $this->parseInternalBarcode($input) ?? throw new InvalidArgumentException('Could not parse barcode'); + } + + //Null means auto and we try the different formats + $result = $this->parseInternalBarcode($input); + + if ($result !== null) { + return $result; + } + throw new InvalidArgumentException('Unknown barcode format'); + } + + /** + * This function tries to interpret the given barcode content as an internal barcode. + * If the barcode could not be parsed at all, null is returned. If the barcode is a valid format, but could + * not be found in the database, an exception is thrown. + * @param string $input + * @return BarcodeScanResult|null + */ + private function parseInternalBarcode(string $input): ?BarcodeScanResult { $input = trim($input); $matches = []; @@ -68,7 +103,11 @@ final class BarcodeNormalizer //Extract parts from QR code's URL if (preg_match('#^https?://.*/scan/(\w+)/(\d+)/?$#', $input, $matches)) { - return [$matches[1], (int) $matches[2]]; + return new BarcodeScanResult( + target_type: self::QR_TYPE_MAP[strtolower($matches[1])], + target_id: (int) $matches[2], + source_type: BarcodeSourceType::INTERNAL + ); } //New Code39 barcode use L0001 format @@ -80,7 +119,11 @@ final class BarcodeNormalizer throw new InvalidArgumentException('Unknown prefix '.$prefix); } - return [self::PREFIX_TYPE_MAP[$prefix], $id]; + return new BarcodeScanResult( + target_type: self::PREFIX_TYPE_MAP[$prefix], + target_id: $id, + source_type: BarcodeSourceType::INTERNAL + ); } //During development the L-000001 format was used @@ -92,19 +135,32 @@ final class BarcodeNormalizer throw new InvalidArgumentException('Unknown prefix '.$prefix); } - return [self::PREFIX_TYPE_MAP[$prefix], $id]; + return new BarcodeScanResult( + target_type: self::PREFIX_TYPE_MAP[$prefix], + target_id: $id, + source_type: BarcodeSourceType::INTERNAL + ); } //Legacy Part-DB location labels used $L00336 format if (preg_match('#^\$L(\d{5,})$#', $input, $matches)) { - return ['location', (int) $matches[1]]; + return new BarcodeScanResult( + target_type: LabelSupportedElement::STORELOCATION, + target_id: (int) $matches[1], + source_type: BarcodeSourceType::INTERNAL + ); } //Legacy Part-DB used EAN8 barcodes for part labels. Format 0000001(2) (note the optional 8th digit => checksum) if (preg_match('#^(\d{7})\d?$#', $input, $matches)) { - return ['part', (int) $matches[1]]; + return new BarcodeScanResult( + target_type: LabelSupportedElement::PART, + target_id: (int) $matches[1], + source_type: BarcodeSourceType::INTERNAL + ); } - throw new InvalidArgumentException('Unknown barcode format!'); + //This function abstain from further parsing + return null; } } diff --git a/src/Services/LabelSystem/Barcodes/BarcodeScanResult.php b/src/Services/LabelSystem/Barcodes/BarcodeScanResult.php new file mode 100644 index 00000000..7f1315b3 --- /dev/null +++ b/src/Services/LabelSystem/Barcodes/BarcodeScanResult.php @@ -0,0 +1,39 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\LabelSystem\Barcodes; + +use App\Entity\LabelSystem\LabelSupportedElement; + +/** + * This class represents the result of a barcode scan, with the target type and the ID of the element + */ +class BarcodeScanResult +{ + public function __construct( + public readonly LabelSupportedElement $target_type, + public readonly int $target_id, + public readonly BarcodeSourceType $source_type, + ) { + } +} \ No newline at end of file diff --git a/src/Services/LabelSystem/Barcodes/BarcodeSourceType.php b/src/Services/LabelSystem/Barcodes/BarcodeSourceType.php new file mode 100644 index 00000000..c2573152 --- /dev/null +++ b/src/Services/LabelSystem/Barcodes/BarcodeSourceType.php @@ -0,0 +1,33 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\LabelSystem\Barcodes; + +/** + * This enum represents the different types, where a barcode/QR-code can be generated from + */ +enum BarcodeSourceType +{ + /** This Barcode was generated using Part-DB internal recommended barcode generator */ + case INTERNAL; +} \ No newline at end of file diff --git a/tests/Services/LabelSystem/Barcodes/BarcodeNormalizerTest.php b/tests/Services/LabelSystem/Barcodes/BarcodeNormalizerTest.php deleted file mode 100644 index 45b50389..00000000 --- a/tests/Services/LabelSystem/Barcodes/BarcodeNormalizerTest.php +++ /dev/null @@ -1,115 +0,0 @@ -. - */ - -declare(strict_types=1); - -/** - * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). - * - * Copyright (C) 2019 - 2020 Jan Böhmer (https://github.com/jbtronics) - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero 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 Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -namespace App\Tests\Services\LabelSystem\Barcodes; - -use App\Services\LabelSystem\Barcodes\BarcodeNormalizer; -use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; - -class BarcodeNormalizerTest extends WebTestCase -{ - /** - * @var BarcodeNormalizer - */ - protected $service; - - protected function setUp(): void - { - self::bootKernel(); - $this->service = self::getContainer()->get(BarcodeNormalizer::class); - } - - public function dataProvider(): \Iterator - { - //QR URL content: - yield [['lot', 1], 'https://localhost:8000/scan/lot/1']; - yield [['part', 123], 'https://localhost:8000/scan/part/123']; - yield [['location', 4], 'http://foo.bar/part-db/scan/location/4']; - yield [['under_score', 10], 'http://test/part-db/sub/scan/under_score/10/']; - //Current Code39 format: - yield [['lot', 10], 'L0010']; - yield [['lot', 123], 'L0123']; - yield [['lot', 123456], 'L123456']; - yield [['part', 2], 'P0002']; - //Development phase Code39 barcodes: - yield [['lot', 10], 'L-000010']; - yield [['lot', 10], 'Lß000010']; - yield [['part', 123], 'P-000123']; - yield [['location', 123], 'S-000123']; - yield [['lot', 12_345_678], 'L-12345678']; - //Legacy storelocation format - yield [['location', 336], '$L00336']; - yield [['location', 12_345_678], '$L12345678']; - //Legacy Part format - yield [['part', 123], '0000123']; - yield [['part', 123], '00001236']; - yield [['part', 1_234_567], '12345678']; - } - - public function invalidDataProvider(): array - { - return [ - ['https://localhost/part/1'], //Without scan - ['L-'], //Without number - ['L-123'], //Too short - ['X-123456'], //Unknown prefix - ['XXXWADSDF sdf'], //Garbage - [''], //Empty - ]; - } - - /** - * @dataProvider dataProvider - */ - public function testNormalizeBarcodeContent(array $expected, string $input): void - { - $this->assertSame($expected, $this->service->normalizeBarcodeContent($input)); - } - - /** - * @dataProvider invalidDataProvider - */ - public function testInvalidFormats(string $input): void - { - $this->expectException(\InvalidArgumentException::class); - $this->service->normalizeBarcodeContent($input); - } -} diff --git a/tests/Services/LabelSystem/Barcodes/BarcodeRedirectorTest.php b/tests/Services/LabelSystem/Barcodes/BarcodeRedirectorTest.php index dbbd958c..08390896 100644 --- a/tests/Services/LabelSystem/Barcodes/BarcodeRedirectorTest.php +++ b/tests/Services/LabelSystem/Barcodes/BarcodeRedirectorTest.php @@ -41,13 +41,16 @@ declare(strict_types=1); namespace App\Tests\Services\LabelSystem\Barcodes; +use App\Entity\LabelSystem\LabelSupportedElement; use App\Services\LabelSystem\Barcodes\BarcodeRedirector; +use App\Services\LabelSystem\Barcodes\BarcodeScanResult; +use App\Services\LabelSystem\Barcodes\BarcodeSourceType; use Doctrine\ORM\EntityNotFoundException; use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; -class BarcodeRedirectorTest extends KernelTestCase +final class BarcodeRedirectorTest extends KernelTestCase { - private ?object $service = null; + private ?BarcodeRedirector $service = null; protected function setUp(): void { @@ -55,13 +58,13 @@ class BarcodeRedirectorTest extends KernelTestCase $this->service = self::getContainer()->get(BarcodeRedirector::class); } - public function urlDataProvider(): array + public static function urlDataProvider(): array { return [ - ['part', '/en/part/1'], - //Part lot redirects to Part info page (Part lot 1 is associated with part 3 - ['lot', '/en/part/3'], - ['location', '/en/store_location/1/parts'], + [new BarcodeScanResult(LabelSupportedElement::PART, 1, BarcodeSourceType::INTERNAL), '/en/part/1'], + //Part lot redirects to Part info page (Part lot 1 is associated with part 3) + [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 1, BarcodeSourceType::INTERNAL), '/en/part/3'], + [new BarcodeScanResult(LabelSupportedElement::STORELOCATION, 1, BarcodeSourceType::INTERNAL), '/en/store_location/1/parts'], ]; } @@ -69,21 +72,16 @@ class BarcodeRedirectorTest extends KernelTestCase * @dataProvider urlDataProvider * @group DB */ - public function testGetRedirectURL(string $type, string $url): void + public function testGetRedirectURL(BarcodeScanResult $scanResult, string $url): void { - $this->assertSame($url, $this->service->getRedirectURL($type, 1)); + $this->assertSame($url, $this->service->getRedirectURL($scanResult)); } public function testGetRedirectEntityNotFount(): void { $this->expectException(EntityNotFoundException::class); //If we encounter an invalid lot, we must throw an exception - $this->service->getRedirectURL('lot', 12_345_678); - } - - public function testInvalidType(): void - { - $this->expectException(\InvalidArgumentException::class); - $this->service->getRedirectURL('invalid', 1); + $this->service->getRedirectURL(new BarcodeScanResult(LabelSupportedElement::PART_LOT, + 12_345_678, BarcodeSourceType::INTERNAL)); } } diff --git a/tests/Services/LabelSystem/Barcodes/BarcodeScanHelperTest.php b/tests/Services/LabelSystem/Barcodes/BarcodeScanHelperTest.php new file mode 100644 index 00000000..9d803202 --- /dev/null +++ b/tests/Services/LabelSystem/Barcodes/BarcodeScanHelperTest.php @@ -0,0 +1,136 @@ +. + */ + +declare(strict_types=1); + +/** + * This file is part of Part-DB (https://github.com/Part-DB/Part-DB-symfony). + * + * Copyright (C) 2019 - 2020 Jan Böhmer (https://github.com/jbtronics) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +namespace App\Tests\Services\LabelSystem\Barcodes; + +use App\Entity\LabelSystem\LabelSupportedElement; +use App\Services\LabelSystem\Barcodes\BarcodeScanHelper; +use App\Services\LabelSystem\Barcodes\BarcodeScanResult; +use App\Services\LabelSystem\Barcodes\BarcodeSourceType; +use Com\Tecnick\Barcode\Barcode; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; + +class BarcodeScanHelperTest extends WebTestCase +{ + private ?BarcodeScanHelper $service = null; + + protected function setUp(): void + { + self::bootKernel(); + $this->service = self::getContainer()->get(BarcodeScanHelper::class); + } + + public static function dataProvider(): \Iterator + { + //QR URL content: + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 1, BarcodeSourceType::INTERNAL), + 'https://localhost:8000/scan/lot/1']; + yield [new BarcodeScanResult(LabelSupportedElement::PART, 123, BarcodeSourceType::INTERNAL), + 'https://localhost:8000/scan/part/123']; + yield [new BarcodeScanResult(LabelSupportedElement::STORELOCATION, 4, BarcodeSourceType::INTERNAL), + 'http://foo.bar/part-db/scan/location/4']; + + //Current Code39 format: + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 10, BarcodeSourceType::INTERNAL), + 'L0010']; + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 123, BarcodeSourceType::INTERNAL), + 'L0123']; + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 123456, BarcodeSourceType::INTERNAL), + 'L123456']; + yield [new BarcodeScanResult(LabelSupportedElement::PART, 2, BarcodeSourceType::INTERNAL), + 'P0002']; + + //Development phase Code39 barcodes: + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 10, BarcodeSourceType::INTERNAL), + 'L-000010']; + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 10, BarcodeSourceType::INTERNAL), + 'Lß000010']; + yield [new BarcodeScanResult(LabelSupportedElement::PART, 123, BarcodeSourceType::INTERNAL), + 'P-000123']; + yield [new BarcodeScanResult(LabelSupportedElement::STORELOCATION, 123, BarcodeSourceType::INTERNAL), + 'S-000123']; + yield [new BarcodeScanResult(LabelSupportedElement::PART_LOT, 12_345_678, BarcodeSourceType::INTERNAL), + 'L-12345678']; + + //Legacy storelocation format + yield [new BarcodeScanResult(LabelSupportedElement::STORELOCATION, 336, BarcodeSourceType::INTERNAL), + '$L00336']; + yield [new BarcodeScanResult(LabelSupportedElement::STORELOCATION, 12_345_678, BarcodeSourceType::INTERNAL), + '$L12345678']; + + //Legacy Part format + yield [new BarcodeScanResult(LabelSupportedElement::PART, 123, BarcodeSourceType::INTERNAL), + '0000123']; + yield [new BarcodeScanResult(LabelSupportedElement::PART, 123, BarcodeSourceType::INTERNAL), + '00001236']; + yield [new BarcodeScanResult(LabelSupportedElement::PART, 1_234_567, BarcodeSourceType::INTERNAL), + '12345678']; + } + + public static function invalidDataProvider(): array + { + return [ + ['https://localhost/part/1'], //Without scan + ['L-'], //Without number + ['L-123'], //Too short + ['X-123456'], //Unknown prefix + ['XXXWADSDF sdf'], //Garbage + [''], //Empty + ]; + } + + /** + * @dataProvider dataProvider + */ + public function testNormalizeBarcodeContent(BarcodeScanResult $expected, string $input): void + { + $this->assertEquals($expected, $this->service->scanBarcodeContent($input)); + } + + /** + * @dataProvider invalidDataProvider + */ + public function testInvalidFormats(string $input): void + { + $this->expectException(\InvalidArgumentException::class); + $this->service->scanBarcodeContent($input); + } +} From 1409d199223b760c0654971c2a625eea53752575 Mon Sep 17 00:00:00 2001 From: Pyromane Date: Tue, 31 Oct 2023 13:32:43 +0100 Subject: [PATCH 14/21] Update installation_docker.md (#425) For the database additionally "restart: unless-stopped" is specified, so that this is also available after a restart of the host. --- docs/installation/installation_docker.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/installation/installation_docker.md b/docs/installation/installation_docker.md index d66e0cfd..2af25f3f 100644 --- a/docs/installation/installation_docker.md +++ b/docs/installation/installation_docker.md @@ -150,6 +150,7 @@ services: database: container_name: partdb_database image: mysql:8.0 + restart: unless-stopped command: --default-authentication-plugin=mysql_native_password environment: # Change this Password From 3ac82cf76aff5b66bfecb74b65859709eb94c30d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 3 Nov 2023 23:01:23 +0100 Subject: [PATCH 15/21] The frontend dependencies can now detect their path automatically. Therefore it does not need to be configured in the webpack.config.js before compilation. This should help to make things like issue #426 easier to resolve. --- README.md | 20 +++---- .../WebpackAutoPathSubscriber.php | 57 +++++++++++++++++++ webpack.config.js | 15 ++--- 3 files changed, 71 insertions(+), 21 deletions(-) create mode 100644 src/EventSubscriber/WebpackAutoPathSubscriber.php diff --git a/README.md b/README.md index ad2197dc..7409ddd2 100644 --- a/README.md +++ b/README.md @@ -101,24 +101,20 @@ for a detailed guide how to install Part-DB.** In bigger instances with concurrent accesses, MySQL is more performant. This can not be changed easily later, so choose wisely. 4. Install composer dependencies and generate autoload files: `composer install -o --no-dev` -5. If you have put Part-DB into a subdirectory on your server (like `part-db/`), you have to edit the file - `webpack.config.js` and uncomment the lines (remove the `//` before the lines) `.setPublicPath('/part-db/build')` ( - line 43) and - `.setManifestKeyPrefix('build/')` (line 44). You have to replace `/part-db` with your own path on line 44. -6. Install client side dependencies and build it: `yarn install` and `yarn build` -7. _Optional_ (speeds up first load): Warmup cache: `php bin/console cache:warmup` -8. Upgrade database to new scheme (or create it, when it was empty): `php bin/console doctrine:migrations:migrate` and +5. Install client side dependencies and build it: `yarn install` and `yarn build` +6. _Optional_ (speeds up first load): Warmup cache: `php bin/console cache:warmup` +7. Upgrade database to new scheme (or create it, when it was empty): `php bin/console doctrine:migrations:migrate` and follow the instructions given. During the process the password for the admin is user is shown. Copy it. **Caution**: This steps tamper with your database and could potentially destroy it. So make sure to make a backup of your database. -9. You can configure Part-DB via `config/parameters.yaml`. You should check if settings match your expectations, after +8. You can configure Part-DB via `config/parameters.yaml`. You should check if settings match your expectations, after you installed/upgraded Part-DB. Check if `partdb.default_currency` matches your mainly used currency (this can not be changed after creating price information). Run `php bin/console cache:clear` when you changed something. -10. Access Part-DB in your browser (under the URL you put it) and login with user *admin*. Password is the one outputted - during DB setup. - If you can not remember the password, set a new one with `php bin/console app:set-password admin`. You can create - new users with the admin user and start using Part-DB. +9. Access Part-DB in your browser (under the URL you put it) and login with user *admin*. Password is the one outputted + during DB setup. + If you can not remember the password, set a new one with `php bin/console app:set-password admin`. You can create + new users with the admin user and start using Part-DB. When you want to upgrade to a newer version, then just copy the new files into the folder and repeat the steps 4. to 7. diff --git a/src/EventSubscriber/WebpackAutoPathSubscriber.php b/src/EventSubscriber/WebpackAutoPathSubscriber.php new file mode 100644 index 00000000..f040a646 --- /dev/null +++ b/src/EventSubscriber/WebpackAutoPathSubscriber.php @@ -0,0 +1,57 @@ +. + */ + +declare(strict_types=1); + + +namespace App\EventSubscriber; + +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\WebpackEncoreBundle\Event\RenderAssetTagEvent; + +/** + * This class fixes the wrong pathes generated by webpack using the auto publicPath mode. + * Basically it replaces the wrong /auto/ part of the path with the correct /build/ in all encore entrypoints. + */ +class WebpackAutoPathSubscriber implements EventSubscriberInterface +{ + public static function getSubscribedEvents(): array + { + return [ + RenderAssetTagEvent::class => 'onRenderAssetTag' + ]; + } + + public function onRenderAssetTag(RenderAssetTagEvent $event): void + { + if ($event->isScriptTag()) { + $event->setAttribute('src', $this->resolveAuto($event->getUrl())); + } + if ($event->isLinkTag()) { + $event->setAttribute('href', $this->resolveAuto($event->getUrl())); + } + } + + private function resolveAuto(string $path): string + { + //Replace the first occurence of /auto/ with /build/ to get the correct path + return preg_replace('/\/auto\//', '/build/', $path, 1); + } +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js index 857ca728..1eab3652 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -36,16 +36,9 @@ if (!Encore.isRuntimeEnvironmentConfigured()) { Encore // directory where compiled assets will be stored .setOutputPath('public/build/') - // public path used by the web server to access the output path + // This value doesn't matter, as the public path is set to auto later down. This is just to prevent a warning .setPublicPath('/build') - // only needed for CDN's or subdirectory deploy - //.setManifestKeyPrefix('build/') - - /** - * If you are putting Part-DB into a sub directory you have to uncomment these lines and - * replace "part-db/" with your path to Part-DB - */ - //.setPublicPath('/part-db/build') + // only needed for CDN's or subdirectory deploy (this should not be needeed, as we use auto public path) //.setManifestKeyPrefix('build/') /* @@ -189,3 +182,7 @@ if (Encore.isDev()) { module.exports = Encore.getWebpackConfig(); + +//Enable webpack auto public path (this only works in combination with WebpackAutoPathSubscriber!!) +//We do it here to supress a warning caused by webpack Encore +module.exports.output.publicPath = 'auto'; \ No newline at end of file From eabd03dc532a47fbaf5f621c3a6df076e300f731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 3 Nov 2023 23:04:55 +0100 Subject: [PATCH 16/21] Fixed variable access curly brackets deprecations in migrations --- migrations/Version1.php | 2 +- migrations/Version20190902140506.php | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/migrations/Version1.php b/migrations/Version1.php index f1389801..59f40c74 100644 --- a/migrations/Version1.php +++ b/migrations/Version1.php @@ -160,7 +160,7 @@ EOD; 21840,21840,21840,21840,21840,21520,21520,21520,20480,21520,20480, 20480,20480,20480,20480,21504,20480), ( - 2,'admin', '${admin_pw}','','', + 2,'admin', '$admin_pw','','', '','',1,1,21845,21845,21845,21,85,21,349525,21845,21845,21845,21845 ,21845,21845,21845,21845,21845,21845,21845,21845,21845,21845,21845, 21845,21845,21845,21845,21845,21845); diff --git a/migrations/Version20190902140506.php b/migrations/Version20190902140506.php index bbccf829..36f184d5 100644 --- a/migrations/Version20190902140506.php +++ b/migrations/Version20190902140506.php @@ -234,8 +234,8 @@ final class Version20190902140506 extends AbstractMultiPlatformMigration 'orderdetails', 'pricedetails', 'storelocations', 'suppliers', ]; foreach ($tables as $table) { - $this->addSql("UPDATE ${table} SET datetime_added = NOW() WHERE datetime_added = '0000-00-00 00:00:00'"); - $this->addSql("UPDATE ${table} SET last_modified = datetime_added WHERE last_modified = '0000-00-00 00:00:00'"); + $this->addSql("UPDATE $table SET datetime_added = NOW() WHERE datetime_added = '0000-00-00 00:00:00'"); + $this->addSql("UPDATE $table SET last_modified = datetime_added WHERE last_modified = '0000-00-00 00:00:00'"); } //Set the dbVersion to a high value, to prevent the old Part-DB versions to upgrade DB! From 323c70393d3a66c005f85e4ddd193b53c7d4976c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Fri, 3 Nov 2023 23:07:51 +0100 Subject: [PATCH 17/21] Use demo.part-db.de in links to demo as this now has TLS encryption too. --- README.md | 6 +++--- docs/index.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7409ddd2..4edcdddc 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ ![Docker Build Status](https://github.com/Part-DB/Part-DB-symfony/workflows/Docker%20Image%20Build/badge.svg) [![Crowdin](https://badges.crowdin.net/e/8325196085d4bee8c04b75f7c915452a/localized.svg)](https://part-db.crowdin.com/part-db) -**[Documentation](https://docs.part-db.de/)** | **[Demo](https://part-db.herokuapp.com)** | **[Docker Image](https://hub.docker.com/r/jbtronics/part-db1)** +**[Documentation](https://docs.part-db.de/)** | **[Demo](https://demo.part-db.de/)** | **[Docker Image](https://hub.docker.com/r/jbtronics/part-db1)** # Part-DB @@ -24,8 +24,8 @@ for everybody. ## Demo -If you want to test Part-DB without installing it, you can use [this](https://part-db.herokuapp.com) Heroku instance. -(Or this link for the [German Version](https://part-db.herokuapp.com/de/)). +If you want to test Part-DB without installing it, you can use [this](https://demo.part-db.de/) Heroku instance. +(Or this link for the [German Version](https://demo.part-db.de/de/)). You can log in with username: *user* and password: *user*. diff --git a/docs/index.md b/docs/index.md index c3dbaa73..2d29b982 100644 --- a/docs/index.md +++ b/docs/index.md @@ -12,8 +12,8 @@ It is installed on a web server and so can be accessed with any browser without {: .important-title } > Demo > -> If you want to test Part-DB without installing it, you can use [this](https://part-db.herokuapp.com) Heroku instance. -> (Or this link for the [German Version](https://part-db.herokuapp.com/de/)). +> If you want to test Part-DB without installing it, you can use [this](https://demo.part-db.de/) Heroku instance. +> (Or this link for the [German Version](https://demo.part-db.de/de/)). > > You can log in with username: **user** and password: **user**, to change/create data. > From 3c52e57a44299b9e94141788a429ed4f89cc5afb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 4 Nov 2023 20:44:32 +0100 Subject: [PATCH 18/21] Updated dependencies --- composer.lock | 442 ++++++++++++++++++++++---------------------------- yarn.lock | 126 +++++++------- 2 files changed, 262 insertions(+), 306 deletions(-) diff --git a/composer.lock b/composer.lock index f8a2abeb..96c45345 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "api-platform/core", - "version": "v3.2.1", + "version": "v3.2.3", "source": { "type": "git", "url": "https://github.com/api-platform/core.git", - "reference": "13aa25cd319ee5d45ce28d1e98e43b01f6132499" + "reference": "633bde85eb58b16d8cd161ecc3bb5b6934a753bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/13aa25cd319ee5d45ce28d1e98e43b01f6132499", - "reference": "13aa25cd319ee5d45ce28d1e98e43b01f6132499", + "url": "https://api.github.com/repos/api-platform/core/zipball/633bde85eb58b16d8cd161ecc3bb5b6934a753bd", + "reference": "633bde85eb58b16d8cd161ecc3bb5b6934a753bd", "shasum": "" }, "require": { @@ -166,9 +166,9 @@ ], "support": { "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v3.2.1" + "source": "https://github.com/api-platform/core/tree/v3.2.3" }, - "time": "2023-10-18T07:46:05+00:00" + "time": "2023-10-30T10:39:11+00:00" }, { "name": "beberlei/assert", @@ -2033,7 +2033,7 @@ "issues": "https://github.com/dompdf/dompdf/issues", "source": "https://github.com/dompdf/dompdf/tree/master" }, - "time": "2023-10-25T11:17:32+00:00" + "time": "2023-11-03T16:46:24+00:00" }, { "name": "egulias/email-validator", @@ -2154,16 +2154,16 @@ }, { "name": "florianv/exchanger", - "version": "2.8.0", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/florianv/exchanger.git", - "reference": "be3e4b316a0fd90bac186cc8b8206e995df161ba" + "reference": "9214f51665fb907e7aa2397e21a90c456eb0c448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/florianv/exchanger/zipball/be3e4b316a0fd90bac186cc8b8206e995df161ba", - "reference": "be3e4b316a0fd90bac186cc8b8206e995df161ba", + "url": "https://api.github.com/repos/florianv/exchanger/zipball/9214f51665fb907e7aa2397e21a90c456eb0c448", + "reference": "9214f51665fb907e7aa2397e21a90c456eb0c448", "shasum": "" }, "require": { @@ -2174,7 +2174,7 @@ "php-http/client-implementation": "^1.0", "php-http/discovery": "^1.6", "php-http/httplug": "^1.0 || ^2.0", - "php-http/message-factory": "^1.0.2", + "psr/http-factory": "^1.0.2", "psr/simple-cache": "^1.0 || ^2.0 || ^3.0" }, "require-dev": { @@ -2220,9 +2220,9 @@ ], "support": { "issues": "https://github.com/florianv/exchanger/issues", - "source": "https://github.com/florianv/exchanger/tree/2.8.0" + "source": "https://github.com/florianv/exchanger/tree/2.8.1" }, - "time": "2022-12-11T05:52:51+00:00" + "time": "2023-11-03T17:11:52+00:00" }, { "name": "florianv/swap", @@ -3485,16 +3485,16 @@ }, { "name": "lcobucci/jwt", - "version": "5.0.0", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "47bdb0e0b5d00c2f89ebe33e7e384c77e84e7c34" + "reference": "f0031c07b96db6a0ca649206e7eacddb7e9d5908" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/47bdb0e0b5d00c2f89ebe33e7e384c77e84e7c34", - "reference": "47bdb0e0b5d00c2f89ebe33e7e384c77e84e7c34", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/f0031c07b96db6a0ca649206e7eacddb7e9d5908", + "reference": "f0031c07b96db6a0ca649206e7eacddb7e9d5908", "shasum": "" }, "require": { @@ -3502,20 +3502,20 @@ "ext-json": "*", "ext-openssl": "*", "ext-sodium": "*", - "php": "~8.1.0 || ~8.2.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0", "psr/clock": "^1.0" }, "require-dev": { - "infection/infection": "^0.26.19", + "infection/infection": "^0.27.0", "lcobucci/clock": "^3.0", - "lcobucci/coding-standard": "^9.0", - "phpbench/phpbench": "^1.2.8", + "lcobucci/coding-standard": "^11.0", + "phpbench/phpbench": "^1.2.9", "phpstan/extension-installer": "^1.2", - "phpstan/phpstan": "^1.10.3", - "phpstan/phpstan-deprecation-rules": "^1.1.2", - "phpstan/phpstan-phpunit": "^1.3.8", + "phpstan/phpstan": "^1.10.7", + "phpstan/phpstan-deprecation-rules": "^1.1.3", + "phpstan/phpstan-phpunit": "^1.3.10", "phpstan/phpstan-strict-rules": "^1.5.0", - "phpunit/phpunit": "^10.0.12" + "phpunit/phpunit": "^10.2.6" }, "suggest": { "lcobucci/clock": ">= 3.0" @@ -3544,7 +3544,7 @@ ], "support": { "issues": "https://github.com/lcobucci/jwt/issues", - "source": "https://github.com/lcobucci/jwt/tree/5.0.0" + "source": "https://github.com/lcobucci/jwt/tree/5.1.0" }, "funding": [ { @@ -3556,7 +3556,7 @@ "type": "patreon" } ], - "time": "2023-02-25T21:35:16+00:00" + "time": "2023-10-31T06:41:47+00:00" }, { "name": "league/csv", @@ -4026,16 +4026,16 @@ }, { "name": "monolog/monolog", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d" + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", - "reference": "e2392369686d420ca32df3803de28b5d6f76867d", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c915e2634718dbc8a4a15c61b0e62e7a44e14448", + "reference": "c915e2634718dbc8a4a15c61b0e62e7a44e14448", "shasum": "" }, "require": { @@ -4111,7 +4111,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.4.0" + "source": "https://github.com/Seldaek/monolog/tree/3.5.0" }, "funding": [ { @@ -4123,7 +4123,7 @@ "type": "tidelift" } ], - "time": "2023-06-21T08:46:11+00:00" + "time": "2023-10-27T15:32:31+00:00" }, { "name": "nbgrp/onelogin-saml-bundle", @@ -5192,61 +5192,6 @@ }, "time": "2023-04-14T15:10:03+00:00" }, - { - "name": "php-http/message-factory", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "reference": "4d8778e1c7d405cbb471574821c1ff5b68cc8f57", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" - } - ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", - "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" - ], - "support": { - "issues": "https://github.com/php-http/message-factory/issues", - "source": "https://github.com/php-http/message-factory/tree/1.1.0" - }, - "abandoned": "psr/http-factory", - "time": "2023-04-14T14:16:17+00:00" - }, { "name": "php-http/promise", "version": "1.2.0", @@ -6561,20 +6506,20 @@ }, { "name": "scheb/2fa-backup-code", - "version": "v6.9.0", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-backup-code.git", - "reference": "b01965cd221cda280526e48e7f56966154b9ba2f" + "reference": "d258a5af83b32f88484cd345b4784004766b2fe3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-backup-code/zipball/b01965cd221cda280526e48e7f56966154b9ba2f", - "reference": "b01965cd221cda280526e48e7f56966154b9ba2f", + "url": "https://api.github.com/repos/scheb/2fa-backup-code/zipball/d258a5af83b32f88484cd345b4784004766b2fe3", + "reference": "d258a5af83b32f88484cd345b4784004766b2fe3", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "scheb/2fa-bundle": "self.version" }, "type": "library", @@ -6604,27 +6549,27 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-backup-code/tree/v6.9.0" + "source": "https://github.com/scheb/2fa-backup-code/tree/v6.10.0" }, - "time": "2022-12-10T15:20:09+00:00" + "time": "2023-11-04T12:54:57+00:00" }, { "name": "scheb/2fa-bundle", - "version": "v6.9.0", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-bundle.git", - "reference": "98fee6bf6ce17514d8f3772d4c7f86e6f7595a85" + "reference": "493a8712be5461ca90f4ac0eb819cfcf6cf8d009" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/98fee6bf6ce17514d8f3772d4c7f86e6f7595a85", - "reference": "98fee6bf6ce17514d8f3772d4c7f86e6f7595a85", + "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/493a8712be5461ca90f4ac0eb819cfcf6cf8d009", + "reference": "493a8712be5461ca90f4ac0eb819cfcf6cf8d009", "shasum": "" }, "require": { "ext-json": "*", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "symfony/config": "^5.4 || ^6.0", "symfony/dependency-injection": "^5.4 || ^6.0", "symfony/event-dispatcher": "^5.4 || ^6.0", @@ -6671,27 +6616,27 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-bundle/tree/v6.9.0" + "source": "https://github.com/scheb/2fa-bundle/tree/v6.10.0" }, - "time": "2023-08-05T11:13:58+00:00" + "time": "2023-11-04T12:54:57+00:00" }, { "name": "scheb/2fa-google-authenticator", - "version": "v6.9.0", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-google-authenticator.git", - "reference": "20eab4c1814b587cac71c4516a06b192ca838294" + "reference": "3ee3fa82bcd579e396b7ed63d9006e8d63a18e67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/20eab4c1814b587cac71c4516a06b192ca838294", - "reference": "20eab4c1814b587cac71c4516a06b192ca838294", + "url": "https://api.github.com/repos/scheb/2fa-google-authenticator/zipball/3ee3fa82bcd579e396b7ed63d9006e8d63a18e67", + "reference": "3ee3fa82bcd579e396b7ed63d9006e8d63a18e67", "shasum": "" }, "require": { "paragonie/constant_time_encoding": "^2.4", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "scheb/2fa-bundle": "self.version", "spomky-labs/otphp": "^10.0 || ^11.0" }, @@ -6722,28 +6667,28 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-google-authenticator/tree/v6.9.0" + "source": "https://github.com/scheb/2fa-google-authenticator/tree/v6.10.0" }, - "time": "2022-12-10T15:20:09+00:00" + "time": "2023-11-04T12:54:57+00:00" }, { "name": "scheb/2fa-trusted-device", - "version": "v6.9.0", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-trusted-device.git", - "reference": "cac6feaf9f2c7d3a1aade86942f7b7b234fcd151" + "reference": "9ee6c957d2a7f6a72a9fdb006ac4ccda3d8b61d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/cac6feaf9f2c7d3a1aade86942f7b7b234fcd151", - "reference": "cac6feaf9f2c7d3a1aade86942f7b7b234fcd151", + "url": "https://api.github.com/repos/scheb/2fa-trusted-device/zipball/9ee6c957d2a7f6a72a9fdb006ac4ccda3d8b61d3", + "reference": "9ee6c957d2a7f6a72a9fdb006ac4ccda3d8b61d3", "shasum": "" }, "require": { "lcobucci/clock": "^2.0 || ^3.0", "lcobucci/jwt": "^4.1 || ^5.0", - "php": "~8.0.0 || ~8.1.0 || ~8.2.0", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "scheb/2fa-bundle": "self.version" }, "type": "library", @@ -6773,9 +6718,9 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-trusted-device/tree/v6.9.0" + "source": "https://github.com/scheb/2fa-trusted-device/tree/v6.10.0" }, - "time": "2023-04-01T11:20:00+00:00" + "time": "2023-11-04T12:54:57+00:00" }, { "name": "shivas/versioning-bundle", @@ -7973,16 +7918,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "6479c0b2cb2fa94338a5fb5b810a82d573ca15c2" + "reference": "c8af292f733cc28149485639177c5f2b67dff200" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/6479c0b2cb2fa94338a5fb5b810a82d573ca15c2", - "reference": "6479c0b2cb2fa94338a5fb5b810a82d573ca15c2", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/c8af292f733cc28149485639177c5f2b67dff200", + "reference": "c8af292f733cc28149485639177c5f2b67dff200", "shasum": "" }, "require": { @@ -8063,7 +8008,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.6" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.3.7" }, "funding": [ { @@ -8079,20 +8024,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T16:20:28+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/dotenv", - "version": "v6.3.0", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e" + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/ceadb434fe2a6763a03d2d110441745834f3dd1e", - "reference": "ceadb434fe2a6763a03d2d110441745834f3dd1e", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", + "reference": "7dfbe2976f3c1b7cfa8fac2212a050bfa9bd7d9e", "shasum": "" }, "require": { @@ -8137,7 +8082,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.3.0" + "source": "https://github.com/symfony/dotenv/tree/v6.3.7" }, "funding": [ { @@ -8153,7 +8098,7 @@ "type": "tidelift" } ], - "time": "2023-04-21T14:41:17+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { "name": "symfony/error-handler", @@ -8578,16 +8523,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9" + "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/46bebc3d097d1bb1dce04c5ba83658afd79988f9", - "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9", + "url": "https://api.github.com/repos/symfony/flex/zipball/ae6dea68771c5fca9d172e0c0910bdd06199f6f4", + "reference": "ae6dea68771c5fca9d172e0c0910bdd06199f6f4", "shasum": "" }, "require": { @@ -8623,7 +8568,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.0" + "source": "https://github.com/symfony/flex/tree/v2.4.1" }, "funding": [ { @@ -8639,20 +8584,20 @@ "type": "tidelift" } ], - "time": "2023-10-22T18:05:25+00:00" + "time": "2023-10-30T18:35:17+00:00" }, { "name": "symfony/form", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "6af3c25eda0f2a028aeab7d81c2597dfedecd96a" + "reference": "e6743d188f168643cb247f65cbad09ddb1dfcfe5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/6af3c25eda0f2a028aeab7d81c2597dfedecd96a", - "reference": "6af3c25eda0f2a028aeab7d81c2597dfedecd96a", + "url": "https://api.github.com/repos/symfony/form/zipball/e6743d188f168643cb247f65cbad09ddb1dfcfe5", + "reference": "e6743d188f168643cb247f65cbad09ddb1dfcfe5", "shasum": "" }, "require": { @@ -8720,7 +8665,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v6.3.6" + "source": "https://github.com/symfony/form/tree/v6.3.7" }, "funding": [ { @@ -8736,20 +8681,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:32:53+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "5b5dca452a70d06d0463d3aeae640b2d034ef485" + "reference": "dba20792c726c30d455626eddfb2db008f64085f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/5b5dca452a70d06d0463d3aeae640b2d034ef485", - "reference": "5b5dca452a70d06d0463d3aeae640b2d034ef485", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/dba20792c726c30d455626eddfb2db008f64085f", + "reference": "dba20792c726c30d455626eddfb2db008f64085f", "shasum": "" }, "require": { @@ -8864,7 +8809,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v6.3.6" + "source": "https://github.com/symfony/framework-bundle/tree/v6.3.7" }, "funding": [ { @@ -8880,20 +8825,20 @@ "type": "tidelift" } ], - "time": "2023-10-12T17:41:20+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { "name": "symfony/http-client", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "ab8446f997efb9913627e9da10fa784d2182fe92" + "reference": "cd67fcaf4524ec6ae5d9b2d9497682d7ad3ce57d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/ab8446f997efb9913627e9da10fa784d2182fe92", - "reference": "ab8446f997efb9913627e9da10fa784d2182fe92", + "url": "https://api.github.com/repos/symfony/http-client/zipball/cd67fcaf4524ec6ae5d9b2d9497682d7ad3ce57d", + "reference": "cd67fcaf4524ec6ae5d9b2d9497682d7ad3ce57d", "shasum": "" }, "require": { @@ -8956,7 +8901,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.3.6" + "source": "https://github.com/symfony/http-client/tree/v6.3.7" }, "funding": [ { @@ -8972,7 +8917,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T10:08:56+00:00" + "time": "2023-10-29T12:41:36+00:00" }, { "name": "symfony/http-client-contracts", @@ -9054,16 +8999,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c186627f52febe09c6d5270b04f8462687a250a6" + "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c186627f52febe09c6d5270b04f8462687a250a6", - "reference": "c186627f52febe09c6d5270b04f8462687a250a6", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/59d1837d5d992d16c2628cd0d6b76acf8d69b33e", + "reference": "59d1837d5d992d16c2628cd0d6b76acf8d69b33e", "shasum": "" }, "require": { @@ -9111,7 +9056,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.6" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.7" }, "funding": [ { @@ -9127,20 +9072,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:32:53+00:00" + "time": "2023-10-28T23:55:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4945f5001b06ff9080cd3d8f1f9f069094c0d156" + "reference": "6d4098095f93279d9536a0e9124439560cc764d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4945f5001b06ff9080cd3d8f1f9f069094c0d156", - "reference": "4945f5001b06ff9080cd3d8f1f9f069094c0d156", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6d4098095f93279d9536a0e9124439560cc764d0", + "reference": "6d4098095f93279d9536a0e9124439560cc764d0", "shasum": "" }, "require": { @@ -9224,7 +9169,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.6" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.7" }, "funding": [ { @@ -9240,20 +9185,20 @@ "type": "tidelift" } ], - "time": "2023-10-21T13:12:51+00:00" + "time": "2023-10-29T14:31:45+00:00" }, { "name": "symfony/intl", - "version": "v6.3.2", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/intl.git", - "reference": "1f8cb145c869ed089a8531c51a6a4b31ed0b3c69" + "reference": "4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/intl/zipball/1f8cb145c869ed089a8531c51a6a4b31ed0b3c69", - "reference": "1f8cb145c869ed089a8531c51a6a4b31ed0b3c69", + "url": "https://api.github.com/repos/symfony/intl/zipball/4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9", + "reference": "4cc98c05f2c55150a6aa5b3e20667f7a6d06cca9", "shasum": "" }, "require": { @@ -9306,7 +9251,7 @@ "localization" ], "support": { - "source": "https://github.com/symfony/intl/tree/v6.3.2" + "source": "https://github.com/symfony/intl/tree/v6.3.7" }, "funding": [ { @@ -9322,7 +9267,7 @@ "type": "tidelift" } ], - "time": "2023-07-20T07:43:09+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/mailer", @@ -11222,16 +11167,16 @@ }, { "name": "symfony/security-bundle", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "0b07f3820370aba96e1633993c5c561364f88f30" + "reference": "8ece4fd6e242acbabad4461feae7c52fe1982c48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/0b07f3820370aba96e1633993c5c561364f88f30", - "reference": "0b07f3820370aba96e1633993c5c561364f88f30", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8ece4fd6e242acbabad4461feae7c52fe1982c48", + "reference": "8ece4fd6e242acbabad4461feae7c52fe1982c48", "shasum": "" }, "require": { @@ -11313,7 +11258,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.3.6" + "source": "https://github.com/symfony/security-bundle/tree/v6.3.7" }, "funding": [ { @@ -11329,20 +11274,20 @@ "type": "tidelift" } ], - "time": "2023-10-12T16:11:32+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { "name": "symfony/security-core", - "version": "v6.3.5", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "ec8f24dc1195f46483510892271d01a5202bba70" + "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/ec8f24dc1195f46483510892271d01a5202bba70", - "reference": "ec8f24dc1195f46483510892271d01a5202bba70", + "url": "https://api.github.com/repos/symfony/security-core/zipball/7ceb30fed93f5ea40ccde3173d1f7712527c0d62", + "reference": "7ceb30fed93f5ea40ccde3173d1f7712527c0d62", "shasum": "" }, "require": { @@ -11398,7 +11343,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v6.3.5" + "source": "https://github.com/symfony/security-core/tree/v6.3.7" }, "funding": [ { @@ -11414,7 +11359,7 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:47:23+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/security-csrf", @@ -11574,16 +11519,16 @@ }, { "name": "symfony/serializer", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "8c5fb7144889839751ad9680cf4f183f60f8fbce" + "reference": "641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/8c5fb7144889839751ad9680cf4f183f60f8fbce", - "reference": "8c5fb7144889839751ad9680cf4f183f60f8fbce", + "url": "https://api.github.com/repos/symfony/serializer/zipball/641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9", + "reference": "641472dd3d6dc3c4d0fdd1496ebd1b55c72e43d9", "shasum": "" }, "require": { @@ -11648,7 +11593,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.3.6" + "source": "https://github.com/symfony/serializer/tree/v6.3.7" }, "funding": [ { @@ -11664,7 +11609,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:32:53+00:00" + "time": "2023-10-26T18:15:14+00:00" }, { "name": "symfony/service-contracts", @@ -11966,16 +11911,16 @@ }, { "name": "symfony/translation", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "869b26c7a9d4b8a48afdd77ab36031909c87e3a2" + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/869b26c7a9d4b8a48afdd77ab36031909c87e3a2", - "reference": "869b26c7a9d4b8a48afdd77ab36031909c87e3a2", + "url": "https://api.github.com/repos/symfony/translation/zipball/30212e7c87dcb79c83f6362b00bde0e0b1213499", + "reference": "30212e7c87dcb79c83f6362b00bde0e0b1213499", "shasum": "" }, "require": { @@ -12041,7 +11986,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.3.6" + "source": "https://github.com/symfony/translation/tree/v6.3.7" }, "funding": [ { @@ -12057,7 +12002,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:32:53+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/translation-contracts", @@ -12578,16 +12523,16 @@ }, { "name": "symfony/validator", - "version": "v6.3.6", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "254290aa13d591883eb36327cbe80689cee38ffb" + "reference": "9cc736663fa5839b9710ac2c303bb0b951014fc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/254290aa13d591883eb36327cbe80689cee38ffb", - "reference": "254290aa13d591883eb36327cbe80689cee38ffb", + "url": "https://api.github.com/repos/symfony/validator/zipball/9cc736663fa5839b9710ac2c303bb0b951014fc1", + "reference": "9cc736663fa5839b9710ac2c303bb0b951014fc1", "shasum": "" }, "require": { @@ -12654,7 +12599,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.3.6" + "source": "https://github.com/symfony/validator/tree/v6.3.7" }, "funding": [ { @@ -12670,7 +12615,7 @@ "type": "tidelift" } ], - "time": "2023-10-20T16:20:17+00:00" + "time": "2023-10-28T23:11:45+00:00" }, { "name": "symfony/var-dumper", @@ -12986,16 +12931,16 @@ }, { "name": "symfony/yaml", - "version": "v6.3.3", + "version": "v6.3.7", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add" + "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e23292e8c07c85b971b44c1c4b87af52133e2add", - "reference": "e23292e8c07c85b971b44c1c4b87af52133e2add", + "url": "https://api.github.com/repos/symfony/yaml/zipball/9758b6c69d179936435d0ffb577c3708d57e38a8", + "reference": "9758b6c69d179936435d0ffb577c3708d57e38a8", "shasum": "" }, "require": { @@ -13038,7 +12983,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v6.3.3" + "source": "https://github.com/symfony/yaml/tree/v6.3.7" }, "funding": [ { @@ -13054,7 +12999,7 @@ "type": "tidelift" } ], - "time": "2023-07-31T07:08:24+00:00" + "time": "2023-10-28T23:31:00+00:00" }, { "name": "tecnickcom/tc-lib-barcode", @@ -15482,16 +15427,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.39", + "version": "1.10.40", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4" + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d9dedb0413f678b4d03cbc2279a48f91592c97c4", - "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/93c84b5bf7669920d823631e39904d69b9c7dc5d", + "reference": "93c84b5bf7669920d823631e39904d69b9c7dc5d", "shasum": "" }, "require": { @@ -15540,20 +15485,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T15:46:26+00:00" + "time": "2023-10-30T14:48:31+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "1.3.43", + "version": "1.3.45", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "c5015035755ad2d5013bd6bf98ff423ca6150822" + "reference": "90e60ba9dbea4b29c7b87026a29e91ac0a02674e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/c5015035755ad2d5013bd6bf98ff423ca6150822", - "reference": "c5015035755ad2d5013bd6bf98ff423ca6150822", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/90e60ba9dbea4b29c7b87026a29e91ac0a02674e", + "reference": "90e60ba9dbea4b29c7b87026a29e91ac0a02674e", "shasum": "" }, "require": { @@ -15608,27 +15553,27 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.43" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/1.3.45" }, - "time": "2023-09-01T15:01:13+00:00" + "time": "2023-10-29T08:18:22+00:00" }, { "name": "phpstan/phpstan-strict-rules", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6" + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/b21c03d4f6f3a446e4311155f4be9d65048218e6", - "reference": "b21c03d4f6f3a446e4311155f4be9d65048218e6", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/7a50e9662ee9f3942e4aaaf3d603653f60282542", + "reference": "7a50e9662ee9f3942e4aaaf3d603653f60282542", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.10.34" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -15657,22 +15602,22 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.1" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.5.2" }, - "time": "2023-03-29T14:47:40+00:00" + "time": "2023-10-30T14:35:06+00:00" }, { "name": "phpstan/phpstan-symfony", - "version": "1.3.4", + "version": "1.3.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-symfony.git", - "reference": "383855999db6a7d65d0bf580ce2762e17188c2a5" + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/383855999db6a7d65d0bf580ce2762e17188c2a5", - "reference": "383855999db6a7d65d0bf580ce2762e17188c2a5", + "url": "https://api.github.com/repos/phpstan/phpstan-symfony/zipball/27ff6339f83796a7e0dd963cf445cd3c456fc620", + "reference": "27ff6339f83796a7e0dd963cf445cd3c456fc620", "shasum": "" }, "require": { @@ -15729,9 +15674,9 @@ "description": "Symfony Framework extensions and rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-symfony/issues", - "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.4" + "source": "https://github.com/phpstan/phpstan-symfony/tree/1.3.5" }, - "time": "2023-09-29T14:10:11+00:00" + "time": "2023-10-30T14:52:15+00:00" }, { "name": "phpunit/php-code-coverage", @@ -16282,12 +16227,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "66671a636e514920046c1028f8c837c1d5a54873" + "reference": "705b497810d1620aaac8779e6b82ef3d266fc6c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/66671a636e514920046c1028f8c837c1d5a54873", - "reference": "66671a636e514920046c1028f8c837c1d5a54873", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/705b497810d1620aaac8779e6b82ef3d266fc6c1", + "reference": "705b497810d1620aaac8779e6b82ef3d266fc6c1", "shasum": "" }, "conflict": { @@ -16331,7 +16276,7 @@ "barrelstrength/sprout-forms": "<3.9", "barryvdh/laravel-translation-manager": "<0.6.2", "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<4.7.5", + "baserproject/basercms": "<4.8", "bassjobsen/bootstrap-3-typeahead": ">4.0.2", "bigfork/silverstripe-form-capture": ">=3,<3.1.1", "billz/raspap-webgui": "<=2.9.2", @@ -16363,7 +16308,7 @@ "cockpit-hq/cockpit": "<=2.6.3", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<4.3.5", + "codeigniter4/framework": "<=4.4.2", "codeigniter4/shield": "<1.0.0.0-beta4", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4", @@ -16399,7 +16344,7 @@ "doctrine/mongodb-odm": "<1.0.2", "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<18", + "dolibarr/dolibarr": "<18.0.2", "dompdf/dompdf": "<2.0.2|==2.0.2", "drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8", "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", @@ -16424,12 +16369,13 @@ "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.26", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.30", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", @@ -16450,6 +16396,7 @@ "fluidtypo3/vhs": "<5.1.1", "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": "<3.6.1", "fooman/tcpdf": "<6.2.22", "forkcms/forkcms": "<5.11.1", "fossar/tcpdf-parser": "<6.2.22", @@ -16494,9 +16441,10 @@ "httpsoft/http-message": "<1.0.12", "hyn/multi-tenant": ">=5.6,<5.7.2", "ibexa/admin-ui": ">=4.2,<4.2.3", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4", "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", "ibexa/post-install": "<=1.0.4", + "ibexa/solr": ">=4.5,<4.5.4", "ibexa/user": ">=4,<4.4.3", "icecoder/icecoder": "<=8.1", "idno/known": "<=1.3.1", @@ -16533,7 +16481,7 @@ "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", "khodakhah/nodcms": "<=3", - "kimai/kimai": "<1.1", + "kimai/kimai": "<=2.1", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", "knplabs/knp-snappy": "<=1.4.2", @@ -16578,7 +16526,7 @@ "melisplatform/melis-front": "<5.0.1", "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", "mgallegos/laravel-jqgrid": "<=1.3", - "microweber/microweber": "<=1.3.4", + "microweber/microweber": "<2", "miniorange/miniorange-saml": "<1.4.3", "mittwald/typo3_forum": "<1.2.1", "mobiledetect/mobiledetectlib": "<2.8.32", @@ -16658,12 +16606,12 @@ "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.1.2", + "pimcore/admin-ui-classic-bundle": "<1.2", "pimcore/customer-management-framework-bundle": "<3.4.2", "pimcore/data-hub": "<1.2.4", "pimcore/demo": "<10.3", "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<10.6.8", + "pimcore/pimcore": "<11.1", "pixelfed/pixelfed": "<=0.11.4", "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", @@ -16813,7 +16761,7 @@ "thelia/thelia": ">=2.1,<2.1.3", "theonedemon/phpwhois": "<=4.2.5", "thinkcmf/thinkcmf": "<=5.1.7", - "thorsten/phpmyfaq": "<3.2.0.0-beta2", + "thorsten/phpmyfaq": "<3.2.2", "tikiwiki/tiki-manager": "<=17.1", "tinymce/tinymce": "<5.10.8|>=6,<6.7.1", "tinymighty/wiki-seo": "<1.2.2", @@ -16960,7 +16908,7 @@ "type": "tidelift" } ], - "time": "2023-10-24T03:04:20+00:00" + "time": "2023-11-03T20:04:24+00:00" }, { "name": "sebastian/cli-parser", diff --git a/yarn.lock b/yarn.lock index 729353ef..a1350e5d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1769,9 +1769,9 @@ "@types/json-schema" "*" "@types/estree@*", "@types/estree@^1.0.0": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.3.tgz#2be19e759a3dd18c79f9f436bd7363556c1a73dd" - integrity sha512-CS2rOaoQ/eAgAfcTfq6amKG7bsN+EMcgGY4FAFQdvSj2y1ixvOZTUA9mOtCai7E1SYu283XNw7urKK30nP3wkQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.4.tgz#d9748f5742171b26218516cf1828b8eafaf8a9fa" + integrity sha512-2JwWnHK9H+wUZNorf2Zr6ves96WHoWDJIftkcxPKsS7Djta6Zu519LarhRNljPXkpsZR2ZMwNCPeW7omW07BJw== "@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33": version "4.17.39" @@ -1852,12 +1852,19 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== -"@types/node@*": - version "20.8.8" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.8.tgz#adee050b422061ad5255fc38ff71b2bb96ea2a0e" - integrity sha512-YRsdVxq6OaLfmR9Hy816IMp33xOBjfyOgUd77ehqg96CFywxAPbDbXvAsuN2KVg2HOT8Eh6uAfU+l4WffwPVrQ== +"@types/node-forge@^1.3.0": + version "1.3.8" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.8.tgz#044ad98354ff309a031a55a40ad122f3be1ac2bb" + integrity sha512-vGXshY9vim9CJjrpcS5raqSjEfKlJcWy2HNdgUasR66fAnVEYarrf1ULV4nfvpC1nZq/moA9qyqBcu83x+Jlrg== dependencies: - undici-types "~5.25.1" + "@types/node" "*" + +"@types/node@*": + version "20.8.10" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.8.10.tgz#a5448b895c753ae929c26ce85cab557c6d4a365e" + integrity sha512-TlgT8JntpcbmKUFzjhsyhGfP2fsiz1Mv56im6enJ905xG1DAYesxJaeSbGqQmAw8OWPdhyJGhGSQGKRNJ45u9w== + dependencies: + undici-types "~5.26.4" "@types/parse-json@^4.0.0": version "4.0.1" @@ -2155,9 +2162,9 @@ acorn-walk@^7.0.0, acorn-walk@^7.1.1: integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== acorn-walk@^8.0.0: - version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" - integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + version "8.3.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.0.tgz#2097665af50fd0cf7a2dfccd2b9368964e66540f" + integrity sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA== acorn@^7.0.0, acorn@^7.1.1: version "7.4.1" @@ -2165,9 +2172,9 @@ acorn@^7.0.0, acorn@^7.1.1: integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== acorn@^8.0.4, acorn@^8.0.5, acorn@^8.2.4, acorn@^8.7.1, acorn@^8.8.2: - version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" - integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + version "8.11.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b" + integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w== adjust-sourcemap-loader@^4.0.0: version "4.0.0" @@ -2590,9 +2597,9 @@ caniuse-api@^3.0.0: lodash.uniq "^4.5.0" caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001541: - version "1.0.30001554" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001554.tgz#ba80d88dff9acbc0cd4b7535fc30e0191c5e2e2a" - integrity sha512-A2E3U//MBwbJVzebddm1YfNp7Nud5Ip+IPn4BozBmn4KqVX7AvluoIDFWjsv5OkGnKUXQVmMSoMKLa3ScCblcQ== + version "1.0.30001561" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz#752f21f56f96f1b1a52e97aae98c57c562d5d9da" + integrity sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw== chalk@^2.3.2, chalk@^2.4.2: version "2.4.2" @@ -2874,16 +2881,16 @@ cookie@0.5.0: integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw== core-js-compat@^3.31.0, core-js-compat@^3.33.1: - version "3.33.1" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.1.tgz#debe80464107d75419e00c2ee29f35982118ff84" - integrity sha512-6pYKNOgD/j/bkC5xS5IIg6bncid3rfrI42oBH1SQJbsmYPKF7rhzcFzYCcxYMmNQQ0rCEB8WqpW7QHndOggaeQ== + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.33.2.tgz#3ea4563bfd015ad4e4b52442865b02c62aba5085" + integrity sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw== dependencies: browserslist "^4.22.1" core-js@^3.23.0: - version "3.33.1" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.1.tgz#ef3766cfa382482d0a2c2bc5cb52c6d88805da52" - integrity sha512-qVSq3s+d4+GsqN0teRCJtM6tdEEXyWxjzbhVrCHmBS5ZTM0FS2MOS0D13dUXAWDUN6a+lHI/N1hF9Ytz6iLl9Q== + version "3.33.2" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.33.2.tgz#312bbf6996a3a517c04c99b9909cdd27138d1ceb" + integrity sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ== core-util-is@~1.0.0: version "1.0.3" @@ -3169,11 +3176,11 @@ data-urls@^2.0.0: whatwg-url "^8.0.0" datatables.net-bs5@>=1.13.4, datatables.net-bs5@^1.10.20: - version "1.13.6" - resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.6.tgz#33bf10c0844bb08e17327d841089c1f277f796ff" - integrity sha512-lXroZoXhLhDulp8gvU7y7wBherg38SbLMGXcHwbnj+XXh4Hvy+d67zSPYbrVI3YiRwYq+aCx15G5qmMj7KjYQg== + version "1.13.7" + resolved "https://registry.yarnpkg.com/datatables.net-bs5/-/datatables.net-bs5-1.13.7.tgz#21031683f963c631b3ea7c308b9bcf0044076795" + integrity sha512-saPdg9YEUlbnRn8BuMvLSUhcNMk3cMaLUxmeGOdoOvtSqTjWCp3WYLkSOXuW7SOsdkC9eQnC+DrFnHyMba7LOA== dependencies: - datatables.net ">=1.13.4" + datatables.net "1.13.7" jquery ">=1.7" datatables.net-buttons-bs5@^2.2.2: @@ -3261,10 +3268,10 @@ datatables.net-select@>=1.6.2: datatables.net ">=1.13.4" jquery ">=1.7" -datatables.net@>=1.13.4: - version "1.13.6" - resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.6.tgz#6e282adbbb2732e8df495611b8bb54e19f7a943e" - integrity sha512-rHNcnW+yEP9me82/KmRcid5eKrqPqW3+I/p1TwqCW3c/7GRYYkDyF6aJQOQ9DNS/pw+nyr4BVpjyJ3yoZXiFPg== +datatables.net@1.13.7, datatables.net@>=1.13.4: + version "1.13.7" + resolved "https://registry.yarnpkg.com/datatables.net/-/datatables.net-1.13.7.tgz#8b130845a59ab16fedd760ecf4b96d96418aca1b" + integrity sha512-lbmcCSrMU8VTaGwgCxWs/jbP8NVJlzXaUkK3SiiZY7tTjRp7XJw4InlOU+XUVZ4i4B2GBxue02/P5iVto1CGDg== dependencies: jquery ">=1.7" @@ -3507,9 +3514,9 @@ ee-first@1.1.1: integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== electron-to-chromium@^1.4.535: - version "1.4.566" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.566.tgz#5c5ba1d2dc895f4887043f0cc7e61798c7e5919a" - integrity sha512-mv+fAy27uOmTVlUULy15U3DVJ+jg+8iyKH1bpwboCRhtDC69GKf1PPTZvEIhCyDr81RFqfxZJYrbgp933a1vtg== + version "1.4.576" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.576.tgz#0c6940fdc0d60f7e34bd742b29d8fa847c9294d1" + integrity sha512-yXsZyXJfAqzWk1WKryr0Wl0MN2D47xodPvEEwlVePBnhU5E7raevLQR+E6b9JAD3GfL/7MbAL9ZtWQQPcLx7wA== emoji-regex@^8.0.0: version "8.0.0" @@ -3550,9 +3557,9 @@ entities@^4.2.0: integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.3: - version "7.10.0" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.10.0.tgz#55146e3909cc5fe63c22da63fb15b05aeac35b13" - integrity sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw== + version "7.11.0" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.0.tgz#c3793f44284a55ff8c82faf1ffd91bc6478ea01f" + integrity sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg== error-ex@^1.3.1: version "1.3.2" @@ -4909,9 +4916,9 @@ marked@4.0.12: integrity sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ== marked@^9.1.0: - version "9.1.2" - resolved "https://registry.yarnpkg.com/marked/-/marked-9.1.2.tgz#a54ca772d2b5a43de7d8ed40111354b4b7985527" - integrity sha512-qoKMJqK0w6vkLk8+KnKZAH6neUZSNaQqVZ/h2yZ9S7CbLuFHyS2viB0jnqcWF9UKjwsAbMrQtnQhdmdvOVOw9w== + version "9.1.5" + resolved "https://registry.yarnpkg.com/marked/-/marked-9.1.5.tgz#fcada4702ea64a5c05a4ff0e0639628aac8a1e5f" + integrity sha512-14QG3shv8Kg/xc0Yh6TNkMj90wXH9mmldi5941I2OevfJ/FQAFLEwtwU2/FfgSAOMlWHrEukWSGQf8MiVYNG2A== mdn-data@2.0.14: version "2.0.14" @@ -6010,9 +6017,9 @@ psl@^1.1.33: integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag== punycode@^2.1.0, punycode@^2.1.1: - version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" - integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== qs@6.11.0: version "6.11.0" @@ -6359,10 +6366,11 @@ select@^1.1.2: integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA== selfsigned@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.1.1.tgz#18a7613d714c0cd3385c48af0075abf3f266af61" - integrity sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ== + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== dependencies: + "@types/node-forge" "^1.3.0" node-forge "^1" semver@^6.0.0, semver@^6.3.1: @@ -6850,9 +6858,9 @@ terser-webpack-plugin@^5.3.0, terser-webpack-plugin@^5.3.7: terser "^5.16.8" terser@^5.16.8, terser@^5.3.4: - version "5.22.0" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.22.0.tgz#4f18103f84c5c9437aafb7a14918273310a8a49d" - integrity sha512-hHZVLgRA2z4NWcN6aS5rQDc+7Dcy58HOf2zbYwmFcQ+ua3h6eEFf5lIDKTzbWwlazPyOZsFQO8V80/IjVNExEw== + version "5.24.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.24.0.tgz#4ae50302977bca4831ccc7b4fef63a3c04228364" + integrity sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw== dependencies: "@jridgewell/source-map" "^0.3.3" acorn "^8.8.2" @@ -6920,9 +6928,9 @@ toidentifier@1.0.1: integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tom-select@^2.1.0: - version "2.2.3" - resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.3.tgz#858acca2dcec1dbe1a94a3f4c944384e166a4f40" - integrity sha512-VMhRdFlugLGdnNZsP5r8sHKtyvWekIbtr53uoKONMzM+JSBWgy5pV9F+iZ2LTEbzIQI0efIwZ7I6h+wzZoM/zQ== + version "2.3.1" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.3.1.tgz#df338d9082874cd0bceb3bee87ed0184447c47f1" + integrity sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg== dependencies: "@orchidjs/sifter" "^1.0.3" "@orchidjs/unicode-variants" "^1.0.4" @@ -7012,10 +7020,10 @@ typescript@^4.0.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== -undici-types@~5.25.1: - version "5.25.3" - resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.25.3.tgz#e044115914c85f0bcbb229f346ab739f064998c3" - integrity sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA== +undici-types@~5.26.4: + version "5.26.5" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617" + integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA== unicode-canonical-property-names-ecmascript@^2.0.0: version "2.0.0" @@ -7076,9 +7084,9 @@ universalify@^0.2.0: integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== universalify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" - integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" From 5e326bca12ba93f042cbf27e9e4b5cdd318f1303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 5 Nov 2023 21:24:21 +0100 Subject: [PATCH 19/21] Added label placeholders to add a barcode version of the IPN to a label This fixes issue #373 --- .../plugins/PartDBLabel/PartDBLabelUI.js | 3 + .../ckeditor/plugins/PartDBLabel/lang/de.js | 3 + .../Barcodes/BarcodeContentGenerator.php | 6 +- .../LabelSystem/Barcodes/BarcodeHelper.php | 96 +++++++++++++++++++ ...enerator.php => LabelBarcodeGenerator.php} | 70 +++++--------- .../LabelSystem/LabelHTMLGenerator.php | 2 +- .../PlaceholderProviders/BarcodeProvider.php | 40 +++++++- .../Barcodes/BarcodeHelperTest.php | 68 +++++++++++++ ...Test.php => LabelBarcodeGeneratorTest.php} | 15 ++- 9 files changed, 243 insertions(+), 60 deletions(-) create mode 100644 src/Services/LabelSystem/Barcodes/BarcodeHelper.php rename src/Services/LabelSystem/{BarcodeGenerator.php => LabelBarcodeGenerator.php} (64%) create mode 100644 tests/Services/LabelSystem/Barcodes/BarcodeHelperTest.php rename tests/Services/LabelSystem/{BarcodeGeneratorTest.php => LabelBarcodeGeneratorTest.php} (89%) diff --git a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js index 03737dae..aa29e889 100644 --- a/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js +++ b/assets/ckeditor/plugins/PartDBLabel/PartDBLabelUI.js @@ -85,6 +85,9 @@ const PLACEHOLDERS = [ ['[[COMMENT_T]]', 'Comment (plain text)'], ['[[LAST_MODIFIED]]', 'Last modified datetime'], ['[[CREATION_DATE]]', 'Creation datetime'], + ['[[IPN_BARCODE_QR]]', 'IPN as QR code'], + ['[[IPN_BARCODE_C128]]', 'IPN as Code 128 barcode'], + ['[[IPN_BARCODE_C39]]', 'IPN as Code 39 barcode'], ] }, { diff --git a/assets/ckeditor/plugins/PartDBLabel/lang/de.js b/assets/ckeditor/plugins/PartDBLabel/lang/de.js index 53007a0a..2220cc0b 100644 --- a/assets/ckeditor/plugins/PartDBLabel/lang/de.js +++ b/assets/ckeditor/plugins/PartDBLabel/lang/de.js @@ -48,6 +48,9 @@ Object.assign( window.CKEDITOR_TRANSLATIONS[ 'de' ].dictionary, { 'Comment (plain text)': 'Kommentar (Nur-Text)', 'Last modified datetime': 'Zuletzt geändert', 'Creation datetime': 'Erstellt', + 'IPN as QR code': 'IPN als QR Code', + 'IPN as Code 128 barcode': 'IPN als Code 128 Barcode', + 'IPN as Code 39 barcode': 'IPN als Code 39 Barcode', 'Lot ID': 'Lot ID', 'Lot name': 'Lot Name', diff --git a/src/Services/LabelSystem/Barcodes/BarcodeContentGenerator.php b/src/Services/LabelSystem/Barcodes/BarcodeContentGenerator.php index 33743e4f..7ceb30dd 100644 --- a/src/Services/LabelSystem/Barcodes/BarcodeContentGenerator.php +++ b/src/Services/LabelSystem/Barcodes/BarcodeContentGenerator.php @@ -76,11 +76,11 @@ final class BarcodeContentGenerator { $type = $this->classToString(self::URL_MAP, $target); - return $this->urlGenerator->generate('scan_qr', [ - 'type' => $type, + return $this->urlGenerator->generate('scan_qr', [ + 'type' => $type, 'id' => $target->getID() ?? 0, '_locale' => null, -], UrlGeneratorInterface::ABSOLUTE_URL); + ], UrlGeneratorInterface::ABSOLUTE_URL); } /** diff --git a/src/Services/LabelSystem/Barcodes/BarcodeHelper.php b/src/Services/LabelSystem/Barcodes/BarcodeHelper.php new file mode 100644 index 00000000..d13da589 --- /dev/null +++ b/src/Services/LabelSystem/Barcodes/BarcodeHelper.php @@ -0,0 +1,96 @@ +. + */ + +declare(strict_types=1); + + +namespace App\Services\LabelSystem\Barcodes; + +use App\Entity\LabelSystem\BarcodeType; +use Com\Tecnick\Barcode\Barcode; + +/** + * This function is used to generate barcodes of various types using arbitrary (text) content. + */ +class BarcodeHelper +{ + + /** + * Generates a barcode with the given content and type and returns it as SVG string. + * @param string $content + * @param BarcodeType $type + * @return string + */ + public function barcodeAsSVG(string $content, BarcodeType $type): string + { + $barcode = new Barcode(); + + $type_str = match ($type) { + BarcodeType::NONE => throw new \InvalidArgumentException('Barcode type must not be NONE! This would make no sense...'), + BarcodeType::QR => 'QRCODE', + BarcodeType::DATAMATRIX => 'DATAMATRIX', + BarcodeType::CODE39 => 'C39', + BarcodeType::CODE93 => 'C93', + BarcodeType::CODE128 => 'C128A', + }; + + return $barcode->getBarcodeObj($type_str, $content)->getSvgCode(); + } + + /** + * Generates a barcode with the given content and type and returns it as HTML image tag. + * @param string $content + * @param BarcodeType $type + * @param string $width Width of the image tag + * @param string|null $alt_text The alt text of the image tag. If null, the content is used. + * @return string + */ + public function barcodeAsHTML(string $content, BarcodeType $type, string $width = '100%', ?string $alt_text = null): string + { + $svg = $this->barcodeAsSVG($content, $type); + $base64 = $this->dataUri($svg, 'image/svg+xml'); + $alt_text = $alt_text ?? $content; + + return ''.$alt_text.''; + } + + /** + * Creates a data URI (RFC 2397). + * Based on the Twig implementation from HTMLExtension + * + * Length validation is not performed on purpose, validation should + * be done before calling this filter. + * + * @return string The generated data URI + */ + private function dataUri(string $data, string $mime): string + { + $repr = 'data:'; + + $repr .= $mime; + if (str_starts_with($mime, 'text/')) { + $repr .= ','.rawurlencode($data); + } else { + $repr .= ';base64,'.base64_encode($data); + } + + return $repr; + } +} \ No newline at end of file diff --git a/src/Services/LabelSystem/BarcodeGenerator.php b/src/Services/LabelSystem/LabelBarcodeGenerator.php similarity index 64% rename from src/Services/LabelSystem/BarcodeGenerator.php rename to src/Services/LabelSystem/LabelBarcodeGenerator.php index f955955a..ea0d8f44 100644 --- a/src/Services/LabelSystem/BarcodeGenerator.php +++ b/src/Services/LabelSystem/LabelBarcodeGenerator.php @@ -46,67 +46,47 @@ use App\Entity\Base\AbstractStructuralDBElement; use App\Entity\LabelSystem\BarcodeType; use App\Entity\LabelSystem\LabelOptions; use App\Services\LabelSystem\Barcodes\BarcodeContentGenerator; +use App\Services\LabelSystem\Barcodes\BarcodeHelper; use Com\Tecnick\Barcode\Barcode; use InvalidArgumentException; /** * @see \App\Tests\Services\LabelSystem\BarcodeGeneratorTest */ -final class BarcodeGenerator +final class LabelBarcodeGenerator { - public function __construct(private readonly BarcodeContentGenerator $barcodeContentGenerator) + public function __construct(private readonly BarcodeContentGenerator $barcodeContentGenerator, private readonly BarcodeHelper $barcodeHelper) { } - public function generateHTMLBarcode(LabelOptions $options, object $target): ?string - { - $svg = $this->generateSVG($options, $target); - $base64 = $this->dataUri($svg, 'image/svg+xml'); - return ''. $this->getContent($options, $target) . ''; - } - - /** - * Creates a data URI (RFC 2397). - * Based on the Twig implementaion from HTMLExtension - * - * Length validation is not performed on purpose, validation should - * be done before calling this filter. - * - * @return string The generated data URI + /** + * Generate the barcode for the given label as HTML image tag. + * @param LabelOptions $options + * @param AbstractDBElement $target + * @return string|null */ - private function dataUri(string $data, string $mime): string + public function generateHTMLBarcode(LabelOptions $options, AbstractDBElement $target): ?string { - $repr = 'data:'; - - $repr .= $mime; - if (str_starts_with($mime, 'text/')) { - $repr .= ','.rawurlencode($data); - } else { - $repr .= ';base64,'.base64_encode($data); - } - - return $repr; - } - - public function generateSVG(LabelOptions $options, object $target): ?string - { - $barcode = new Barcode(); - - $type = match ($options->getBarcodeType()) { - BarcodeType::NONE => null, - BarcodeType::QR => 'QRCODE', - BarcodeType::DATAMATRIX => 'DATAMATRIX', - BarcodeType::CODE39 => 'C39', - BarcodeType::CODE93 => 'C93', - BarcodeType::CODE128 => 'C128A', - }; - - if ($type === null) { + if ($options->getBarcodeType() === BarcodeType::NONE) { return null; } + return $this->barcodeHelper->barcodeAsHTML($this->getContent($options, $target), $options->getBarcodeType()); + } - return $barcode->getBarcodeObj($type, $this->getContent($options, $target))->getSvgCode(); + /** + * Generate the barcode for the given label as SVG string. + * @param LabelOptions $options + * @param AbstractDBElement $target + * @return string|null + */ + public function generateSVG(LabelOptions $options, AbstractDBElement $target): ?string + { + if ($options->getBarcodeType() === BarcodeType::NONE) { + return null; + } + + return $this->barcodeHelper->barcodeAsSVG($this->getContent($options, $target), $options->getBarcodeType()); } public function getContent(LabelOptions $options, AbstractDBElement $target): ?string diff --git a/src/Services/LabelSystem/LabelHTMLGenerator.php b/src/Services/LabelSystem/LabelHTMLGenerator.php index 7b6defa6..b4184646 100644 --- a/src/Services/LabelSystem/LabelHTMLGenerator.php +++ b/src/Services/LabelSystem/LabelHTMLGenerator.php @@ -53,7 +53,7 @@ use Twig\Error\Error; final class LabelHTMLGenerator { - public function __construct(private readonly ElementTypeNameGenerator $elementTypeNameGenerator, private readonly LabelTextReplacer $replacer, private readonly Environment $twig, private readonly BarcodeGenerator $barcodeGenerator, private readonly SandboxedTwigProvider $sandboxedTwigProvider, private readonly Security $security, private readonly string $partdb_title) + public function __construct(private readonly ElementTypeNameGenerator $elementTypeNameGenerator, private readonly LabelTextReplacer $replacer, private readonly Environment $twig, private readonly LabelBarcodeGenerator $barcodeGenerator, private readonly SandboxedTwigProvider $sandboxedTwigProvider, private readonly Security $security, private readonly string $partdb_title) { } diff --git a/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php index 11824054..80685e86 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php @@ -24,12 +24,18 @@ namespace App\Services\LabelSystem\PlaceholderProviders; use App\Entity\LabelSystem\BarcodeType; use App\Entity\LabelSystem\LabelOptions; -use App\Services\LabelSystem\BarcodeGenerator; +use App\Entity\Parts\Part; +use App\Entity\Parts\PartLot; +use App\Services\LabelSystem\Barcodes\BarcodeHelper; +use App\Services\LabelSystem\LabelBarcodeGenerator; use App\Services\LabelSystem\Barcodes\BarcodeContentGenerator; +use Com\Tecnick\Barcode\Exception; final class BarcodeProvider implements PlaceholderProviderInterface { - public function __construct(private readonly BarcodeGenerator $barcodeGenerator, private readonly BarcodeContentGenerator $barcodeContentGenerator) + public function __construct(private readonly LabelBarcodeGenerator $barcodeGenerator, + private readonly BarcodeContentGenerator $barcodeContentGenerator, + private readonly BarcodeHelper $barcodeHelper) { } @@ -69,6 +75,36 @@ final class BarcodeProvider implements PlaceholderProviderInterface return $this->barcodeGenerator->generateHTMLBarcode($label_options, $label_target); } + if ($label_target instanceof Part || $label_target instanceof PartLot) { + if ($label_target instanceof PartLot) { + $label_target = $label_target->getPart(); + } + + if ($label_target === null || $label_target->getIPN() === null || $label_target->getIPN() === '') { + //Replace with empty result, if no IPN is set + return ''; + } + + try { + //Add placeholders for the IPN barcode + if ('[[IPN_BARCODE_C39]]' === $placeholder) { + return $this->barcodeHelper->barcodeAsHTML($label_target->getIPN(), BarcodeType::CODE39); + } + if ('[[IPN_BARCODE_C128]]' === $placeholder) { + return $this->barcodeHelper->barcodeAsHTML($label_target->getIPN(), BarcodeType::CODE128); + } + if ('[[IPN_BARCODE_QR]]' === $placeholder) { + return $this->barcodeHelper->barcodeAsHTML($label_target->getIPN(), BarcodeType::QR); + } + } catch (Exception $e) { + //If an error occurs, output it + return 'IPN Barcode ERROR!: '.$e->getMessage(); + } + } + + + + return null; } } diff --git a/tests/Services/LabelSystem/Barcodes/BarcodeHelperTest.php b/tests/Services/LabelSystem/Barcodes/BarcodeHelperTest.php new file mode 100644 index 00000000..e0639427 --- /dev/null +++ b/tests/Services/LabelSystem/Barcodes/BarcodeHelperTest.php @@ -0,0 +1,68 @@ +. + */ + +namespace App\Tests\Services\LabelSystem\Barcodes; + +use App\Entity\LabelSystem\BarcodeType; +use App\Services\LabelSystem\Barcodes\BarcodeHelper; +use PHPUnit\Framework\TestCase; +use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; + +class BarcodeHelperTest extends WebTestCase +{ + + protected ?BarcodeHelper $service = null; + + protected function setUp(): void + { + self::bootKernel(); + $this->service = self::getContainer()->get(BarcodeHelper::class); + } + + public function testBarcodeAsHTML(): void + { + $html = $this->service->barcodeAsHTML('Test', BarcodeType::QR); + $this->assertStringStartsWith('assertStringContainsString('alt="Test"', $html); + } + + public function testBarcodeAsSVG(): void + { + //Test that all barcodes types are supported + foreach (BarcodeType::cases() as $type) { + //Skip NONE type + if (BarcodeType::NONE === $type) { + continue; + } + + $svg = $this->service->barcodeAsSVG('1234', $type); + + $this->assertStringContainsStringIgnoringCase('SVG', $svg); + } + } + + public function testBarcodeAsSVGNoneType(): void + { + //On NONE type, service must throw an exception. + $this->expectException(\InvalidArgumentException::class); + + $this->service->barcodeAsSVG('test', BarcodeType::NONE); + } +} diff --git a/tests/Services/LabelSystem/BarcodeGeneratorTest.php b/tests/Services/LabelSystem/LabelBarcodeGeneratorTest.php similarity index 89% rename from tests/Services/LabelSystem/BarcodeGeneratorTest.php rename to tests/Services/LabelSystem/LabelBarcodeGeneratorTest.php index 0677b48e..4afdd9d2 100644 --- a/tests/Services/LabelSystem/BarcodeGeneratorTest.php +++ b/tests/Services/LabelSystem/LabelBarcodeGeneratorTest.php @@ -44,20 +44,17 @@ namespace App\Tests\Services\LabelSystem; use App\Entity\LabelSystem\BarcodeType; use App\Entity\LabelSystem\LabelOptions; use App\Entity\Parts\Part; -use App\Services\LabelSystem\BarcodeGenerator; +use App\Services\LabelSystem\LabelBarcodeGenerator; use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; -final class BarcodeGeneratorTest extends WebTestCase +final class LabelBarcodeGeneratorTest extends WebTestCase { - /** - * @var BarcodeGenerator - */ - protected $services; + protected ?LabelBarcodeGenerator $service = null; protected function setUp(): void { self::bootKernel(); - $this->services = self::getContainer()->get(BarcodeGenerator::class); + $this->service = self::getContainer()->get(LabelBarcodeGenerator::class); } public function testGetContent(): void @@ -69,7 +66,7 @@ final class BarcodeGeneratorTest extends WebTestCase foreach (BarcodeType::cases() as $type) { $options = new LabelOptions(); $options->setBarcodeType($type); - $content = $this->services->generateSVG($options, $part); + $content = $this->service->generateSVG($options, $part); //When type is none, service must return null. if (BarcodeType::NONE === $type) { @@ -89,7 +86,7 @@ final class BarcodeGeneratorTest extends WebTestCase foreach (BarcodeType::cases() as $type) { $options = new LabelOptions(); $options->setBarcodeType($type); - $svg = $this->services->generateSVG($options, $part); + $svg = $this->service->generateSVG($options, $part); //When type is none, service must return null. if (BarcodeType::NONE === $type) { From cf113207891e39ec63fe9b06b9d8a6e2f847fba9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 5 Nov 2023 21:32:45 +0100 Subject: [PATCH 20/21] Keep query parameters when switching language via navbar --- templates/_turbo_control.html.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/_turbo_control.html.twig b/templates/_turbo_control.html.twig index 35140f62..252e644d 100644 --- a/templates/_turbo_control.html.twig +++ b/templates/_turbo_control.html.twig @@ -23,7 +23,7 @@ \ No newline at end of file From 9732b71f85cc40eacc892794416353df54fd7fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sun, 5 Nov 2023 21:42:39 +0100 Subject: [PATCH 21/21] Fixed other placeholders besides the IPN Barcodes --- phpstan.dist.neon | 2 +- .../LabelSystem/PlaceholderProviders/BarcodeProvider.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/phpstan.dist.neon b/phpstan.dist.neon index b2ae4824..646d29e6 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -26,7 +26,7 @@ parameters: checkUninitializedProperties: true - checkFunctionNameCase: true + checkFunctionNameCase: false checkAlwaysTrueInstanceof: false checkAlwaysTrueCheckTypeFunctionCall: false diff --git a/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php index 80685e86..dd70177f 100644 --- a/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php +++ b/src/Services/LabelSystem/PlaceholderProviders/BarcodeProvider.php @@ -75,7 +75,8 @@ final class BarcodeProvider implements PlaceholderProviderInterface return $this->barcodeGenerator->generateHTMLBarcode($label_options, $label_target); } - if ($label_target instanceof Part || $label_target instanceof PartLot) { + if (($label_target instanceof Part || $label_target instanceof PartLot) + && str_starts_with($placeholder, '[[IPN_BARCODE_')) { if ($label_target instanceof PartLot) { $label_target = $label_target->getPart(); }