diff --git a/.env b/.env index cc72583a4..582f46be8 100644 --- a/.env +++ b/.env @@ -49,3 +49,9 @@ AWS_SECRET=@@not-a-real-secret ###> draw/entity-migrator ### ENTITY_MIGRATOR_LOCK_DSN=flock ###< draw/entity-migrator ### + +###> symfony/lock ### +# Choose one of the stores below +# postgresql+advisory://db_user:db_password@localhost/db_name +LOCK_DSN=flock +###< symfony/lock ### diff --git a/app/src/Controller/Api/UsersController.php b/app/src/Controller/Api/UsersController.php index 6b20f4249..2cac9d80e 100644 --- a/app/src/Controller/Api/UsersController.php +++ b/app/src/Controller/Api/UsersController.php @@ -12,12 +12,11 @@ use Draw\Component\OpenApi\Serializer\Serialization; use Draw\DoctrineExtra\ORM\EntityHandler; use Psr\Log\LoggerInterface; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag; use Symfony\Component\Mailer\MailerInterface; use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Security\Http\Attribute\IsGranted; /** * @method user getUser() @@ -97,7 +96,6 @@ public function editAction( #[Route(path: '/users/{id}/tags', methods: ['PUT'])] #[IsGranted('ROLE_ADMIN')] #[OpenApi\Operation(operationId: 'userSetTags')] - #[Entity('target', class: User::class)] public function setTagsAction( User $target, #[RequestBody(type: 'array')] @@ -113,7 +111,6 @@ public function setTagsAction( #[Route(path: '/users/{id}', name: 'user_get', methods: ['GET'])] #[IsGranted('ROLE_ADMIN')] - #[Entity('target', class: User::class)] #[OpenApi\Operation(operationId: 'userGet')] public function getAction(User $target): User { @@ -121,7 +118,6 @@ public function getAction(User $target): User } #[Route(path: '/users/{id}', name: 'user_delete', methods: ['DELETE'])] - #[Entity('target', class: User::class)] #[IsGranted('ROLE_ADMIN')] #[OpenApi\Operation(operationId: 'userDelete')] #[Serialization(statusCode: 204)] @@ -149,7 +145,6 @@ public function listAction(EntityHandler $entityHandler): array * @return void No return value mean email has been sent */ #[Route(path: '/users/{id}/reset-password-email', methods: ['POST'])] - #[Entity('target', class: User::class)] #[OpenApi\Operation(operationId: 'userSendResetPasswordEmail')] public function sendResetPasswordEmail(User $target, MailerInterface $mailer): void { diff --git a/app/src/MessageHandler/NewUserMessageHandler.php b/app/src/MessageHandler/NewUserMessageHandler.php index 6b0054e5c..386b8defd 100644 --- a/app/src/MessageHandler/NewUserMessageHandler.php +++ b/app/src/MessageHandler/NewUserMessageHandler.php @@ -3,18 +3,14 @@ namespace App\MessageHandler; use App\Message\NewUserMessage; -use Symfony\Component\Messenger\Handler\MessageSubscriberInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -class NewUserMessageHandler implements MessageSubscriberInterface +class NewUserMessageHandler { - public static function getHandledMessages(): iterable - { - yield NewUserMessage::class => 'handleNewUserMessage'; - } - /** * Empty method just to prevent error. */ + #[AsMessageHandler] public function handleNewUserMessage(NewUserMessage $message): void { } diff --git a/composer.json b/composer.json index 6180b194d..b01f4a572 100644 --- a/composer.json +++ b/composer.json @@ -17,8 +17,8 @@ "doctrine/orm": "^2.11", "doctrine/persistence": "^3.2", "guzzlehttp/psr7": "^1.8 || ^2.0", - "jms/serializer": "^3.11", - "jms/serializer-bundle": "^4.2", + "jms/serializer": "^3.29.1", + "jms/serializer-bundle": "^5.4.0", "phpdocumentor/reflection-docblock": "^5.2", "phpunit/phpunit": "^9.0 || ^10.0", "psr/http-message": "^1.0", @@ -28,33 +28,32 @@ "sonata-project/admin-bundle": "^4.8", "sonata-project/doctrine-orm-admin-bundle": "^4.2", "sonata-project/form-extensions": "^1.13", - "symfony/browser-kit": "5.4.*", - "symfony/config": "5.4.*", - "symfony/console": "5.4.*", - "symfony/css-selector": "5.4.*", - "symfony/dependency-injection": "5.4.*", - "symfony/doctrine-bridge": "5.4.*", - "symfony/doctrine-messenger": "5.4.*", - "symfony/dom-crawler": "5.4.*", - "symfony/event-dispatcher": "5.4.*", - "symfony/expression-language": "5.4.*", - "symfony/filesystem": "5.4.*", - "symfony/framework-bundle": "5.4.*", - "symfony/http-foundation": "5.4.*", - "symfony/http-kernel": "5.4.*", - "symfony/mailer": "5.4.*", - "symfony/messenger": "5.4.*", - "symfony/process": "5.4.*", - "symfony/property-access": "5.4.*", - "symfony/runtime": "5.4.*", - "symfony/security-core": "5.4.*", - "symfony/security-guard": "5.4.*", - "symfony/security-http": "5.4.*", - "symfony/translation": "5.4.*", - "symfony/twig-bridge": "5.4.*", - "symfony/validator": "5.4.*", - "symfony/workflow": "5.4.*", - "symfony/yaml": "5.4.*", + "symfony/browser-kit": "^6.4.0", + "symfony/config": "^6.4.0", + "symfony/console": "^6.4.0", + "symfony/css-selector": "^6.4.0", + "symfony/dependency-injection": "^6.4.0", + "symfony/doctrine-bridge": "^6.4.0", + "symfony/doctrine-messenger": "^6.4.0", + "symfony/dom-crawler": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0", + "symfony/expression-language": "^6.4.0", + "symfony/filesystem": "^6.4.0", + "symfony/framework-bundle": "^6.4.0", + "symfony/http-foundation": "^6.4.0", + "symfony/http-kernel": "^6.4.0", + "symfony/mailer": "^6.4.0", + "symfony/messenger": "^6.4.0", + "symfony/process": "^6.4.0", + "symfony/property-access": "^6.4.0", + "symfony/runtime": "^6.4.0", + "symfony/security-core": "^6.4.0", + "symfony/security-http": "^6.4.0", + "symfony/translation": "^6.4.0", + "symfony/twig-bridge": "^6.4.0", + "symfony/validator": "^6.4.0", + "symfony/workflow": "^6.4.0", + "symfony/yaml": "^6.4.0", "twig/twig": "^3.3", "friendsofphp/php-cs-fixer": "^3.13", "nesbot/carbon": "^2.0" @@ -66,7 +65,7 @@ "bamarni/composer-bin-plugin": "^1.4", "composer/semver": "^3.2", "doctrine/data-fixtures": "^1.5", - "doctrine/doctrine-fixtures-bundle": "^3.4", + "doctrine/doctrine-fixtures-bundle": "^3.5", "doctrine/doctrine-migrations-bundle": "^3.1", "doctrine/sql-formatter": "^1.1", "firebase/php-jwt": "^6.1", @@ -74,47 +73,46 @@ "nelmio/cors-bundle": "^2.0", "pdeans/http": "^1.1", "pelago/emogrifier": "^6.0", - "scheb/2fa-bundle": "^5.12", - "scheb/2fa-qr-code": "^5.12", - "scheb/2fa-totp": "^5.12", - "sensio/framework-extra-bundle": "^5.6 || ^6.2", + "scheb/2fa-bundle": "^6.0", + "endroid/qr-code": "^4.8", + "scheb/2fa-totp": "^6.0", "sonata-project/admin-bundle": "^4.8", "sonata-project/doctrine-orm-admin-bundle": "^4.2", - "symfony/asset": "5.4.*", - "symfony/cache": "5.4.*", - "symfony/debug-bundle": "5.4.*", - "symfony/dependency-injection": "5.4.*", - "symfony/dotenv": "5.4.*", - "symfony/error-handler": "5.4.x", - "symfony/event-dispatcher": "5.4.*", - "symfony/expression-language": "5.4.*", - "symfony/finder": "5.4.x", + "symfony/asset": "^6.4.0", + "symfony/cache": "^6.4.0", + "symfony/debug-bundle": "^6.4.0", + "symfony/dependency-injection": "^6.4.0", + "symfony/dotenv": "^6.4.0", + "symfony/error-handler": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0", + "symfony/expression-language": "^6.4.0", + "symfony/finder": "^6.4.0", "symfony/flex": "^2.2.4", - "symfony/form": "5.4.*", - "symfony/http-client": "5.4.*", - "symfony/http-client-contracts": "^2.5", - "symfony/lock": "5.4.x", - "symfony/monolog-bundle": "^3.7", - "symfony/password-hasher": "5.4.*", - "symfony/phpunit-bridge": "5.4.*", - "symfony/property-info": "5.4.*", - "symfony/redis-messenger": "5.4.*", - "symfony/routing": "5.4.*", - "symfony/security-bundle": "5.4.*", - "symfony/security-csrf": "5.4.*", - "symfony/serializer": "5.4.*", - "symfony/stopwatch": "5.4.*", - "symfony/string": "5.4.*", + "symfony/form": "^6.4.0", + "symfony/http-client": "^6.4.0", + "symfony/http-client-contracts": "^3.4", + "symfony/lock": "^6.4.0", + "symfony/monolog-bundle": "^3.8", + "symfony/password-hasher": "^6.4.0", + "symfony/phpunit-bridge": "^6.4.0", + "symfony/property-info": "^6.4.0", + "symfony/redis-messenger": "^6.4.0", + "symfony/routing": "^6.4.0", + "symfony/security-bundle": "^6.4.0", + "symfony/security-csrf": "^6.4.0", + "symfony/serializer": "^6.4.0", + "symfony/stopwatch": "^6.4.0", + "symfony/string": "^6.4.0", "symfony/translation-contracts": "^2.5", - "symfony/twig-bundle": "5.4.*", - "symfony/var-dumper": "5.4.*", - "symfony/var-exporter": "5.4.*", - "symfony/web-profiler-bundle": "5.4.*", + "symfony/twig-bundle": "^6.4.0", + "symfony/var-dumper": "^6.4.0", + "symfony/var-exporter": "^6.4.0", + "symfony/web-profiler-bundle": "^6.4.0", "phpstan/extension-installer": "^1.1", "phpstan/phpstan": "^1.7", "phpstan/phpstan-symfony": "^1.2", "phpstan/phpstan-phpunit": "^1.1", - "scheb/2fa-email": "^5.12", + "scheb/2fa-email": "^6.0", "colinodell/psr-testlogger": "^1.1", "cweagans/composer-patches": "^1.7" }, @@ -206,7 +204,7 @@ "symfony": { "id": "01CAD2CSWYZBBNJDXQR6BP23MR", "allow-contrib": true, - "require": "5.4.*" + "require": "^6.4.0" } }, "extra": { diff --git a/composer.lock b/composer.lock index 70b96c0a2..10796aa19 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "87ae648d509c4a0e9b82ba8ee56df3cc", + "content-hash": "abae45aff303ca6069fa0c4445b1678f", "packages": [ { "name": "aws/aws-crt-php", - "version": "v1.2.3", + "version": "v1.2.4", "source": { "type": "git", "url": "https://github.com/awslabs/aws-crt-php.git", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382" + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/5545a4fa310aec39f54279fdacebcce33b3ff382", - "reference": "5545a4fa310aec39f54279fdacebcce33b3ff382", + "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/eb0c6e4e142224a10b08f49ebf87f32611d162b2", + "reference": "eb0c6e4e142224a10b08f49ebf87f32611d162b2", "shasum": "" }, "require": { @@ -56,22 +56,22 @@ ], "support": { "issues": "https://github.com/awslabs/aws-crt-php/issues", - "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.3" + "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.4" }, - "time": "2023-10-16T20:10:06+00:00" + "time": "2023-11-08T00:42:13+00:00" }, { "name": "aws/aws-sdk-php", - "version": "3.283.11", + "version": "3.294.4", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "348b68edcc83062c329cf7540c4c92d061d27d9c" + "reference": "4f59bf50aa445fc3ec0b10648b205dd2465e9bec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/348b68edcc83062c329cf7540c4c92d061d27d9c", - "reference": "348b68edcc83062c329cf7540c4c92d061d27d9c", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/4f59bf50aa445fc3ec0b10648b205dd2465e9bec", + "reference": "4f59bf50aa445fc3ec0b10648b205dd2465e9bec", "shasum": "" }, "require": { @@ -151,9 +151,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.283.11" + "source": "https://github.com/aws/aws-sdk-php/tree/3.294.4" }, - "time": "2023-10-24T18:10:38+00:00" + "time": "2023-12-20T19:21:19+00:00" }, { "name": "brick/math", @@ -210,6 +210,75 @@ ], "time": "2023-01-15T23:15:59+00:00" }, + { + "name": "carbonphp/carbon-doctrine-types", + "version": "2.1.0", + "source": { + "type": "git", + "url": "https://github.com/CarbonPHP/carbon-doctrine-types.git", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CarbonPHP/carbon-doctrine-types/zipball/99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "reference": "99f76ffa36cce3b70a4a6abce41dba15ca2e84cb", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0" + }, + "conflict": { + "doctrine/dbal": "<3.7.0 || >=4.0.0" + }, + "require-dev": { + "doctrine/dbal": "^3.7.0", + "nesbot/carbon": "^2.71.0 || ^3.0.0", + "phpunit/phpunit": "^10.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Carbon\\Doctrine\\": "src/Carbon/Doctrine/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "KyleKatarn", + "email": "kylekatarnls@gmail.com" + } + ], + "description": "Types to use Carbon in Doctrine", + "keywords": [ + "carbon", + "date", + "datetime", + "doctrine", + "time" + ], + "support": { + "issues": "https://github.com/CarbonPHP/carbon-doctrine-types/issues", + "source": "https://github.com/CarbonPHP/carbon-doctrine-types/tree/2.1.0" + }, + "funding": [ + { + "url": "https://github.com/kylekatarnls", + "type": "github" + }, + { + "url": "https://opencollective.com/Carbon", + "type": "open_collective" + }, + { + "url": "https://tidelift.com/funding/github/packagist/nesbot/carbon", + "type": "tidelift" + } + ], + "time": "2023-12-11T17:09:12+00:00" + }, { "name": "composer/pcre", "version": "3.1.1", @@ -776,38 +845,40 @@ }, { "name": "doctrine/data-fixtures", - "version": "1.6.7", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301" + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/ae4e845decbe177348fdbecd04331f4fb96aa301", - "reference": "ae4e845decbe177348fdbecd04331f4fb96aa301", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", + "reference": "bbcb74f2ac6dbe81a14b3c3687d7623490a0448f", "shasum": "" }, "require": { "doctrine/deprecations": "^0.5.3 || ^1.0", - "doctrine/persistence": "^1.3.3 || ^2.0 || ^3.0", - "php": "^7.2 || ^8.0" + "doctrine/persistence": "^2.0|^3.0", + "php": "^7.4 || ^8.0" }, "conflict": { - "doctrine/dbal": "<2.13", - "doctrine/orm": "<2.14", + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "doctrine/dbal": "^2.13 || ^3.0", + "doctrine/annotations": "^1.12 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", - "doctrine/orm": "^2.14", + "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^8.5 || ^9.5 || ^10.0", - "symfony/cache": "^5.0 || ^6.0", - "vimeo/psalm": "^4.10 || ^5.9" + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^9.6.13 || ^10.4.2", + "symfony/cache": "^5.4 || ^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6.3 || ^7", + "vimeo/psalm": "^5.9" }, "suggest": { "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", @@ -838,7 +909,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/1.6.7" + "source": "https://github.com/doctrine/data-fixtures/tree/1.7.0" }, "funding": [ { @@ -854,20 +925,20 @@ "type": "tidelift" } ], - "time": "2023-08-17T21:15:33+00:00" + "time": "2023-11-24T11:18:31+00:00" }, { "name": "doctrine/dbal", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2" + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/5b7bd66c9ff58c04c5474ab85edce442f8081cb2", - "reference": "5b7bd66c9ff58c04c5474ab85edce442f8081cb2", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/0ac3c270590e54910715e9a1a044cc368df282b2", + "reference": "0ac3c270590e54910715e9a1a044cc368df282b2", "shasum": "" }, "require": { @@ -883,7 +954,7 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.1", - "phpstan/phpstan": "1.10.35", + "phpstan/phpstan": "1.10.42", "phpstan/phpstan-strict-rules": "^1.5", "phpunit/phpunit": "9.6.13", "psalm/plugin-phpunit": "0.18.4", @@ -951,7 +1022,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/3.7.1" + "source": "https://github.com/doctrine/dbal/tree/3.7.2" }, "funding": [ { @@ -967,7 +1038,7 @@ "type": "tidelift" } ], - "time": "2023-10-06T05:06:20+00:00" + "time": "2023-11-19T08:06:58+00:00" }, { "name": "doctrine/deprecations", @@ -1018,56 +1089,59 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.10.2", + "version": "2.11.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "f28b1f78de3a2938ff05cfe751233097624cc756" + "reference": "4089f1424b724786c062aea50aae5f773449b94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/f28b1f78de3a2938ff05cfe751233097624cc756", - "reference": "f28b1f78de3a2938ff05cfe751233097624cc756", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/4089f1424b724786c062aea50aae5f773449b94b", + "reference": "4089f1424b724786c062aea50aae5f773449b94b", "shasum": "" }, "require": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^3.6.0", + "doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", "php": "^7.4 || ^8.0", - "symfony/cache": "^5.4 || ^6.0", - "symfony/config": "^5.4 || ^6.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/dependency-injection": "^5.4 || ^6.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7", - "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/doctrine-bridge": "^5.4.19 || ^6.0.7 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" }, "conflict": { "doctrine/annotations": ">=3.0", - "doctrine/orm": "<2.11 || >=3.0", + "doctrine/orm": "<2.14 || >=4.0", "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { "doctrine/annotations": "^1 || ^2", - "doctrine/coding-standard": "^9.0", + "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/orm": "^2.14 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpunit/phpunit": "^9.5.26 || ^10.0", "psalm/plugin-phpunit": "^0.18.4", "psalm/plugin-symfony": "^4", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0", - "symfony/security-bundle": "^5.4 || ^6.0", - "symfony/twig-bridge": "^5.4 || ^6.0", - "symfony/validator": "^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^5.4 || ^6.0", - "symfony/yaml": "^5.4 || ^6.0", + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/string": "^5.4 || ^6.0 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", + "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0", "twig/twig": "^1.34 || ^2.12 || ^3.0", "vimeo/psalm": "^4.30" }, @@ -1114,7 +1188,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.10.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.11.1" }, "funding": [ { @@ -1130,34 +1204,33 @@ "type": "tidelift" } ], - "time": "2023-08-06T09:31:40+00:00" + "time": "2023-11-15T20:01:50+00:00" }, { "name": "doctrine/event-manager", - "version": "1.2.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/750671534e0241a7c50ea5b43f67e23eb5c96f32", + "reference": "750671534e0241a7c50ea5b43f67e23eb5c96f32", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.24" + "doctrine/coding-standard": "^10", + "phpstan/phpstan": "^1.8.8", + "phpunit/phpunit": "^9.5", + "vimeo/psalm": "^4.28" }, "type": "library", "autoload": { @@ -1206,7 +1279,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + "source": "https://github.com/doctrine/event-manager/tree/2.0.0" }, "funding": [ { @@ -1222,7 +1295,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:51:15+00:00" + "time": "2022-10-12T20:59:15+00:00" }, { "name": "doctrine/inflector", @@ -1465,16 +1538,16 @@ }, { "name": "doctrine/orm", - "version": "2.16.2", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0" + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/17500f56eaa930f5cd14d765bc2cd851c7d37cc0", - "reference": "17500f56eaa930f5cd14d765bc2cd851c7d37cc0", + "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", "shasum": "" }, "require": { @@ -1492,7 +1565,7 @@ "ext-ctype": "*", "php": "^7.1 || ^8.0", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^4.2 || ^5.0 || ^6.0", + "symfony/console": "^4.2 || ^5.0 || ^6.0 || ^7.0", "symfony/polyfill-php72": "^1.23", "symfony/polyfill-php80": "^1.16" }, @@ -1503,14 +1576,14 @@ "doctrine/annotations": "^1.13 || ^2", "doctrine/coding-standard": "^9.0.2 || ^12.0", "phpbench/phpbench": "^0.16.10 || ^1.0", - "phpstan/phpstan": "~1.4.10 || 1.10.28", + "phpstan/phpstan": "~1.4.10 || 1.10.35", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^4.4 || ^5.4 || ^6.0", "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.14.1" + "vimeo/psalm": "4.30.0 || 5.15.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1560,9 +1633,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.16.2" + "source": "https://github.com/doctrine/orm/tree/2.17.1" }, - "time": "2023-08-27T18:21:56+00:00" + "time": "2023-11-17T06:25:40+00:00" }, { "name": "doctrine/persistence", @@ -1783,50 +1856,48 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.35.1", + "version": "v3.41.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "ec1ccc264994b6764882669973ca435cf05bab08" + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/ec1ccc264994b6764882669973ca435cf05bab08", - "reference": "ec1ccc264994b6764882669973ca435cf05bab08", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", + "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", "shasum": "" }, "require": { - "composer/semver": "^3.3", + "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.3", "ext-json": "*", "ext-tokenizer": "*", "php": "^7.4 || ^8.0", "sebastian/diff": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0", - "symfony/event-dispatcher": "^5.4 || ^6.0", - "symfony/filesystem": "^5.4 || ^6.0", - "symfony/finder": "^5.4 || ^6.0", - "symfony/options-resolver": "^5.4 || ^6.0", - "symfony/polyfill-mbstring": "^1.27", - "symfony/polyfill-php80": "^1.27", - "symfony/polyfill-php81": "^1.27", - "symfony/process": "^5.4 || ^6.0", - "symfony/stopwatch": "^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", + "symfony/polyfill-mbstring": "^1.28", + "symfony/polyfill-php80": "^1.28", + "symfony/polyfill-php81": "^1.28", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "facile-it/paraunit": "^1.3 || ^2.0", "justinrainbow/json-schema": "^5.2", - "keradus/cli-executor": "^2.0", + "keradus/cli-executor": "^2.1", "mikey179/vfsstream": "^1.6.11", - "php-coveralls/php-coveralls": "^2.5.3", + "php-coveralls/php-coveralls": "^2.7", "php-cs-fixer/accessible-object": "^1.1", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy": "^1.16", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^9.5", - "symfony/phpunit-bridge": "^6.2.3", - "symfony/yaml": "^5.4 || ^6.0" + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", + "phpunit/phpunit": "^9.6", + "symfony/phpunit-bridge": "^6.3.8 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -1864,7 +1935,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.35.1" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" }, "funding": [ { @@ -1872,20 +1943,20 @@ "type": "github" } ], - "time": "2023-10-12T13:47:26+00:00" + "time": "2023-12-10T19:59:27+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.0", + "version": "7.8.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9" + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1110f66a6530a40fe7aea0378fe608ee2b2248f9", - "reference": "1110f66a6530a40fe7aea0378fe608ee2b2248f9", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", + "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", "shasum": "" }, "require": { @@ -1900,11 +1971,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23", + "phpunit/phpunit": "^8.5.36 || ^9.6.15", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -1982,7 +2053,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.0" + "source": "https://github.com/guzzle/guzzle/tree/7.8.1" }, "funding": [ { @@ -1998,28 +2069,28 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:20:53+00:00" + "time": "2023-12-03T20:35:24+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", - "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", + "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", + "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "type": "library", "extra": { @@ -2065,7 +2136,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.1" + "source": "https://github.com/guzzle/promises/tree/2.0.2" }, "funding": [ { @@ -2081,20 +2152,20 @@ "type": "tidelift" } ], - "time": "2023-08-03T15:11:55+00:00" + "time": "2023-12-03T20:19:20+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.1", + "version": "2.6.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727" + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/be45764272e8873c72dbe3d2edcfdfcc3bc9f727", - "reference": "be45764272e8873c72dbe3d2edcfdfcc3bc9f727", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", + "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", "shasum": "" }, "require": { @@ -2108,9 +2179,9 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.1", + "bamarni/composer-bin-plugin": "^1.8.2", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.29 || ^9.5.23" + "phpunit/phpunit": "^8.5.36 || ^9.6.15" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -2181,7 +2252,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.1" + "source": "https://github.com/guzzle/psr7/tree/2.6.2" }, "funding": [ { @@ -2197,7 +2268,7 @@ "type": "tidelift" } ], - "time": "2023-08-27T10:13:57+00:00" + "time": "2023-12-03T20:05:35+00:00" }, { "name": "jms/metadata", @@ -2265,47 +2336,47 @@ }, { "name": "jms/serializer", - "version": "3.28.0", + "version": "3.29.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "5a5a03a71a28a480189c5a0ca95893c19f1d120c" + "reference": "111451f43abb448ce297361a8ab96a9591e848cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/5a5a03a71a28a480189c5a0ca95893c19f1d120c", - "reference": "5a5a03a71a28a480189c5a0ca95893c19f1d120c", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/111451f43abb448ce297361a8ab96a9591e848cd", + "reference": "111451f43abb448ce297361a8ab96a9591e848cd", "shasum": "" }, "require": { - "doctrine/annotations": "^1.13 || ^2.0", - "doctrine/instantiator": "^1.0.3 || ^2.0", + "doctrine/annotations": "^1.14 || ^2.0", + "doctrine/instantiator": "^1.3.1 || ^2.0", "doctrine/lexer": "^2.0 || ^3.0", "jms/metadata": "^2.6", - "php": "^7.2||^8.0", - "phpstan/phpdoc-parser": "^0.4 || ^0.5 || ^1.0" + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.20" }, "require-dev": { "doctrine/coding-standard": "^12.0", - "doctrine/orm": "~2.1", - "doctrine/persistence": "^1.3.3|^2.0|^3.0", - "doctrine/phpcr-odm": "^1.3|^2.0", + "doctrine/orm": "^2.14 || ^3.0", + "doctrine/persistence": "^2.5.2 || ^3.0", + "doctrine/phpcr-odm": "^1.5.2 || ^2.0", "ext-pdo_sqlite": "*", - "jackalope/jackalope-doctrine-dbal": "^1.1.5", - "ocramius/proxy-manager": "^1.0|^2.0", + "jackalope/jackalope-doctrine-dbal": "^1.3", + "ocramius/proxy-manager": "^1.0 || ^2.0", "phpbench/phpbench": "^1.0", "phpstan/phpstan": "^1.0.2", - "phpunit/phpunit": "^8.5.21||^9.0||^10.0", - "psr/container": "^1.0|^2.0", - "symfony/dependency-injection": "^3.0|^4.0|^5.0|^6.0", - "symfony/expression-language": "^3.2|^4.0|^5.0|^6.0", - "symfony/filesystem": "^3.0|^4.0|^5.0|^6.0", - "symfony/form": "^3.0|^4.0|^5.0|^6.0", - "symfony/translation": "^3.0|^4.0|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^3.1.9|^4.0|^5.0|^6.0", - "symfony/yaml": "^3.3|^4.0|^5.0|^6.0", - "twig/twig": "~1.34|~2.4|^3.0" + "phpunit/phpunit": "^8.5.21 || ^9.0 || ^10.0", + "psr/container": "^1.0 || ^2.0", + "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/expression-language": "^3.2 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/filesystem": "^4.2 || ^5.0 || ^6.0 || ^7.0", + "symfony/form": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/translation": "^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/uid": "^5.1 || ^6.0 || ^7.0", + "symfony/validator": "^3.1.9 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "twig/twig": "^1.34 || ^2.4 || ^3.0" }, "suggest": { "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", @@ -2349,7 +2420,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.28.0" + "source": "https://github.com/schmittjoh/serializer/tree/3.29.1" }, "funding": [ { @@ -2357,52 +2428,52 @@ "type": "github" } ], - "time": "2023-08-03T14:43:08+00:00" + "time": "2023-12-14T15:25:09+00:00" }, { "name": "jms/serializer-bundle", - "version": "4.2.0", + "version": "5.4.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", - "reference": "d402554c66442ba494af7a37e3e43fc0f24e2689" + "reference": "6fa2dd0083e00fe21c5da171556d7ecabc14b437" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/d402554c66442ba494af7a37e3e43fc0f24e2689", - "reference": "d402554c66442ba494af7a37e3e43fc0f24e2689", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/6fa2dd0083e00fe21c5da171556d7ecabc14b437", + "reference": "6fa2dd0083e00fe21c5da171556d7ecabc14b437", "shasum": "" }, "require": { - "jms/metadata": "^2.5", - "jms/serializer": "^3.18", - "php": "^7.2 || ^8.0", - "symfony/dependency-injection": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "symfony/framework-bundle": "^3.0 || ^4.0 || ^5.0 || ^6.0" + "jms/metadata": "^2.6", + "jms/serializer": "^3.28", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { "doctrine/coding-standard": "^8.1", - "doctrine/orm": "^2.4", + "doctrine/orm": "^2.14", "phpunit/phpunit": "^8.0 || ^9.0", - "symfony/expression-language": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/finder": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/form": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/templating": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/twig-bundle": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/uid": "^5.1 || ^6.0", - "symfony/validator": "^3.0 || ^4.0 || ^5.0 || ^6.0", - "symfony/yaml": "^3.0 || ^4.0 || ^5.0 || ^6.0" + "symfony/expression-language": "^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^5.4 || ^6.0 || ^7.0", + "symfony/form": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/templating": "^5.4 || ^6.0", + "symfony/twig-bundle": "^5.4 || ^6.0 || ^7.0", + "symfony/uid": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { - "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ^1.3", - "symfony/expression-language": "Required for opcache preloading, ^3.0 || ^4.0 || ^5.0", - "symfony/finder": "Required for cache warmup, supported versions ^3.0|^4.0" + "symfony/expression-language": "Required for opcache preloading ^5.4 || ^6.0 || ^7.0", + "symfony/finder": "Required for cache warmup, supported versions ^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -2437,7 +2508,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/JMSSerializerBundle/issues", - "source": "https://github.com/schmittjoh/JMSSerializerBundle/tree/4.2.0" + "source": "https://github.com/schmittjoh/JMSSerializerBundle/tree/5.4.0" }, "funding": [ { @@ -2445,7 +2516,7 @@ "type": "github" } ], - "time": "2022-09-13T19:27:18+00:00" + "time": "2023-12-12T15:33:15+00:00" }, { "name": "knplabs/knp-menu", @@ -2522,28 +2593,29 @@ }, { "name": "knplabs/knp-menu-bundle", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9" + "reference": "02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/a0b4224f872d74ae939589eb1ccf0e11291370a9", - "reference": "a0b4224f872d74ae939589eb1ccf0e11291370a9", + "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5", + "reference": "02a2c68a2d6247a21c1d5ed185e2e3e3d9e7dfb5", "shasum": "" }, "require": { - "knplabs/knp-menu": "^3.1", - "php": "^7.2 || ^8.0", - "symfony/framework-bundle": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "knplabs/knp-menu": "^3.3", + "php": "^8.0", + "symfony/deprecation-contracts": "^2.5 | ^3.3", + "symfony/framework-bundle": "^5.4 | ^6.0 | ^7.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 | ^9.5", - "symfony/expression-language": "^3.4 | ^4.4 | ^5.0 | ^6.0", - "symfony/phpunit-bridge": "^5.2 | ^6.0", - "symfony/templating": "^3.4 | ^4.4 | ^5.0 | ^6.0" + "phpunit/phpunit": "^9.6 | ^10.1", + "symfony/expression-language": "^5.4 | ^6.0 | ^7.0", + "symfony/phpunit-bridge": "^6.0 | ^7.0", + "symfony/templating": "^5.4 | ^6.0 | ^7.0" }, "type": "symfony-bundle", "extra": { @@ -2580,9 +2652,76 @@ ], "support": { "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.2.0" + "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.3.0" + }, + "time": "2023-11-01T09:25:40+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.8.1", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f47dcf3c70c584de14f21143c55d9939631bc6cf", + "reference": "f47dcf3c70c584de14f21143c55d9939631bc6cf", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.8.1" }, - "time": "2021-10-24T07:53:34+00:00" + "time": "2023-05-10T11:58:31+00:00" }, { "name": "mtdowling/jmespath.php", @@ -2711,19 +2850,20 @@ }, { "name": "nesbot/carbon", - "version": "2.71.0", + "version": "2.72.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "98276233188583f2ff845a0f992a235472d9466a" + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/98276233188583f2ff845a0f992a235472d9466a", - "reference": "98276233188583f2ff845a0f992a235472d9466a", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", + "reference": "2b3b3db0a2d0556a177392ff1a3bf5608fa09f78", "shasum": "" }, "require": { + "carbonphp/carbon-doctrine-types": "*", "ext-json": "*", "php": "^7.1.8 || ^8.0", "psr/clock": "^1.0", @@ -2735,8 +2875,8 @@ "psr/clock-implementation": "1.0" }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.1.4", - "doctrine/orm": "^2.7", + "doctrine/dbal": "^2.0 || ^3.1.4 || ^4.0", + "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", "ondrejmirtes/better-reflection": "*", @@ -2813,20 +2953,20 @@ "type": "tidelift" } ], - "time": "2023-09-25T11:31:05+00:00" + "time": "2023-12-08T23:47:49+00:00" }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -2867,9 +3007,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "phar-io/manifest", @@ -3152,16 +3292,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.2", + "version": "1.24.5", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bcad8d995980440892759db0c32acae7c8e79442" + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", - "reference": "bcad8d995980440892759db0c32acae7c8e79442", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fedf211ff14ec8381c9bf5714e33a7a552dd1acc", + "reference": "fedf211ff14ec8381c9bf5714e33a7a552dd1acc", "shasum": "" }, "require": { @@ -3193,22 +3333,22 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.5" }, - "time": "2023-09-26T12:28:12+00:00" + "time": "2023-12-16T09:33:33+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.7", + "version": "10.1.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "355324ca4980b8916c18b9db29f3ef484078f26e" + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/355324ca4980b8916c18b9db29f3ef484078f26e", - "reference": "355324ca4980b8916c18b9db29f3ef484078f26e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/599109c8ca6bae97b23482d557d2874c25a65e59", + "reference": "599109c8ca6bae97b23482d557d2874c25a65e59", "shasum": "" }, "require": { @@ -3265,7 +3405,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.7" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.10" }, "funding": [ { @@ -3273,7 +3413,7 @@ "type": "github" } ], - "time": "2023-10-04T15:34:17+00:00" + "time": "2023-12-11T06:28:43+00:00" }, { "name": "phpunit/php-file-iterator", @@ -3520,16 +3660,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.4.1", + "version": "10.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "62bd7af13d282deeb95650077d28ba3600ca321c" + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/62bd7af13d282deeb95650077d28ba3600ca321c", - "reference": "62bd7af13d282deeb95650077d28ba3600ca321c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6fce887c71076a73f32fd3e0774a6833fc5c7f19", + "reference": "6fce887c71076a73f32fd3e0774a6833fc5c7f19", "shasum": "" }, "require": { @@ -3569,7 +3709,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.4-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -3601,7 +3741,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.4.1" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.3" }, "funding": [ { @@ -3617,20 +3757,20 @@ "type": "tidelift" } ], - "time": "2023-10-08T05:01:11+00:00" + "time": "2023-12-13T07:25:23+00:00" }, { "name": "psr/cache", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", - "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { @@ -3664,9 +3804,9 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/2.0.0" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2021-02-03T23:23:37+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/clock", @@ -3718,22 +3858,27 @@ }, { "name": "psr/container", - "version": "1.1.2", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -3760,9 +3905,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", @@ -3976,16 +4121,16 @@ }, { "name": "psr/log", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { @@ -3994,7 +4139,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -4020,9 +4165,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/2.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.0" }, - "time": "2021-07-14T16:41:46+00:00" + "time": "2021-07-14T16:46:02+00:00" }, { "name": "ralouphie/getallheaders", @@ -4159,16 +4304,16 @@ }, { "name": "ramsey/uuid", - "version": "4.7.4", + "version": "4.7.5", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "60a4c63ab724854332900504274f6150ff26d286" + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/60a4c63ab724854332900504274f6150ff26d286", - "reference": "60a4c63ab724854332900504274f6150ff26d286", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", + "reference": "5f0df49ae5ad6efb7afa69e6bfab4e5b1e080d8e", "shasum": "" }, "require": { @@ -4235,7 +4380,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.4" + "source": "https://github.com/ramsey/uuid/tree/4.7.5" }, "funding": [ { @@ -4247,7 +4392,7 @@ "type": "tidelift" } ], - "time": "2023-04-15T23:01:58+00:00" + "time": "2023-11-08T05:53:05+00:00" }, { "name": "sebastian/cli-parser", @@ -5220,16 +5365,16 @@ }, { "name": "sonata-project/admin-bundle", - "version": "4.28.0", + "version": "4.29.1", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataAdminBundle.git", - "reference": "724c4fcec44b33c74aa3f3cc37627aa2e7890446" + "reference": "7fde20267f7e0a745349d3b1b565d5d2cc8a42e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/724c4fcec44b33c74aa3f3cc37627aa2e7890446", - "reference": "724c4fcec44b33c74aa3f3cc37627aa2e7890446", + "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/7fde20267f7e0a745349d3b1b565d5d2cc8a42e4", + "reference": "7fde20267f7e0a745349d3b1b565d5d2cc8a42e4", "shasum": "" }, "require": { @@ -5246,39 +5391,39 @@ "sonata-project/exporter": "^2.14 || ^3.1.1", "sonata-project/form-extensions": "^1.15 || ^2.0", "sonata-project/twig-extensions": "^1.4.1 || ^2.0", - "symfony/asset": "^5.4 || ^6.2", - "symfony/config": "^5.4 || ^6.2", - "symfony/console": "^5.4 || ^6.2", - "symfony/dependency-injection": "^5.4 || ^6.2", - "symfony/doctrine-bridge": "^5.4 || ^6.2", - "symfony/event-dispatcher": "^5.4 || ^6.2", + "symfony/asset": "^5.4 || ^6.2 || ^7.0", + "symfony/config": "^5.4 || ^6.2 || ^7.0", + "symfony/console": "^5.4 || ^6.2 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", + "symfony/doctrine-bridge": "^5.4 || ^6.2 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.2 || ^7.0", "symfony/event-dispatcher-contracts": "^2.0 || ^3.0", - "symfony/expression-language": "^5.4 || ^6.2", - "symfony/form": "^5.4 || ^6.2", - "symfony/framework-bundle": "^5.4 || ^6.2", - "symfony/http-foundation": "^5.4 || ^6.2", - "symfony/http-kernel": "^5.4 || ^6.2", - "symfony/options-resolver": "^5.4 || ^6.2", - "symfony/property-access": "^5.4 || ^6.2", - "symfony/routing": "^5.4 || ^6.2", + "symfony/expression-language": "^5.4 || ^6.2 || ^7.0", + "symfony/form": "^5.4 || ^6.2 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/http-foundation": "^5.4 || ^6.2 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.2 || ^7.0", + "symfony/property-access": "^5.4 || ^6.2 || ^7.0", + "symfony/routing": "^5.4 || ^6.2 || ^7.0", "symfony/security-acl": "^3.1", - "symfony/security-bundle": "^5.4 || ^6.2", - "symfony/security-core": "^5.4 || ^6.2", - "symfony/security-csrf": "^5.4 || ^6.2", - "symfony/serializer": "^5.4 || ^6.2", - "symfony/string": "^5.4 || ^6.2", - "symfony/translation": "^5.4 || ^6.2", + "symfony/security-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/security-core": "^5.4 || ^6.2 || ^7.0", + "symfony/security-csrf": "^5.4 || ^6.2 || ^7.0", + "symfony/serializer": "^5.4 || ^6.2 || ^7.0", + "symfony/string": "^5.4 || ^6.2 || ^7.0", + "symfony/translation": "^5.4 || ^6.2 || ^7.0", "symfony/translation-contracts": "^2.3 || ^3.0", - "symfony/twig-bridge": "^5.4 || ^6.2", - "symfony/twig-bundle": "^5.4 || ^6.2", - "symfony/validator": "^5.4 || ^6.2", + "symfony/twig-bridge": "^5.4 || ^6.2 || ^7.0", + "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/validator": "^5.4 || ^6.2 || ^7.0", "twig/string-extra": "^3.0", "twig/twig": "^3.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.2", + "matthiasnoback/symfony-config-test": "^4.2 || ^5.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.2 || ^5.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", @@ -5289,12 +5434,12 @@ "psalm/plugin-symfony": "^5.0", "psr/event-dispatcher": "^1.0", "rector/rector": "^0.18", - "symfony/browser-kit": "^5.4 || ^6.2", - "symfony/css-selector": "^5.4 || ^6.2", - "symfony/filesystem": "^5.4 || ^6.2", + "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", + "symfony/css-selector": "^5.4 || ^6.2 || ^7.0", + "symfony/filesystem": "^5.4 || ^6.2 || ^7.0", "symfony/maker-bundle": "^1.25", - "symfony/phpunit-bridge": "^6.2", - "symfony/yaml": "^5.4 || ^6.2", + "symfony/phpunit-bridge": "^6.2 || ^7.0", + "symfony/yaml": "^5.4 || ^6.2 || ^7.0", "vimeo/psalm": "^5.8.0" }, "suggest": { @@ -5333,7 +5478,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.28.0" + "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.29.1" }, "funding": [ { @@ -5353,20 +5498,20 @@ "type": "github" } ], - "time": "2023-10-18T22:47:20+00:00" + "time": "2023-12-12T10:41:24+00:00" }, { "name": "sonata-project/block-bundle", - "version": "5.0.1", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataBlockBundle.git", - "reference": "2902f4005058219e5ec04f94fd2b207ee2ee21d8" + "reference": "95bedc0f472f27c58fd2c9e99e810aa5bee14876" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataBlockBundle/zipball/2902f4005058219e5ec04f94fd2b207ee2ee21d8", - "reference": "2902f4005058219e5ec04f94fd2b207ee2ee21d8", + "url": "https://api.github.com/repos/sonata-project/SonataBlockBundle/zipball/95bedc0f472f27c58fd2c9e99e810aa5bee14876", + "reference": "95bedc0f472f27c58fd2c9e99e810aa5bee14876", "shasum": "" }, "require": { @@ -5376,19 +5521,19 @@ "psr/container": "^1.0 || ^2.0", "psr/log": "^2.0 || ^3.0", "sonata-project/form-extensions": "^1.4 || ^2.0", - "symfony/asset": "^5.4 || ^6.2", - "symfony/config": "^5.4 || ^6.2", - "symfony/console": "^5.4 || ^6.2", - "symfony/dependency-injection": "^5.4 || ^6.2", - "symfony/event-dispatcher": "^5.4 || ^6.2", + "symfony/asset": "^5.4 || ^6.2 || ^7.0", + "symfony/config": "^5.4 || ^6.2 || ^7.0", + "symfony/console": "^5.4 || ^6.2 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", + "symfony/event-dispatcher": "^5.4 || ^6.2 || ^7.0", "symfony/event-dispatcher-contracts": "^2.0 || ^3.0", - "symfony/form": "^5.4 || ^6.2", - "symfony/framework-bundle": "^5.4 || ^6.2", - "symfony/http-foundation": "^5.4 || ^6.2", - "symfony/http-kernel": "^5.4 || ^6.2", - "symfony/options-resolver": "^5.4 || ^6.2", - "symfony/twig-bundle": "^5.4 || ^6.2", - "symfony/validator": "^5.4 || ^6.2", + "symfony/form": "^5.4 || ^6.2 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/http-foundation": "^5.4 || ^6.2 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.2 || ^7.0", + "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/validator": "^5.4 || ^6.2 || ^7.0", "twig/twig": "^3.0" }, "conflict": { @@ -5398,8 +5543,8 @@ "friendsofphp/php-cs-fixer": "^3.4", "knplabs/knp-menu": "^3.1", "knplabs/knp-menu-bundle": "^3.0", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.1", + "matthiasnoback/symfony-config-test": "^4.2 || ^5.0", + "matthiasnoback/symfony-dependency-injection-test": "^4.1 || ^5.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", @@ -5408,11 +5553,11 @@ "phpunit/phpunit": "^9.5.13", "psalm/plugin-phpunit": "^0.18", "psalm/plugin-symfony": "^5.0", - "rector/rector": "^0.17", - "symfony/browser-kit": "^5.4 || ^6.2", - "symfony/error-handler": "^5.4 || ^6.2", - "symfony/phpunit-bridge": "^6.2", - "symfony/stopwatch": "^5.4 || ^6.2", + "rector/rector": "^0.18", + "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", + "symfony/error-handler": "^5.4 || ^6.2 || ^7.0", + "symfony/phpunit-bridge": "^6.2 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.2 || ^7.0", "vimeo/psalm": "^5.8" }, "suggest": { @@ -5447,7 +5592,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataBlockBundle/issues", - "source": "https://github.com/sonata-project/SonataBlockBundle/tree/5.0.1" + "source": "https://github.com/sonata-project/SonataBlockBundle/tree/5.1.0" }, "funding": [ { @@ -5467,7 +5612,7 @@ "type": "github" } ], - "time": "2023-07-22T12:48:51+00:00" + "time": "2023-11-23T21:14:33+00:00" }, { "name": "sonata-project/doctrine-extensions", @@ -5575,16 +5720,16 @@ }, { "name": "sonata-project/doctrine-orm-admin-bundle", - "version": "4.14.0", + "version": "4.15.0", "source": { "type": "git", "url": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle.git", - "reference": "534837c60b06d64c06dc01eca69cfe4f944a4e94" + "reference": "c40d82dbe3f8b3fe46e602d6de66cfa0f49d3f66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataDoctrineORMAdminBundle/zipball/534837c60b06d64c06dc01eca69cfe4f944a4e94", - "reference": "534837c60b06d64c06dc01eca69cfe4f944a4e94", + "url": "https://api.github.com/repos/sonata-project/SonataDoctrineORMAdminBundle/zipball/c40d82dbe3f8b3fe46e602d6de66cfa0f49d3f66", + "reference": "c40d82dbe3f8b3fe46e602d6de66cfa0f49d3f66", "shasum": "" }, "require": { @@ -5596,16 +5741,16 @@ "sonata-project/admin-bundle": "^4.18", "sonata-project/exporter": "^2.0 || ^3.0", "sonata-project/form-extensions": "^1.19 || ^2.0", - "symfony/config": "^5.4 || ^6.2", - "symfony/console": "^5.4 || ^6.2", - "symfony/dependency-injection": "^5.4 || ^6.2", - "symfony/doctrine-bridge": "^5.4 || ^6.2", - "symfony/form": "^5.4 || ^6.2", - "symfony/framework-bundle": "^5.4 || ^6.2", - "symfony/http-foundation": "^5.4 || ^6.2", - "symfony/http-kernel": "^5.4 || ^6.2", - "symfony/options-resolver": "^5.4 || ^6.2", - "symfony/property-access": "^5.4 || ^6.2", + "symfony/config": "^5.4 || ^6.2 || ^7.0", + "symfony/console": "^5.4 || ^6.2 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", + "symfony/doctrine-bridge": "^5.4 || ^6.2 || ^7.0", + "symfony/form": "^5.4 || ^6.2 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/http-foundation": "^5.4 || ^6.2 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/options-resolver": "^5.4 || ^6.2 || ^7.0", + "symfony/property-access": "^5.4 || ^6.2 || ^7.0", "symfony/security-acl": "^3.0", "twig/twig": "^3.0" }, @@ -5617,10 +5762,10 @@ "sonata-project/admin-bundle-persistency-layer": "1.0.0" }, "require-dev": { - "dama/doctrine-test-bundle": "^7.0", + "dama/doctrine-test-bundle": "^8.0", "doctrine/doctrine-fixtures-bundle": "^3.4", "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-dependency-injection-test": "^4.2", + "matthiasnoback/symfony-dependency-injection-test": "^4.2 || ^5.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", @@ -5630,15 +5775,15 @@ "psalm/plugin-phpunit": "^0.18", "psalm/plugin-symfony": "^5.0", "rector/rector": "^0.18", - "sonata-project/block-bundle": "^4.2", + "sonata-project/block-bundle": "^5.0", "sonata-project/entity-audit-bundle": "^1.1", - "symfony/browser-kit": "^5.4 || ^6.2", - "symfony/css-selector": "^5.4 || ^6.2", + "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", + "symfony/css-selector": "^5.4 || ^6.2 || ^7.0", "symfony/panther": "^2.0.1", - "symfony/phpunit-bridge": "^6.2", - "symfony/templating": "^5.4 || ^6.2", - "symfony/uid": "^5.4 || ^6.2", - "symfony/yaml": "^5.4 || ^6.2", + "symfony/phpunit-bridge": "^6.2 || ^7.0", + "symfony/templating": "^5.4 || ^6.2 || ^7.0", + "symfony/uid": "^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^5.4 || ^6.2 || ^7.0", "vimeo/psalm": "^5.7", "weirdan/doctrine-psalm-plugin": "^2.0" }, @@ -5684,7 +5829,7 @@ ], "support": { "issues": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/tree/4.14.0" + "source": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/tree/4.15.0" }, "funding": [ { @@ -5704,7 +5849,7 @@ "type": "github" } ], - "time": "2023-10-23T16:21:16+00:00" + "time": "2023-12-04T08:21:03+00:00" }, { "name": "sonata-project/exporter", @@ -5933,28 +6078,28 @@ }, { "name": "sonata-project/twig-extensions", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/sonata-project/twig-extensions.git", - "reference": "c81c17f49a76af6a0d1e4f37469315aea01eaa00" + "reference": "9a3b3c8bcd350d9733fedf5958ae53baac64d9c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sonata-project/twig-extensions/zipball/c81c17f49a76af6a0d1e4f37469315aea01eaa00", - "reference": "c81c17f49a76af6a0d1e4f37469315aea01eaa00", + "url": "https://api.github.com/repos/sonata-project/twig-extensions/zipball/9a3b3c8bcd350d9733fedf5958ae53baac64d9c8", + "reference": "9a3b3c8bcd350d9733fedf5958ae53baac64d9c8", "shasum": "" }, "require": { "php": "^8.0", - "symfony/config": "^5.4 || ^6.2", - "symfony/twig-bridge": "^5.4 || ^6.2", + "symfony/config": "^5.4 || ^6.2 || ^7.0", + "symfony/twig-bridge": "^5.4 || ^6.2 || ^7.0", "twig/twig": "^3.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.0", + "matthiasnoback/symfony-config-test": "^4.2 || ^5.1", + "matthiasnoback/symfony-dependency-injection-test": "^4.0 || ^5.0", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", "phpstan/phpstan-phpunit": "^1.0", @@ -5963,15 +6108,15 @@ "phpunit/phpunit": "^9.5", "psalm/plugin-phpunit": "^0.18", "psalm/plugin-symfony": "^5.0", - "rector/rector": "^0.17", - "symfony/browser-kit": "^5.4 || ^6.2", - "symfony/dependency-injection": "^5.4 || ^6.2", - "symfony/framework-bundle": "^5.4 || ^6.2", - "symfony/http-foundation": "^5.4 || ^6.2", - "symfony/http-kernel": "^5.4 || ^6.2", - "symfony/phpunit-bridge": "^6.2", - "symfony/translation": "^5.4 || ^6.2", - "symfony/twig-bundle": "^5.4 || ^6.2", + "rector/rector": "^0.18", + "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", + "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", + "symfony/http-foundation": "^5.4 || ^6.2 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", + "symfony/phpunit-bridge": "^6.2 || ^7.0", + "symfony/translation": "^5.4 || ^6.2 || ^7.0", + "symfony/twig-bundle": "^5.4 || ^6.2 || ^7.0", "vimeo/psalm": "^5.0" }, "type": "library", @@ -6005,7 +6150,7 @@ ], "support": { "issues": "https://github.com/sonata-project/twig-extensions/issues", - "source": "https://github.com/sonata-project/twig-extensions/tree/2.3.0" + "source": "https://github.com/sonata-project/twig-extensions/tree/2.4.0" }, "funding": [ { @@ -6025,37 +6170,37 @@ "type": "github" } ], - "time": "2023-08-01T23:11:06+00:00" + "time": "2023-11-23T20:39:43+00:00" }, { - "name": "symfony/amqp-messenger", - "version": "v5.4.28", + "name": "symfony/asset", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/amqp-messenger.git", - "reference": "24e5cc90da041e0e1b7bbe15b82ad7f27a508c01" + "url": "https://github.com/symfony/asset.git", + "reference": "c1108eb27a61ef4ac29504ef61c028648308036c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/amqp-messenger/zipball/24e5cc90da041e0e1b7bbe15b82ad7f27a508c01", - "reference": "24e5cc90da041e0e1b7bbe15b82ad7f27a508c01", + "url": "https://api.github.com/repos/symfony/asset/zipball/c1108eb27a61ef4ac29504ef61c028648308036c", + "reference": "c1108eb27a61ef4ac29504ef61c028648308036c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/messenger": "^5.3|^6.0" + "php": ">=8.1" + }, + "conflict": { + "symfony/http-foundation": "<5.4" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" }, - "type": "symfony-messenger-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Amqp\\": "" + "Symfony\\Component\\Asset\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6075,10 +6220,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony AMQP extension Messenger Bridge", + "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/amqp-messenger/tree/v5.4.28" + "source": "https://github.com/symfony/asset/tree/v6.4.0" }, "funding": [ { @@ -6094,42 +6239,36 @@ "type": "tidelift" } ], - "time": "2023-08-09T17:16:27+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { - "name": "symfony/asset", - "version": "v5.4.21", + "name": "symfony/browser-kit", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/asset.git", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c" + "url": "https://github.com/symfony/browser-kit.git", + "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/1504b6773c6b90118f9871e90a67833b5d1dca3c", - "reference": "1504b6773c6b90118f9871e90a67833b5d1dca3c", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a3bb210e001580ec75e1d02b27fae3452e6bf502", + "reference": "a3bb210e001580ec75e1d02b27fae3452e6bf502", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "symfony/http-foundation": "<5.3" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0|^7.0" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/http-foundation": "" + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Asset\\": "" + "Symfony\\Component\\BrowserKit\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -6149,10 +6288,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v5.4.21" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.0" }, "funding": [ { @@ -6168,41 +6307,61 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { - "name": "symfony/browser-kit", - "version": "v5.4.21", + "name": "symfony/cache", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/browser-kit.git", - "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704" + "url": "https://github.com/symfony/cache.git", + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a866ca7e396f15d7efb6d74a8a7d364d4e05b704", - "reference": "a866ca7e396f15d7efb6d74a8a7d364d4e05b704", + "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/cache": "^2.0|^3.0", + "psr/log": "^1.1|^2|^3", + "symfony/cache-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3", + "symfony/var-exporter": "^6.3.6|^7.0" }, - "require-dev": { - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "conflict": { + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" }, - "suggest": { - "symfony/process": "" + "provide": { + "psr/cache-implementation": "2.0|3.0", + "psr/simple-cache-implementation": "1.0|2.0|3.0", + "symfony/cache-implementation": "1.1|2.0|3.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "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|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\BrowserKit\\": "" + "Symfony\\Component\\Cache\\": "" }, + "classmap": [ + "Traits/ValueWrapper.php" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -6213,18 +6372,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.21" + "source": "https://github.com/symfony/cache/tree/v6.4.0" }, "funding": [ { @@ -6240,65 +6403,40 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-11-24T19:28:07+00:00" }, { - "name": "symfony/cache", - "version": "v5.4.29", + "name": "symfony/cache-contracts", + "version": "v3.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151", - "reference": "e29c5a97bc2d81269973c3e1d7ceb9d48b4d5151", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", + "reference": "1d74b127da04ffa87aa940abe15446fa89653778", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0", - "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^1.1.7|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "conflict": { - "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/var-dumper": "<4.4" - }, - "provide": { - "psr/cache-implementation": "1.0|2.0", - "psr/simple-cache-implementation": "1.0|2.0", - "symfony/cache-implementation": "1.0|2.0" - }, - "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/cache": "^1.6|^2.0", - "doctrine/dbal": "^2.13.1|^3.0", - "predis/predis": "^1.1", - "psr/simple-cache": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "psr/cache": "^3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, "autoload": { "psr-4": { - "Symfony\\Component\\Cache\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6314,14 +6452,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ - "caching", - "psr6" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/cache/tree/v5.4.29" + "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" }, "funding": [ { @@ -6337,43 +6479,41 @@ "type": "tidelift" } ], - "time": "2023-09-19T13:25:51+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { - "name": "symfony/cache-contracts", - "version": "v2.5.2", + "name": "symfony/clock", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" + "url": "https://github.com/symfony/clock.git", + "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", - "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "url": "https://api.github.com/repos/symfony/clock/zipball/48102bcc56b26d453c7f5e7f72829abc9df25a16", + "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/cache": "^1.0|^2.0|^3.0" + "php": ">=8.1", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" }, - "suggest": { - "symfony/cache-implementation": "" + "provide": { + "psr/clock-implementation": "1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, "autoload": { + "files": [ + "Resources/now.php" + ], "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6389,18 +6529,15 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Generic abstractions related to caching", + "description": "Decouples applications from the system clock", "homepage": "https://symfony.com", "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" + "clock", + "psr20", + "time" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/clock/tree/v6.4.0" }, "funding": [ { @@ -6416,42 +6553,38 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2023-10-13T14:46:14+00:00" }, { "name": "symfony/config", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650" + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8109892f27beed9252bd1f1c1880aeb4ad842650", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650", + "url": "https://api.github.com/repos/symfony/config/zipball/5d33e0fb707d603330e0edfd4691803a1253572e", + "reference": "5d33e0fb707d603330e0edfd4691803a1253572e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { - "symfony/finder": "<4.4" + "symfony/finder": "<5.4", + "symfony/service-contracts": "<2.5" }, "require-dev": { - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6479,7 +6612,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.26" + "source": "https://github.com/symfony/config/tree/v6.4.0" }, "funding": [ { @@ -6495,56 +6628,51 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:21:11+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/console", - "version": "v5.4.28", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6578,7 +6706,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/console/tree/v6.4.1" }, "funding": [ { @@ -6594,25 +6722,24 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-30T10:54:28+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", - "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d036c6c0d0b09e24a14a35f8292146a658f986e4", + "reference": "d036c6c0d0b09e24a14a35f8292146a658f986e4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" }, "type": "library", "autoload": { @@ -6644,7 +6771,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.26" + "source": "https://github.com/symfony/css-selector/tree/v6.4.0" }, "funding": [ { @@ -6660,52 +6787,44 @@ "type": "tidelift" } ], - "time": "2023-07-07T06:10:25+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.29", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05" + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/338638ed8c9d5c7fcb136a73f5c7043465ae2f05", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", + "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1.1", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/service-contracts": "^1.1.6|^2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.2.10|^7.0" }, "conflict": { "ext-psr": "<1.1|>=2", - "symfony/config": "<5.3", - "symfony/finder": "<4.4", - "symfony/proxy-manager-bridge": "<4.4", - "symfony/yaml": "<4.4.26" + "symfony/config": "<6.1", + "symfony/finder": "<5.4", + "symfony/proxy-manager-bridge": "<6.3", + "symfony/yaml": "<5.4" }, "provide": { - "psr/container-implementation": "1.0", - "symfony/service-implementation": "1.0|2.0" + "psr/container-implementation": "1.1|2.0", + "symfony/service-implementation": "1.1|2.0|3.0" }, "require-dev": { - "symfony/config": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4.26|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/config": "^6.1|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6733,7 +6852,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.29" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1" }, "funding": [ { @@ -6749,11 +6868,11 @@ "type": "tidelift" } ], - "time": "2023-09-20T06:23:43+00:00" + "time": "2023-12-01T14:56:37+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -6800,7 +6919,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -6820,75 +6939,67 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v5.4.28", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "70780f364af653951da5f82caea2e83407d890d0" + "reference": "bd181daf2851821c3aef20b779d37002cfd2e833" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/70780f364af653951da5f82caea2e83407d890d0", - "reference": "70780f364af653951da5f82caea2e83407d890d0", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd181daf2851821c3aef20b779d37002cfd2e833", + "reference": "bd181daf2851821c3aef20b779d37002cfd2e833", "shasum": "" }, "require": { - "doctrine/event-manager": "~1.0", - "doctrine/persistence": "^2|^3", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "doctrine/event-manager": "^1.2|^2", + "doctrine/persistence": "^3.1", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "doctrine/dbal": "<2.13.1", "doctrine/lexer": "<1.1", - "doctrine/orm": "<2.7.4", + "doctrine/orm": "<2.15", "symfony/cache": "<5.4", - "symfony/dependency-injection": "<4.4", + "symfony/dependency-injection": "<6.2", "symfony/form": "<5.4.21|>=6,<6.2.7", - "symfony/http-kernel": "<5", - "symfony/messenger": "<4.4", - "symfony/property-info": "<5", - "symfony/proxy-manager-bridge": "<4.4.19", - "symfony/security-bundle": "<5", - "symfony/security-core": "<5.3", - "symfony/validator": "<5.4.25|>=6,<6.2.12|>=6.3,<6.3.1" + "symfony/http-foundation": "<6.3", + "symfony/http-kernel": "<6.2", + "symfony/lock": "<6.3", + "symfony/messenger": "<5.4", + "symfony/property-info": "<5.4", + "symfony/security-bundle": "<5.4", + "symfony/security-core": "<6.4", + "symfony/validator": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", "doctrine/collections": "^1.0|^2.0", "doctrine/data-fixtures": "^1.1", - "doctrine/dbal": "^2.13.1|^3.0", - "doctrine/orm": "^2.7.4", + "doctrine/dbal": "^2.13.1|^3|^4", + "doctrine/orm": "^2.15|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^5.4|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.4.21|^6.2.7", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.0|^6.0", - "symfony/proxy-manager-bridge": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.3|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^5.4.25|~6.2.12|^6.3.1", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "doctrine/data-fixtures": "", - "doctrine/dbal": "", - "doctrine/orm": "", - "symfony/form": "", - "symfony/property-info": "", - "symfony/validator": "" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.2|^7.0", + "symfony/doctrine-messenger": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4.21|^6.2.7|^7.0", + "symfony/http-kernel": "^6.3|^7.0", + "symfony/lock": "^6.3|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/proxy-manager-bridge": "^6.4", + "symfony/security-core": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -6916,7 +7027,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v5.4.28" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.0" }, "funding": [ { @@ -6932,36 +7043,35 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:04:45+00:00" + "time": "2023-10-31T08:40:20+00:00" }, { "name": "symfony/doctrine-messenger", - "version": "v5.4.25", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-messenger.git", - "reference": "96bd1e093bfa8587205f4413193545c6685d7cd6" + "reference": "7131e998fea2140a8f4203230d025696d2a07d3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/96bd1e093bfa8587205f4413193545c6685d7cd6", - "reference": "96bd1e093bfa8587205f4413193545c6685d7cd6", + "url": "https://api.github.com/repos/symfony/doctrine-messenger/zipball/7131e998fea2140a8f4203230d025696d2a07d3e", + "reference": "7131e998fea2140a8f4203230d025696d2a07d3e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/messenger": "^5.1|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "doctrine/dbal": "^2.13|^3|^4", + "php": ">=8.1", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.13", "doctrine/persistence": "<1.3" }, "require-dev": { - "doctrine/dbal": "^2.13|^3.0", "doctrine/persistence": "^1.3|^2|^3", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "type": "symfony-messenger-bridge", "autoload": { @@ -6989,7 +7099,7 @@ "description": "Symfony Doctrine Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-messenger/tree/v5.4.25" + "source": "https://github.com/symfony/doctrine-messenger/tree/v6.4.1" }, "funding": [ { @@ -7005,38 +7115,30 @@ "type": "tidelift" } ], - "time": "2023-06-22T08:06:06+00:00" + "time": "2023-12-01T09:25:07+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.25", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea" + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/d2aefa5a7acc5511422792931d14d1be96fe9fea", - "reference": "d2aefa5a7acc5511422792931d14d1be96fe9fea", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", + "reference": "14ff4fd2a5c8969d6158dbe7ef5b17d6a9c6ba33", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "masterminds/html5": "^2.6", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7064,7 +7166,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.25" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.0" }, "funding": [ { @@ -7080,31 +7182,35 @@ "type": "tidelift" } ], - "time": "2023-06-05T08:05:41+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/error-handler", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078" + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/328c6fcfd2f90b64c16efaf0ea67a311d672f078", - "reference": "328c6fcfd2f90b64c16efaf0ea67a311d672f078", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/c873490a1c97b3a0a4838afc36ff36c112d02788", + "reference": "c873490a1c97b3a0a4838afc36ff36c112d02788", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" + }, + "conflict": { + "symfony/deprecation-contracts": "<2.5", + "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -7135,7 +7241,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.29" + "source": "https://github.com/symfony/error-handler/tree/v6.4.0" }, "funding": [ { @@ -7151,48 +7257,43 @@ "type": "tidelift" } ], - "time": "2023-09-06T21:54:06+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", - "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^2|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0" + "symfony/event-dispatcher-implementation": "2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7220,7 +7321,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" }, "funding": [ { @@ -7236,11 +7337,11 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:34:20+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -7296,7 +7397,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -7316,22 +7417,23 @@ }, { "name": "symfony/expression-language", - "version": "v5.4.21", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac" + "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/501589522b844b8eecf012c133f0404f0eef77ac", - "reference": "501589522b844b8eecf012c133f0404f0eef77ac", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", + "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -7359,7 +7461,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v5.4.21" + "source": "https://github.com/symfony/expression-language/tree/v6.4.0" }, "funding": [ { @@ -7375,27 +7477,26 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.25", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364" + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", - "reference": "0ce3a62c9579a53358d3a7eb6b3dfb79789a6364", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/952a8cb588c3bc6ce76f6023000fb932f16a6e59", + "reference": "952a8cb588c3bc6ce76f6023000fb932f16a6e59", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-mbstring": "~1.8" }, "type": "library", "autoload": { @@ -7423,7 +7524,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.25" + "source": "https://github.com/symfony/filesystem/tree/v6.4.0" }, "funding": [ { @@ -7439,26 +7540,27 @@ "type": "tidelift" } ], - "time": "2023-05-31T13:04:02+00:00" + "time": "2023-07-26T17:27:13+00:00" }, { "name": "symfony/finder", - "version": "v5.4.27", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", - "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "url": "https://api.github.com/repos/symfony/finder/zipball/11d736e97f116ac375a81f96e662911a34cd50ce", + "reference": "11d736e97f116ac375a81f96e662911a34cd50ce", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1" + }, + "require-dev": { + "symfony/filesystem": "^6.0|^7.0" }, "type": "library", "autoload": { @@ -7486,7 +7588,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.27" + "source": "https://github.com/symfony/finder/tree/v6.4.0" }, "funding": [ { @@ -7502,65 +7604,60 @@ "type": "tidelift" } ], - "time": "2023-07-31T08:02:31+00:00" + "time": "2023-10-31T17:30:12+00:00" }, { "name": "symfony/form", - "version": "v5.4.29", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "57baf5a73a68c24dfe12d0d93bec119ec71acb48" + "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/57baf5a73a68c24dfe12d0d93bec119ec71acb48", - "reference": "57baf5a73a68c24dfe12d0d93bec119ec71acb48", + "url": "https://api.github.com/repos/symfony/form/zipball/10649ab710b58a04bcf1886f005ccab58d9cf0a4", + "reference": "10649ab710b58a04bcf1886f005ccab58d9cf0a4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/options-resolver": "^5.1|^6.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/options-resolver": "^5.4|^6.0|^7.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.23", - "symfony/property-access": "^5.0.8|^6.0", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<4.4", - "symfony/dependency-injection": "<4.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", - "symfony/error-handler": "<4.4.5", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<4.4", - "symfony/translation-contracts": "<1.1.7", - "symfony/twig-bridge": "<5.4.21|>=6,<6.2.7" + "symfony/error-handler": "<5.4", + "symfony/framework-bundle": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<6.3" }, "require-dev": { "doctrine/collections": "^1.0|^2.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", - "symfony/validator": "^4.4.17|^5.1.9|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/security-csrf": "For protecting forms against CSRF attacks.", - "symfony/twig-bridge": "For templating with Twig.", - "symfony/validator": "For form validation." + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.2|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7588,7 +7685,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v5.4.29" + "source": "https://github.com/symfony/form/tree/v6.4.1" }, "funding": [ { @@ -7604,114 +7701,112 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-11-30T11:08:34+00:00" }, { "name": "symfony/framework-bundle", - "version": "v5.4.29", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "63e4ad1386fd4f31a005d751cd4dc016f9f2346e" + "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/63e4ad1386fd4f31a005d751cd4dc016f9f2346e", - "reference": "63e4ad1386fd4f31a005d751cd4dc016f9f2346e", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa", + "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.2.5", - "symfony/cache": "^5.2|^6.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.4.5|^6.0.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.4.24|^6.2.11", - "symfony/http-kernel": "^5.4|^6.0", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/routing": "^5.3|^6.0" + "symfony/routing": "^6.4|^7.0" }, "conflict": { "doctrine/annotations": "<1.13.1", - "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.3", - "symfony/console": "<5.2.5", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<5.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/service-contracts": ">=3.0", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.3.11", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" + "symfony/asset": "<5.4", + "symfony/asset-mapper": "<6.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", + "symfony/scheduler": "<6.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.4", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.4", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "doctrine/annotations": "^1.13.1|^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4.9|^6.0.9", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", - "symfony/dotenv": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.2|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/mailer": "^5.2|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/notifier": "^5.4|^6.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.3|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-info": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/string": "^5.0|^6.0", - "symfony/translation": "^5.3|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.3.11|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/scheduler": "^6.4|^7.0", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/semaphore": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/twig": "^2.10|^3.0" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -7738,7 +7833,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/v5.4.29" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.1" }, "funding": [ { @@ -7754,39 +7849,40 @@ "type": "tidelift" } ], - "time": "2023-09-27T13:49:58+00:00" + "time": "2023-12-01T16:35:22+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.28", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2" + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/365992c83a836dfe635f1e903ccca43ee03d3dd2", - "reference": "365992c83a836dfe635f1e903ccca43ee03d3dd2", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php80": "^1.16" + "symfony/polyfill-php83": "^1.27" }, - "require-dev": { - "predis/predis": "~1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "conflict": { + "symfony/cache": "<6.3" }, - "suggest": { - "symfony/mime": "To use the file extension guesser" + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -7814,7 +7910,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.28" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" }, "funding": [ { @@ -7830,76 +7926,77 @@ "type": "tidelift" } ], - "time": "2023-08-21T07:23:18+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.29", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7" + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", + "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/log": "^1|^2", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.4.21|^6.2.7", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.0", - "symfony/config": "<5.0", - "symfony/console": "<4.4", - "symfony/dependency-injection": "<5.3", - "symfony/doctrine-bridge": "<5.0", - "symfony/form": "<5.0", - "symfony/http-client": "<5.0", - "symfony/mailer": "<5.0", - "symfony/messenger": "<5.0", - "symfony/translation": "<5.0", - "symfony/twig-bridge": "<5.0", - "symfony/validator": "<5.0", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/config": "^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2|^3", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2|^3", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4.5|^6.0.5|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-exporter": "^6.2|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "" - }, "type": "library", "autoload": { "psr-4": { @@ -7926,7 +8023,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/v5.4.29" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" }, "funding": [ { @@ -7942,39 +8039,43 @@ "type": "tidelift" } ], - "time": "2023-09-30T06:31:17+00:00" + "time": "2023-12-01T17:02:02+00:00" }, { "name": "symfony/mailer", - "version": "v5.4.22", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b" + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/6330cd465dfd8b7a07515757a1c37069075f7b0b", - "reference": "6330cd465dfd8b7a07515757a1c37069075f7b0b", + "url": "https://api.github.com/repos/symfony/mailer/zipball/ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", + "reference": "ca8dcf8892cdc5b4358ecf2528429bb5e706f7ba", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2.6|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<4.4" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -8002,7 +8103,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.22" + "source": "https://github.com/symfony/mailer/tree/v6.4.0" }, "funding": [ { @@ -8018,53 +8119,50 @@ "type": "tidelift" } ], - "time": "2023-03-10T10:15:32+00:00" + "time": "2023-11-12T18:02:22+00:00" }, { "name": "symfony/messenger", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/messenger.git", - "reference": "ce5165859adc36595578d684e77fc721fa53e387" + "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/messenger/zipball/ce5165859adc36595578d684e77fc721fa53e387", - "reference": "ce5165859adc36595578d684e77fc721fa53e387", + "url": "https://api.github.com/repos/symfony/messenger/zipball/a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4", + "reference": "a6f32d0e9b9c7d2d47c7bea3cd1e8a9c0f781fb4", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/amqp-messenger": "^5.1|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/doctrine-messenger": "^5.1|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/redis-messenger": "^5.1|^6.0" + "symfony/clock": "^6.3|^7.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/http-kernel": "<4.4", - "symfony/serializer": "<5.0" + "symfony/console": "<6.3", + "symfony/event-dispatcher": "<5.4", + "symfony/event-dispatcher-contracts": "<2.5", + "symfony/framework-bundle": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/serializer": "<5.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.0|^6.0", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0" - }, - "suggest": { - "enqueue/messenger-adapter": "For using the php-enqueue library as a transport." + "symfony/console": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -8092,7 +8190,7 @@ "description": "Helps applications send and receive messages to/from other applications or via message queues", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/messenger/tree/v5.4.29" + "source": "https://github.com/symfony/messenger/tree/v6.4.0" }, "funding": [ { @@ -8108,24 +8206,25 @@ "type": "tidelift" } ], - "time": "2023-09-20T14:19:32+00:00" + "time": "2023-11-24T19:28:07+00:00" }, { "name": "symfony/mime", - "version": "v6.1.11", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "2bff58573e81a1df51bf99ad01725428beda1cbc" + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/2bff58573e81a1df51bf99ad01725428beda1cbc", - "reference": "2bff58573e81a1df51bf99ad01725428beda1cbc", + "url": "https://api.github.com/repos/symfony/mime/zipball/ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", + "reference": "ca4f58b2ef4baa8f6cecbeca2573f88cd577d205", "shasum": "" }, "require": { "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, @@ -8133,15 +8232,17 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<5.4" + "symfony/mailer": "<5.4", + "symfony/serializer": "<6.3.2" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.3.2|^7.0" }, "type": "library", "autoload": { @@ -8173,7 +8274,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.11" + "source": "https://github.com/symfony/mime/tree/v6.4.0" }, "funding": [ { @@ -8189,27 +8290,25 @@ "type": "tidelift" } ], - "time": "2023-01-10T18:53:01+00:00" + "time": "2023-10-17T11:49:05+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.21", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + "reference": "22301f0e7fdeaacc14318928612dee79be99860e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/22301f0e7fdeaacc14318928612dee79be99860e", + "reference": "22301f0e7fdeaacc14318928612dee79be99860e", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -8242,7 +8341,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + "source": "https://github.com/symfony/options-resolver/tree/v6.4.0" }, "funding": [ { @@ -8258,33 +8357,31 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-08-08T10:16:24+00:00" }, { "name": "symfony/password-hasher", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "57cd0369af1a92b87c1e960251ebdf9457225bfd" + "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/57cd0369af1a92b87c1e960251ebdf9457225bfd", - "reference": "57cd0369af1a92b87c1e960251ebdf9457225bfd", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/e001f752338a49d644ee0523fd7891aabaccb7e2", + "reference": "e001f752338a49d644ee0523fd7891aabaccb7e2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1" }, "conflict": { - "symfony/security-core": "<5.3" + "symfony/security-core": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0", - "symfony/security-core": "^5.3|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/security-core": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -8316,7 +8413,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v5.4.29" + "source": "https://github.com/symfony/password-hasher/tree/v6.4.0" }, "funding": [ { @@ -8332,7 +8429,7 @@ "type": "tidelift" } ], - "time": "2023-09-19T07:33:45+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "symfony/polyfill-ctype", @@ -8839,30 +8936,42 @@ "time": "2023-07-28T09:04:16+00:00" }, { - "name": "symfony/process", - "version": "v5.4.28", + "name": "symfony/polyfill-php83", + "version": "v1.28.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", - "reference": "45261e1fccad1b5447a8d7a8e67aa7b4a9798b7b", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", + "reference": "b0f46ebbeeeda3e9d2faebdfbf4b4eae9b59fa11", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=7.1", + "symfony/polyfill-php80": "^1.14" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.28-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Polyfill\\Php83\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -8871,18 +8980,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/process/tree/v5.4.28" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.28.0" }, "funding": [ { @@ -8898,38 +9013,29 @@ "type": "tidelift" } ], - "time": "2023-08-07T10:36:04+00:00" + "time": "2023-08-16T06:22:46+00:00" }, { - "name": "symfony/property-access", - "version": "v5.4.26", + "name": "symfony/process", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa" + "url": "https://github.com/symfony/process.git", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/0249e46f69e92049a488f39fcf531cb42c50caaa", - "reference": "0249e46f69e92049a488f39fcf531cb42c50caaa", + "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", + "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/property-info": "^5.2|^6.0" - }, - "require-dev": { - "symfony/cache": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "To cache access methods." + "php": ">=8.1" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyAccess\\": "" + "Symfony\\Component\\Process\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -8949,21 +9055,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides functions to read and write from/to an object or array using a simple string notation", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "keywords": [ - "access", - "array", - "extraction", - "index", - "injection", - "object", - "property", - "property-path", - "reflection" - ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.26" + "source": "https://github.com/symfony/process/tree/v6.4.0" }, "funding": [ { @@ -8979,51 +9074,34 @@ "type": "tidelift" } ], - "time": "2023-07-13T15:20:41+00:00" + "time": "2023-11-17T21:06:49+00:00" }, { - "name": "symfony/property-info", - "version": "v5.4.24", + "name": "symfony/property-access", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/property-info.git", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1" + "url": "https://github.com/symfony/property-access.git", + "reference": "75f6990ae8e8040dd587162f3f1863f755957129" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/d43b85b00699b4484964c297575b5c6f9dc5f6e1", - "reference": "d43b85b00699b4484964c297575b5c6f9dc5f6e1", + "url": "https://api.github.com/repos/symfony/property-access/zipball/75f6990ae8e8040dd587162f3f1863f755957129", + "reference": "75f6990ae8e8040dd587162f3f1863f755957129", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/property-info": "^5.4|^6.0|^7.0" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "phpstan/phpdoc-parser": "^1.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" - }, - "suggest": { - "phpdocumentor/reflection-docblock": "To use the PHPDoc", - "psr/cache-implementation": "To cache results", - "symfony/doctrine-bridge": "To use Doctrine metadata", - "symfony/serializer": "To use Serializer metadata" + "symfony/cache": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\PropertyInfo\\": "" + "Symfony\\Component\\PropertyAccess\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9035,26 +9113,29 @@ ], "authors": [ { - "name": "Kévin Dunglas", - "email": "dunglas@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Extracts information about PHP class' properties using metadata of popular sources", + "description": "Provides functions to read and write from/to an object or array using a simple string notation", "homepage": "https://symfony.com", "keywords": [ - "doctrine", - "phpdoc", + "access", + "array", + "extraction", + "index", + "injection", + "object", "property", - "symfony", - "type", - "validator" + "property-path", + "reflection" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v5.4.24" + "source": "https://github.com/symfony/property-access/tree/v6.4.0" }, "funding": [ { @@ -9070,35 +9151,43 @@ "type": "tidelift" } ], - "time": "2023-05-15T20:11:03+00:00" + "time": "2023-09-25T12:52:38+00:00" }, { - "name": "symfony/redis-messenger", - "version": "v5.4.26", + "name": "symfony/property-info", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/redis-messenger.git", - "reference": "55258642bca0d1869d147c85ee3277305549d5a3" + "url": "https://github.com/symfony/property-info.git", + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/55258642bca0d1869d147c85ee3277305549d5a3", - "reference": "55258642bca0d1869d147c85ee3277305549d5a3", + "url": "https://api.github.com/repos/symfony/property-info/zipball/288be71bae2ebc88676f5d3a03d23f70b278fcc1", + "reference": "288be71bae2ebc88676f5d3a03d23f70b278fcc1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/messenger": "^5.1|^6.0" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0|^7.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<5.2", + "phpdocumentor/type-resolver": "<1.5.1", + "symfony/dependency-injection": "<5.4", + "symfony/serializer": "<6.4" }, "require-dev": { - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0" + "phpdocumentor/reflection-docblock": "^5.2", + "phpstan/phpdoc-parser": "^1.0", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0" }, - "type": "symfony-messenger-bridge", + "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" + "Symfony\\Component\\PropertyInfo\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9110,18 +9199,26 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Kévin Dunglas", + "email": "dunglas@gmail.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Redis extension Messenger Bridge", + "description": "Extracts information about PHP class' properties using metadata of popular sources", "homepage": "https://symfony.com", + "keywords": [ + "doctrine", + "phpdoc", + "property", + "symfony", + "type", + "validator" + ], "support": { - "source": "https://github.com/symfony/redis-messenger/tree/v5.4.26" + "source": "https://github.com/symfony/property-info/tree/v6.4.0" }, "funding": [ { @@ -9137,47 +9234,40 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:11:33+00:00" + "time": "2023-11-25T16:57:46+00:00" }, { "name": "symfony/routing", - "version": "v5.4.26", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "853fc7df96befc468692de0a48831b38f04d2cb2" + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/853fc7df96befc468692de0a48831b38f04d2cb2", - "reference": "853fc7df96befc468692de0a48831b38f04d2cb2", + "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", + "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.12", - "symfony/config": "<5.3", - "symfony/dependency-injection": "<4.4", - "symfony/yaml": "<4.4" + "symfony/config": "<6.2", + "symfony/dependency-injection": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For using the all-in-one router or any loader", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "symfony/config": "^6.2|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9211,7 +9301,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.26" + "source": "https://github.com/symfony/routing/tree/v6.4.1" }, "funding": [ { @@ -9227,36 +9317,35 @@ "type": "tidelift" } ], - "time": "2023-07-24T13:28:37+00:00" + "time": "2023-12-01T14:54:37+00:00" }, { "name": "symfony/runtime", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d" + "reference": "86539231fadfdc7f7e9911d6fa7ed84a606e7d34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/4659b552bc9f2380986e3f4b7e2bd4e512470e0d", - "reference": "4659b552bc9f2380986e3f4b7e2bd4e512470e0d", + "url": "https://api.github.com/repos/symfony/runtime/zipball/86539231fadfdc7f7e9911d6fa7ed84a606e7d34", + "reference": "86539231fadfdc7f7e9911d6fa7ed84a606e7d34", "shasum": "" }, "require": { "composer-plugin-api": "^1.0|^2.0", - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1" }, "conflict": { - "symfony/dotenv": "<5.1" + "symfony/dotenv": "<5.4" }, "require-dev": { "composer/composer": "^1.0.2|^2.0", - "symfony/console": "^4.4.30|^5.4.9|^6.0.9", - "symfony/dotenv": "^5.1|^6.0", - "symfony/http-foundation": "^4.4.30|^5.3.7|^6.0", - "symfony/http-kernel": "^4.4.30|^5.3.7|^6.0" + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" }, "type": "composer-plugin", "extra": { @@ -9291,7 +9380,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v5.4.26" + "source": "https://github.com/symfony/runtime/tree/v6.4.0" }, "funding": [ { @@ -9307,25 +9396,25 @@ "type": "tidelift" } ], - "time": "2023-07-16T16:48:57+00:00" + "time": "2023-10-18T09:43:34+00:00" }, { "name": "symfony/security-acl", - "version": "v3.3.2", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/symfony/security-acl.git", - "reference": "f24881ebade00b4f186df2828b22f6ecf5045866" + "reference": "15b96b5dd6a65cafdc96b38ef3c3cebaa8b19cb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-acl/zipball/f24881ebade00b4f186df2828b22f6ecf5045866", - "reference": "f24881ebade00b4f186df2828b22f6ecf5045866", + "url": "https://api.github.com/repos/symfony/security-acl/zipball/15b96b5dd6a65cafdc96b38ef3c3cebaa8b19cb7", + "reference": "15b96b5dd6a65cafdc96b38ef3c3cebaa8b19cb7", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/security-core": "^4.4|^5.0|^6.0" + "symfony/security-core": "^4.4|^5.0|^6.0|^7.0" }, "conflict": { "doctrine/cache": "<1.11", @@ -9337,9 +9426,9 @@ "doctrine/dbal": "^2.13.1|^3.1", "doctrine/persistence": "^1.3.3|^2|^3", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/phpunit-bridge": "^5.2|^6.0" + "symfony/cache": "^4.4|^5.0|^6.0|^7.0", + "symfony/finder": "^4.4|^5.0|^6.0|^7.0", + "symfony/phpunit-bridge": "^5.2|^6.0|^7.0" }, "type": "library", "extra": { @@ -9373,7 +9462,7 @@ "homepage": "https://symfony.com", "support": { "issues": "https://github.com/symfony/security-acl/issues", - "source": "https://github.com/symfony/security-acl/tree/v3.3.2" + "source": "https://github.com/symfony/security-acl/tree/v3.3.3" }, "funding": [ { @@ -9389,65 +9478,75 @@ "type": "tidelift" } ], - "time": "2022-09-18T14:07:21+00:00" + "time": "2023-05-23T18:46:27+00:00" }, { "name": "symfony/security-bundle", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "8f432fae02bd908c1decea70a359d85a9be37f2c" + "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/8f432fae02bd908c1decea70a359d85a9be37f2c", - "reference": "8f432fae02bd908c1decea70a359d85a9be37f2c", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", + "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^5.4|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-guard": "^5.3", - "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" + "php": ">=8.1", + "symfony/clock": "^6.3|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.2|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.2|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.2|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^6.3.6|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/browser-kit": "<4.4", - "symfony/console": "<4.4", - "symfony/framework-bundle": "<4.4", - "symfony/ldap": "<5.1", - "symfony/twig-bundle": "<4.4" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/ldap": "^5.3|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/serializer": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/browser-kit": "<5.4", + "symfony/console": "<5.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-client": "<5.4", + "symfony/ldap": "<5.4", + "symfony/serializer": "<6.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4" + }, + "require-dev": { + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/ldap": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/twig-bridge": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1", + "web-token/jwt-signature-algorithm-eddsa": "^3.1", + "web-token/jwt-signature-algorithm-hmac": "^3.1", + "web-token/jwt-signature-algorithm-none": "^3.1", + "web-token/jwt-signature-algorithm-rsa": "^3.1" }, "type": "symfony-bundle", "autoload": { @@ -9475,7 +9574,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/v5.4.29" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.0" }, "funding": [ { @@ -9491,56 +9590,48 @@ "type": "tidelift" } ], - "time": "2023-09-19T07:33:45+00:00" + "time": "2023-10-31T14:46:20+00:00" }, { "name": "symfony/security-core", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "f8421bb428f48655d2b327d4bf58870983eef84a" + "reference": "9e24a7199744d944c03fc1448276dc57f6237a33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/f8421bb428f48655d2b327d4bf58870983eef84a", - "reference": "f8421bb428f48655d2b327d4bf58870983eef84a", + "url": "https://api.github.com/repos/symfony/security-core/zipball/9e24a7199744d944c03fc1448276dc57f6237a33", + "reference": "9e24a7199744d944c03fc1448276dc57f6237a33", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher-contracts": "^1.1|^2|^3", - "symfony/password-hasher": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1.6|^2|^3" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher-contracts": "^2.5|^3", + "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.4", - "symfony/http-foundation": "<5.3", - "symfony/ldap": "<4.4", - "symfony/security-guard": "<4.4", - "symfony/validator": "<5.2" + "symfony/event-dispatcher": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/ldap": "<5.4", + "symfony/security-guard": "<5.4", + "symfony/validator": "<5.4" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0|^2.0", + "psr/container": "^1.1|^2.0", "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/ldap": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.2|^6.0" - }, - "suggest": { - "psr/container-implementation": "To instantiate the Security class", - "symfony/event-dispatcher": "", - "symfony/expression-language": "For using the expression voter", - "symfony/http-foundation": "", - "symfony/ldap": "For using LDAP integration", - "symfony/validator": "For using the user password constraint" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/ldap": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -9568,7 +9659,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v5.4.29" + "source": "https://github.com/symfony/security-core/tree/v6.4.0" }, "funding": [ { @@ -9584,36 +9675,31 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-11-06T17:20:05+00:00" }, { "name": "symfony/security-csrf", - "version": "v5.4.27", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611" + "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/995fcfcc5a3be09df157b4960668f61cceb86611", - "reference": "995fcfcc5a3be09df157b4960668f61cceb86611", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/b28413496ebfce2f98afbb990ad0ce0ba3586638", + "reference": "b28413496ebfce2f98afbb990ad0ce0ba3586638", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16", - "symfony/security-core": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/security-core": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/http-foundation": "<5.3" + "symfony/http-foundation": "<5.4" }, "require-dev": { - "symfony/http-foundation": "^5.3|^6.0" - }, - "suggest": { - "symfony/http-foundation": "For using the class SessionTokenStorage." + "symfony/http-foundation": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9641,75 +9727,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v5.4.27" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2023-07-28T14:44:35+00:00" - }, - { - "name": "symfony/security-guard", - "version": "v5.4.27", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-guard.git", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/72c53142533462fc6fda4a429c2a21c2b944a8cc", - "reference": "72c53142533462fc6fda4a429c2a21c2b944a8cc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.15", - "symfony/security-core": "^5.0", - "symfony/security-http": "^5.3" - }, - "require-dev": { - "psr/log": "^1|^2|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Guard\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Security Component - Guard", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/security-guard/tree/v5.4.27" + "source": "https://github.com/symfony/security-csrf/tree/v6.4.0" }, "funding": [ { @@ -9725,48 +9743,51 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2023-08-25T16:27:31+00:00" }, { "name": "symfony/security-http", - "version": "v5.4.28", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "7815edb5716e765063469b6b9232d4eaf8c03516" + "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/7815edb5716e765063469b6b9232d4eaf8c03516", - "reference": "7815edb5716e765063469b6b9232d4eaf8c03516", + "url": "https://api.github.com/repos/symfony/security-http/zipball/1b49ad8e9f2c3ceec011d67ac09e774e4107416b", + "reference": "1b49ad8e9f2c3ceec011d67ac09e774e4107416b", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-foundation": "^6.2|^7.0", + "symfony/http-kernel": "^6.3|^7.0", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/security-core": "^5.4.19|~6.0.19|~6.1.11|^6.2.5" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.3", - "symfony/security-bundle": "<5.3", - "symfony/security-csrf": "<4.4" + "symfony/clock": "<6.3", + "symfony/event-dispatcher": "<5.4.9|>=6,<6.0.9", + "symfony/http-client-contracts": "<3.0", + "symfony/security-bundle": "<5.4", + "symfony/security-csrf": "<5.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", - "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.3|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^3.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1" }, "type": "library", "autoload": { @@ -9794,7 +9815,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v5.4.28" + "source": "https://github.com/symfony/security-http/tree/v6.4.0" }, "funding": [ { @@ -9810,66 +9831,61 @@ "type": "tidelift" } ], - "time": "2023-08-23T10:00:20+00:00" + "time": "2023-11-24T21:18:21+00:00" }, { "name": "symfony/serializer", - "version": "v5.4.29", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "b893175000155839170d589f3a3593f2ce601829" + "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/b893175000155839170d589f3a3593f2ce601829", - "reference": "b893175000155839170d589f3a3593f2ce601829", + "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f", + "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<4.4", + "symfony/dependency-injection": "<5.4", "symfony/property-access": "<5.4", "symfony/property-info": "<5.4.24|>=6,<6.2.11", - "symfony/uid": "<5.3", - "symfony/yaml": "<4.4" + "symfony/uid": "<5.4", + "symfony/validator": "<6.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^5.4|^6.0", - "symfony/property-info": "^5.4.24|^6.2.11", - "symfony/uid": "^5.3|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0", - "symfony/var-exporter": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/cache-implementation": "For using the metadata cache.", - "symfony/config": "For using the XML mapping loader.", - "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", - "symfony/property-access": "For using the ObjectNormalizer.", - "symfony/property-info": "To deserialize relations.", - "symfony/var-exporter": "For using the metadata compiler.", - "symfony/yaml": "For using the default YAML mapping loader." + "seld/jsonlint": "^1.10", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4.24|^6.2.11|^7.0", + "symfony/translation-contracts": "^2.5|^3", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9897,7 +9913,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/v5.4.29" + "source": "https://github.com/symfony/serializer/tree/v6.4.1" }, "funding": [ { @@ -9913,37 +9929,33 @@ "type": "tidelift" } ], - "time": "2023-09-20T07:40:46+00:00" + "time": "2023-12-01T14:54:37+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -9953,7 +9965,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -9980,7 +9995,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" }, "funding": [ { @@ -9996,25 +10011,25 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2023-07-30T20:28:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", + "reference": "fc47f1015ec80927ff64ba9094dfe8b9d48fe9f2", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -10042,7 +10057,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.0" }, "funding": [ { @@ -10058,38 +10073,38 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2023-02-16T10:14:28+00:00" }, { "name": "symfony/string", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d" + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", - "reference": "e41bdc93def20eaf3bfc1537c4e0a2b0680a152d", + "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/translation-contracts": ">=3.0" + "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10128,7 +10143,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.29" + "source": "https://github.com/symfony/string/tree/v6.4.0" }, "funding": [ { @@ -10144,57 +10159,55 @@ "type": "tidelift" } ], - "time": "2023-09-13T11:47:41+00:00" + "time": "2023-11-28T20:41:49+00:00" }, { "name": "symfony/translation", - "version": "v5.4.24", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "de237e59c5833422342be67402d487fbf50334ff" + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff", - "reference": "de237e59c5833422342be67402d487fbf50334ff", + "url": "https://api.github.com/repos/symfony/translation/zipball/b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", + "reference": "b1035dbc2a344b21f8fa8ac451c7ecec4ea45f37", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^2.3" + "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/console": "<5.3", - "symfony/dependency-injection": "<5.0", - "symfony/http-kernel": "<5.0", - "symfony/twig-bundle": "<5.0", - "symfony/yaml": "<4.4" + "symfony/config": "<5.4", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/service-contracts": "<2.5", + "symfony/twig-bundle": "<5.4", + "symfony/yaml": "<5.4" }, "provide": { - "symfony/translation-implementation": "2.3" + "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { + "nikic/php-parser": "^4.13", "psr/log": "^1|^2|^3", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/dependency-injection": "^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client-contracts": "^1.1|^2.0|^3.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client-contracts": "^2.5|^3.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/service-contracts": "^1.1.2|^2|^3", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log-implementation": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10225,7 +10238,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.24" + "source": "https://github.com/symfony/translation/tree/v6.4.0" }, "funding": [ { @@ -10241,7 +10254,7 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:34:17+00:00" + "time": "2023-11-29T08:14:36+00:00" }, { "name": "symfony/translation-contracts", @@ -10323,81 +10336,69 @@ }, { "name": "symfony/twig-bridge", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "8e94856da373b63e7ba69e51a6c4f834d991cd58" + "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/8e94856da373b63e7ba69e51a6c4f834d991cd58", - "reference": "8e94856da373b63e7ba69e51a6c4f834d991cd58", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16", - "symfony/translation-contracts": "^1.1|^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/translation-contracts": "^2.5|^3", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/console": "<5.3", - "symfony/form": "<5.4.21|>=6,<6.2.7", - "symfony/http-foundation": "<5.3", - "symfony/http-kernel": "<4.4", - "symfony/translation": "<5.2", - "symfony/workflow": "<5.2" + "symfony/console": "<5.4", + "symfony/form": "<6.3", + "symfony/http-foundation": "<5.4", + "symfony/http-kernel": "<6.4", + "symfony/mime": "<6.2", + "symfony/serializer": "<6.4", + "symfony/translation": "<5.4", + "symfony/workflow": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.12|^2", "egulias/email-validator": "^2.1.10|^3|^4", + "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/console": "^5.3|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^5.4.21|^6.2.7", - "symfony/http-foundation": "^5.3|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2|^6.0", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^6.4|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/security-acl": "^2.8|^3.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/security-csrf": "^4.4|^5.0|^6.0", - "symfony/security-http": "^4.4|^5.0|^6.0", - "symfony/serializer": "^5.2|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.2|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.1|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/cssinliner-extra": "^2.12|^3", "twig/inky-extra": "^2.12|^3", "twig/markdown-extra": "^2.12|^3" }, - "suggest": { - "symfony/asset": "For using the AssetExtension", - "symfony/expression-language": "For using the ExpressionExtension", - "symfony/finder": "", - "symfony/form": "For using the FormExtension", - "symfony/http-kernel": "For using the HttpKernelExtension", - "symfony/routing": "For using the RoutingExtension", - "symfony/security-core": "For using the SecurityExtension", - "symfony/security-csrf": "For using the CsrfExtension", - "symfony/security-http": "For using the LogoutUrlExtension", - "symfony/stopwatch": "For using the StopwatchExtension", - "symfony/translation": "For using the TranslationExtension", - "symfony/var-dumper": "For using the DumpExtension", - "symfony/web-link": "For using the WebLinkExtension", - "symfony/yaml": "For using the YamlExtension" - }, "type": "symfony-bridge", "autoload": { "psr-4": { @@ -10424,7 +10425,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v5.4.29" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" }, "funding": [ { @@ -10440,53 +10441,47 @@ "type": "tidelift" } ], - "time": "2023-09-06T21:54:06+00:00" + "time": "2023-11-25T08:25:13+00:00" }, { "name": "symfony/twig-bundle", - "version": "v5.4.27", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "a16996ad54d75e220e91a0c7517437ad592eccca" + "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a16996ad54d75e220e91a0c7517437ad592eccca", - "reference": "a16996ad54d75e220e91a0c7517437ad592eccca", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", + "reference": "35d84393e598dfb774e6a2bf49e5229a8a6dbe4c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3|^6.0", + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.4", "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/service-contracts": ">=3.0", - "symfony/translation": "<5.0" - }, - "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.0|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" + }, + "require-dev": { + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -10514,7 +10509,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.27" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.0" }, "funding": [ { @@ -10530,75 +10525,59 @@ "type": "tidelift" } ], - "time": "2023-07-28T14:44:35+00:00" + "time": "2023-11-07T14:57:07+00:00" }, { "name": "symfony/validator", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "287ef8c80d1c23d5d1db8c3e26a8ad56680d535b" + "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/287ef8c80d1c23d5d1db8c3e26a8ad56680d535b", - "reference": "287ef8c80d1c23d5d1db8c3e26a8ad56680d535b", + "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", + "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/translation-contracts": "^1.1|^2|^3" + "symfony/polyfill-php83": "^1.27", + "symfony/translation-contracts": "^2.5|^3" }, "conflict": { "doctrine/annotations": "<1.13", - "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "symfony/dependency-injection": "<4.4", - "symfony/expression-language": "<5.1", - "symfony/http-kernel": "<4.4", - "symfony/intl": "<4.4", - "symfony/property-info": "<5.3", - "symfony/translation": "<4.4", - "symfony/yaml": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/expression-language": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/intl": "<5.4", + "symfony/property-info": "<5.4", + "symfony/translation": "<5.4", + "symfony/yaml": "<5.4" }, "require-dev": { "doctrine/annotations": "^1.13|^2", - "doctrine/cache": "^1.11|^2.0", "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^4.4|^5.0|^6.0", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^5.1|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/intl": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/property-access": "^4.4|^5.0|^6.0", - "symfony/property-info": "^5.3|^6.0", - "symfony/translation": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" - }, - "suggest": { - "egulias/email-validator": "Strict (RFC compliant) email validation", - "psr/cache-implementation": "For using the mapping cache.", - "symfony/config": "", - "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", - "symfony/http-foundation": "", - "symfony/intl": "", - "symfony/property-access": "For accessing properties within comparison constraints", - "symfony/property-info": "To automatically add NotNull and Type constraints", - "symfony/translation": "For translating validation errors.", - "symfony/yaml": "" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/intl": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10626,7 +10605,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v5.4.29" + "source": "https://github.com/symfony/validator/tree/v6.4.0" }, "funding": [ { @@ -10642,43 +10621,39 @@ "type": "tidelift" } ], - "time": "2023-09-10T17:22:50+00:00" + "time": "2023-11-29T07:47:42+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65" + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6172e4ae3534d25ee9e07eb487c20be7760fcc65", - "reference": "6172e4ae3534d25ee9e07eb487c20be7760fcc65", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/console": "<4.4" + "symfony/console": "<5.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/uid": "^5.1|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, - "suggest": { - "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", - "ext-intl": "To show region name in time zone dump", - "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" - }, "bin": [ "Resources/bin/var-dump-server" ], @@ -10715,7 +10690,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.29" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" }, "funding": [ { @@ -10731,28 +10706,28 @@ "type": "tidelift" } ], - "time": "2023-09-12T10:09:58+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/var-exporter", - "version": "v5.4.26", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a" + "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/11401fe94f960249b3c63a488c63ba73091c1e4a", - "reference": "11401fe94f960249b3c63a488c63ba73091c1e4a", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10785,10 +10760,12 @@ "export", "hydrate", "instantiate", + "lazy-loading", + "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v5.4.26" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" }, "funding": [ { @@ -10804,43 +10781,48 @@ "type": "tidelift" } ], - "time": "2023-07-20T07:21:16+00:00" + "time": "2023-11-30T10:32:10+00:00" }, { "name": "symfony/workflow", - "version": "v5.4.28", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/workflow.git", - "reference": "824480ed211164a31fc42e6cea912273699a52a6" + "reference": "06bcb0385811a604131eab6187b04e66844c9b03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/824480ed211164a31fc42e6cea912273699a52a6", - "reference": "824480ed211164a31fc42e6cea912273699a52a6", + "url": "https://api.github.com/repos/symfony/workflow/zipball/06bcb0385811a604131eab6187b04e66844c9b03", + "reference": "06bcb0385811a604131eab6187b04e66844c9b03", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.15" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "symfony/event-dispatcher": "<4.4" + "symfony/event-dispatcher": "<5.4" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/validator": "^4.4|^5.0|^6.0" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/security-core": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/validator": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Workflow\\": "" - } + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -10871,7 +10853,7 @@ "workflow" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v5.4.28" + "source": "https://github.com/symfony/workflow/tree/v6.4.1" }, "funding": [ { @@ -10887,35 +10869,32 @@ "type": "tidelift" } ], - "time": "2023-08-01T08:27:53+00:00" + "time": "2023-12-01T08:06:02+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.23", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4f9237a1bb42455d609e6687d2613dde5b41a587", + "reference": "4f9237a1bb42455d609e6687d2613dde5b41a587", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -10946,7 +10925,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.23" + "source": "https://github.com/symfony/yaml/tree/v6.4.0" }, "funding": [ { @@ -10962,20 +10941,20 @@ "type": "tidelift" } ], - "time": "2023-04-23T19:33:36+00:00" + "time": "2023-11-06T11:00:25+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b2ad5003ca10d4ee50a12da31de12a5774ba6b96", + "reference": "b2ad5003ca10d4ee50a12da31de12a5774ba6b96", "shasum": "" }, "require": { @@ -11004,7 +10983,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.2" }, "funding": [ { @@ -11012,30 +10991,30 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2023-11-20T00:12:19+00:00" }, { "name": "twig/string-extra", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/string-extra.git", - "reference": "7230d630a25e91cd91a2bd8e2f0e872962507eab" + "reference": "b0c9037d96baff79abe368dc092a59b726517548" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/7230d630a25e91cd91a2bd8e2f0e872962507eab", - "reference": "7230d630a25e91cd91a2bd8e2f0e872962507eab", + "url": "https://api.github.com/repos/twigphp/string-extra/zipball/b0c9037d96baff79abe368dc092a59b726517548", + "reference": "b0c9037d96baff79abe368dc092a59b726517548", "shasum": "" }, "require": { "php": ">=7.2.5", - "symfony/string": "^5.4|^6.0", + "symfony/string": "^5.4|^6.0|^7.0", "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^2.7|^3.0" + "twig/twig": "^3.0" }, "require-dev": { - "symfony/phpunit-bridge": "^5.4|^6.3" + "symfony/phpunit-bridge": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -11067,7 +11046,7 @@ "unicode" ], "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.7.1" + "source": "https://github.com/twigphp/string-extra/tree/v3.8.0" }, "funding": [ { @@ -11079,30 +11058,31 @@ "type": "tidelift" } ], - "time": "2023-07-29T15:34:56+00:00" + "time": "2023-11-21T14:02:01+00:00" }, { "name": "twig/twig", - "version": "v3.7.1", + "version": "v3.8.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554" + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", - "reference": "a0ce373a0ca3bf6c64b9e3e2124aca502ba39554", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", + "reference": "9d15f0ac07f44dc4217883ec6ae02fd555c6f71d", "shasum": "" }, "require": { "php": ">=7.2.5", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.3" + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php80": "^1.22" }, "require-dev": { "psr/container": "^1.0|^2.0", - "symfony/phpunit-bridge": "^5.4.9|^6.3" + "symfony/phpunit-bridge": "^5.4.9|^6.3|^7.0" }, "type": "library", "autoload": { @@ -11138,7 +11118,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.7.1" + "source": "https://github.com/twigphp/Twig/tree/v3.8.0" }, "funding": [ { @@ -11150,7 +11130,7 @@ "type": "tidelift" } ], - "time": "2023-08-28T11:09:02+00:00" + "time": "2023-11-21T18:54:41+00:00" }, { "name": "webmozart/assert", @@ -11381,104 +11361,37 @@ "time": "2022-10-31T08:38:03+00:00" }, { - "name": "beberlei/assert", - "version": "v3.3.2", + "name": "colinodell/psr-testlogger", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/beberlei/assert.git", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655" + "url": "https://github.com/colinodell/psr-testlogger.git", + "reference": "291f5b70ea0d3139787d18f442365a8e2784a462" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/beberlei/assert/zipball/cb70015c04be1baee6f5f5c953703347c0ac1655", - "reference": "cb70015c04be1baee6f5f5c953703347c0ac1655", + "url": "https://api.github.com/repos/colinodell/psr-testlogger/zipball/291f5b70ea0d3139787d18f442365a8e2784a462", + "reference": "291f5b70ea0d3139787d18f442365a8e2784a462", "shasum": "" }, "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-mbstring": "*", - "ext-simplexml": "*", - "php": "^7.0 || ^8.0" + "php": "^8.0", + "psr/log": "^1.0 || ^2.0 || ^3.0" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "*", - "phpstan/phpstan": "*", - "phpunit/phpunit": ">=6.0.0", - "yoast/phpunit-polyfills": "^0.1.0" + "provide": { + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, - "suggest": { - "ext-intl": "Needed to allow Assertion::count(), Assertion::isCountable(), Assertion::minCount(), and Assertion::maxCount() to operate on ResourceBundles" + "require-dev": { + "phpstan/phpstan": "^1.9.2", + "phpunit/phpunit": "^9.5.5", + "scrutinizer/ocular": "^1.8.1", + "unleashedtech/php-coding-standard": "^3.1", + "vimeo/psalm": "^4.30.0" }, "type": "library", "autoload": { - "files": [ - "lib/Assert/functions.php" - ], "psr-4": { - "Assert\\": "lib/Assert" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de", - "role": "Lead Developer" - }, - { - "name": "Richard Quadling", - "email": "rquadling@gmail.com", - "role": "Collaborator" - } - ], - "description": "Thin assertion library for input validation in business models.", - "keywords": [ - "assert", - "assertion", - "validation" - ], - "support": { - "issues": "https://github.com/beberlei/assert/issues", - "source": "https://github.com/beberlei/assert/tree/v3.3.2" - }, - "time": "2021-12-16T21:41:27+00:00" - }, - { - "name": "colinodell/psr-testlogger", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/colinodell/psr-testlogger.git", - "reference": "9246155e688b310fb3d0f201ead2445686b5844e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/colinodell/psr-testlogger/zipball/9246155e688b310fb3d0f201ead2445686b5844e", - "reference": "9246155e688b310fb3d0f201ead2445686b5844e", - "shasum": "" - }, - "require": { - "php": "^8.0", - "psr/log": "^1.0 || ^2.0 || ^3.0" - }, - "provide": { - "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.9.2", - "phpunit/phpunit": "^9.5.5", - "scrutinizer/ocular": "^1.8.1", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.30.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "ColinODell\\PsrTestLogger\\": "src" + "ColinODell\\PsrTestLogger\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -11524,7 +11437,7 @@ "type": "github" } ], - "time": "2023-03-14T19:12:55+00:00" + "time": "2023-11-29T23:03:34+00:00" }, { "name": "cweagans/composer-patches", @@ -11626,36 +11539,40 @@ }, { "name": "doctrine/doctrine-fixtures-bundle", - "version": "3.4.4", + "version": "3.5.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb" + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", - "reference": "9ec3139c52a42e94c9fd1e95f8d2bca94326edfb", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/c808a0c85c38c8ee265cc8405b456c1d2b38567d", + "reference": "c808a0c85c38c8ee265cc8405b456c1d2b38567d", "shasum": "" }, "require": { "doctrine/data-fixtures": "^1.3", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.6.0", - "doctrine/persistence": "^1.3.7|^2.0|^3.0", - "php": "^7.1 || ^8.0", - "symfony/config": "^3.4|^4.3|^5.0|^6.0", - "symfony/console": "^3.4|^4.3|^5.0|^6.0", - "symfony/dependency-injection": "^3.4.47|^4.3|^5.0|^6.0", - "symfony/doctrine-bridge": "^3.4|^4.1|^5.0|^6.0", - "symfony/http-kernel": "^3.4|^4.3|^5.0|^6.0" + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4|^3.0", + "php": "^7.4 || ^8.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/doctrine-bridge": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "^1.4.10", - "phpunit/phpunit": "^7.5.20 || ^8.5.26 || ^9.5.20", - "symfony/phpunit-bridge": "^6.0.8", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10.39", + "phpunit/phpunit": "^9.6.13", + "symfony/phpunit-bridge": "^6.3.6", + "vimeo/psalm": "^5.15" }, "type": "symfony-bundle", "autoload": { @@ -11689,7 +11606,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", - "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.4.4" + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/3.5.1" }, "funding": [ { @@ -11705,38 +11622,44 @@ "type": "tidelift" } ], - "time": "2023-05-02T15:12:16+00:00" + "time": "2023-11-19T12:48:54+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.2.4", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e" + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", - "reference": "94e6b0fe1a50901d52f59dbb9b4b0737718b2c1e", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1dd42906a5fb9c5960723e2ebb45c68006493835", + "reference": "1dd42906a5fb9c5960723e2ebb45c68006493835", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", + "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", "php": "^7.2|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0|~6.0" + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.6", - "doctrine/persistence": "^1.3||^2.0", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3 ", "phpstan/phpstan": "^1.4", "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", + "phpstan/phpstan-symfony": "^1.3", "phpunit/phpunit": "^8.5|^9.5", - "vimeo/psalm": "^4.22" + "psalm/plugin-phpunit": "^0.18.4", + "psalm/plugin-symfony": "^3 || ^5", + "symfony/phpunit-bridge": "^6.3 || ^7", + "symfony/var-exporter": "^5.4 || ^6 || ^7", + "vimeo/psalm": "^4.30 || ^5.15" }, "type": "symfony-bundle", "autoload": { @@ -11774,7 +11697,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.2.4" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.0" }, "funding": [ { @@ -11790,51 +11713,51 @@ "type": "tidelift" } ], - "time": "2023-06-02T08:19:26+00:00" + "time": "2023-11-13T19:44:41+00:00" }, { "name": "doctrine/migrations", - "version": "3.5.5", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204" + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204", - "reference": "4b1e2b6ba71d21d0c5be22ed03b6fc954d20b204", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/47af29eef49f29ebee545947e8b2a4b3be318c8a", + "reference": "47af29eef49f29ebee545947e8b2a4b3be318c8a", "shasum": "" }, "require": { "composer-runtime-api": "^2", - "doctrine/dbal": "^3.5.1", + "doctrine/dbal": "^3.5.1 || ^4", "doctrine/deprecations": "^0.5.3 || ^1", "doctrine/event-manager": "^1.2 || ^2.0", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^4.4.16 || ^5.4 || ^6.0", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", + "symfony/var-exporter": "^6.2 || ^7.0" }, "conflict": { - "doctrine/orm": "<2.12" + "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^9", - "doctrine/orm": "^2.13", + "doctrine/coding-standard": "^12", + "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.1", - "phpunit/phpunit": "^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/process": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0" + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-deprecation-rules": "^1.1", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-strict-rules": "^1.4", + "phpstan/phpstan-symfony": "^1.3", + "phpunit/phpunit": "^10.3", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -11876,7 +11799,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.5.5" + "source": "https://github.com/doctrine/migrations/tree/3.7.2" }, "funding": [ { @@ -11892,44 +11815,45 @@ "type": "tidelift" } ], - "time": "2023-01-18T12:44:30+00:00" + "time": "2023-12-05T11:35:05+00:00" }, { "name": "endroid/qr-code", - "version": "3.9.7", + "version": "4.8.5", "source": { "type": "git", "url": "https://github.com/endroid/qr-code.git", - "reference": "94563d7b3105288e6ac53a67ae720e3669fac1f6" + "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/endroid/qr-code/zipball/94563d7b3105288e6ac53a67ae720e3669fac1f6", - "reference": "94563d7b3105288e6ac53a67ae720e3669fac1f6", + "url": "https://api.github.com/repos/endroid/qr-code/zipball/0db25b506a8411a5e1644ebaa67123a6eb7b6a77", + "reference": "0db25b506a8411a5e1644ebaa67123a6eb7b6a77", "shasum": "" }, "require": { - "bacon/bacon-qr-code": "^2.0", - "khanamiryan/qrcode-detector-decoder": "^1.0.5", - "myclabs/php-enum": "^1.5", - "php": "^7.3||^8.0", - "symfony/options-resolver": "^3.4||^4.4||^5.0", - "symfony/property-access": "^3.4||^4.4||^5.0" + "bacon/bacon-qr-code": "^2.0.5", + "php": "^8.1" + }, + "conflict": { + "khanamiryan/qrcode-detector-decoder": "^1.0.6" }, "require-dev": { - "endroid/quality": "^1.5.2", - "setasign/fpdf": "^1.8" + "endroid/quality": "dev-master", + "ext-gd": "*", + "khanamiryan/qrcode-detector-decoder": "^1.0.4||^2.0.2", + "setasign/fpdf": "^1.8.2" }, "suggest": { - "ext-gd": "Required for generating PNG images", - "roave/security-advisories": "Avoids installation of package versions with vulnerabilities", - "setasign/fpdf": "Required to use the FPDF writer.", - "symfony/security-checker": "Checks your composer.lock for vulnerabilities" + "ext-gd": "Enables you to write PNG images", + "khanamiryan/qrcode-detector-decoder": "Enables you to use the image validator", + "roave/security-advisories": "Makes sure package versions with known security issues are not installed", + "setasign/fpdf": "Enables you to use the PDF writer" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -11950,7 +11874,6 @@ "description": "Endroid QR Code", "homepage": "https://github.com/endroid/qr-code", "keywords": [ - "bundle", "code", "endroid", "php", @@ -11959,7 +11882,7 @@ ], "support": { "issues": "https://github.com/endroid/qr-code/issues", - "source": "https://github.com/endroid/qr-code/tree/3.9.7" + "source": "https://github.com/endroid/qr-code/tree/4.8.5" }, "funding": [ { @@ -11967,20 +11890,20 @@ "type": "github" } ], - "time": "2021-04-20T19:10:54+00:00" + "time": "2023-09-29T14:03:20+00:00" }, { "name": "firebase/php-jwt", - "version": "v6.9.0", + "version": "v6.10.0", "source": { "type": "git", "url": "https://github.com/firebase/php-jwt.git", - "reference": "f03270e63eaccf3019ef0f32849c497385774e11" + "reference": "a49db6f0a5033aef5143295342f1c95521b075ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/f03270e63eaccf3019ef0f32849c497385774e11", - "reference": "f03270e63eaccf3019ef0f32849c497385774e11", + "url": "https://api.github.com/repos/firebase/php-jwt/zipball/a49db6f0a5033aef5143295342f1c95521b075ff", + "reference": "a49db6f0a5033aef5143295342f1c95521b075ff", "shasum": "" }, "require": { @@ -12028,228 +11951,26 @@ ], "support": { "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v6.9.0" + "source": "https://github.com/firebase/php-jwt/tree/v6.10.0" }, - "time": "2023-10-05T00:24:42+00:00" - }, - { - "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.16", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/ecadbdc9052e4ad08c60c8a02268712e50427f7c", - "reference": "ecadbdc9052e4ad08c60c8a02268712e50427f7c", - "shasum": "" - }, - "require": { - "laminas/laminas-code": "~3.4.1|^4.0", - "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" - }, - "conflict": { - "laminas/laminas-stdlib": "<3.2.1", - "zendframework/zend-stdlib": "<3.2.1" - }, - "replace": { - "ocramius/proxy-manager": "^2.1" - }, - "require-dev": { - "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" - }, - "type": "library", - "extra": { - "thanks": { - "name": "ocramius/proxy-manager", - "url": "https://github.com/Ocramius/ProxyManager" - } - }, - "autoload": { - "psr-4": { - "ProxyManager\\": "src/ProxyManager" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", - "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.16" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", - "type": "tidelift" - } - ], - "time": "2023-05-24T07:17:17+00:00" - }, - { - "name": "khanamiryan/qrcode-detector-decoder", - "version": "1.0.6", - "source": { - "type": "git", - "url": "https://github.com/khanamiryan/php-qrcode-detector-decoder.git", - "reference": "45326fb83a2a375065dbb3a134b5b8a5872da569" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/45326fb83a2a375065dbb3a134b5b8a5872da569", - "reference": "45326fb83a2a375065dbb3a134b5b8a5872da569", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "phpunit/phpunit": "^5.7 | ^7.5 | ^8.0 | ^9.0", - "rector/rector": "^0.13.6", - "symplify/easy-coding-standard": "^11.0" - }, - "type": "library", - "autoload": { - "files": [ - "lib/Common/customFunctions.php" - ], - "psr-4": { - "Zxing\\": "lib/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT", - "Apache-2.0" - ], - "authors": [ - { - "name": "Ashot Khanamiryan", - "email": "a.khanamiryan@gmail.com", - "homepage": "https://github.com/khanamiryan", - "role": "Developer" - } - ], - "description": "QR code decoder / reader", - "homepage": "https://github.com/khanamiryan/php-qrcode-detector-decoder/", - "keywords": [ - "barcode", - "qr", - "zxing" - ], - "support": { - "issues": "https://github.com/khanamiryan/php-qrcode-detector-decoder/issues", - "source": "https://github.com/khanamiryan/php-qrcode-detector-decoder/tree/1.0.6" - }, - "time": "2022-06-29T09:25:13+00:00" - }, - { - "name": "laminas/laminas-code", - "version": "4.13.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "7353d4099ad5388e84737dd16994316a04f48dbf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/7353d4099ad5388e84737dd16994316a04f48dbf", - "reference": "7353d4099ad5388e84737dd16994316a04f48dbf", - "shasum": "" - }, - "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0.1", - "ext-phar": "*", - "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.15.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas", - "laminasframework" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2023-10-18T10:00:55+00:00" + "time": "2023-12-01T16:26:39+00:00" }, { "name": "laminas/laminas-diactoros", - "version": "2.25.2", + "version": "2.26.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e" + "reference": "6584d44eb8e477e89d453313b858daac6183cddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", - "reference": "9f3f4bf5b99c9538b6f1dbcc20f6fec357914f9e", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/6584d44eb8e477e89d453313b858daac6183cddc", + "reference": "6584d44eb8e477e89d453313b858daac6183cddc", "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", "psr/http-factory": "^1.0", "psr/http-message": "^1.1" }, @@ -12329,20 +12050,20 @@ "type": "community_bridge" } ], - "time": "2023-04-17T15:44:17+00:00" + "time": "2023-10-29T16:17:44+00:00" }, { "name": "monolog/monolog", - "version": "2.9.1", + "version": "2.9.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", - "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", + "reference": "437cb3628f4cf6042cc10ae97fc2b8472e48ca1f", "shasum": "" }, "require": { @@ -12419,7 +12140,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.9.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.2" }, "funding": [ { @@ -12431,92 +12152,29 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:44:46+00:00" - }, - { - "name": "myclabs/php-enum", - "version": "1.8.4", - "source": { - "type": "git", - "url": "https://github.com/myclabs/php-enum.git", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", - "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", - "shasum": "" - }, - "require": { - "ext-json": "*", - "php": "^7.3 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "1.*", - "vimeo/psalm": "^4.6.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "MyCLabs\\Enum\\": "src/" - }, - "classmap": [ - "stubs/Stringable.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP Enum contributors", - "homepage": "https://github.com/myclabs/php-enum/graphs/contributors" - } - ], - "description": "PHP Enum implementation", - "homepage": "http://github.com/myclabs/php-enum", - "keywords": [ - "enum" - ], - "support": { - "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.4" - }, - "funding": [ - { - "url": "https://github.com/mnapoli", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/php-enum", - "type": "tidelift" - } - ], - "time": "2022-08-04T09:53:51+00:00" + "time": "2023-10-27T15:25:26+00:00" }, { "name": "nelmio/cors-bundle", - "version": "2.3.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/nelmio/NelmioCorsBundle.git", - "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281" + "reference": "78fcdb91f76b080a1008133def9c7f613833933d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/185d2c0ae50a3f0b628790170164d5f1c5b7c281", - "reference": "185d2c0ae50a3f0b628790170164d5f1c5b7c281", + "url": "https://api.github.com/repos/nelmio/NelmioCorsBundle/zipball/78fcdb91f76b080a1008133def9c7f613833933d", + "reference": "78fcdb91f76b080a1008133def9c7f613833933d", "shasum": "" }, "require": { "psr/log": "^1.0 || ^2.0 || ^3.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0" + "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "mockery/mockery": "^1.2", - "symfony/phpunit-bridge": "^4.4 || ^5.4 || ^6.0" + "mockery/mockery": "^1.3.6", + "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -12554,9 +12212,9 @@ ], "support": { "issues": "https://github.com/nelmio/NelmioCorsBundle/issues", - "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.3.1" + "source": "https://github.com/nelmio/NelmioCorsBundle/tree/2.4.0" }, - "time": "2023-02-16T08:49:29+00:00" + "time": "2023-11-30T16:41:19+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -12807,16 +12465,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.39", + "version": "1.10.50", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4" + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/d9dedb0413f678b4d03cbc2279a48f91592c97c4", - "reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/06a98513ac72c03e8366b5a0cb00750b487032e4", + "reference": "06a98513ac72c03e8366b5a0cb00750b487032e4", "shasum": "" }, "require": { @@ -12865,7 +12523,7 @@ "type": "tidelift" } ], - "time": "2023-10-17T15:46:26+00:00" + "time": "2023-12-13T10:59:42+00:00" }, { "name": "phpstan/phpstan-phpunit", @@ -12921,16 +12579,16 @@ }, { "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": { @@ -12987,9 +12645,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": "sabberworm/php-css-parser", @@ -13046,39 +12704,39 @@ }, { "name": "scheb/2fa-bundle", - "version": "v5.13.2", + "version": "v6.12.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-bundle.git", - "reference": "dc575cc7bc94fa3a52b547698086f2ef015d2e81" + "reference": "6e51477c53070f27ac3e3d36be1a991870db415a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/dc575cc7bc94fa3a52b547698086f2ef015d2e81", - "reference": "dc575cc7bc94fa3a52b547698086f2ef015d2e81", + "url": "https://api.github.com/repos/scheb/2fa-bundle/zipball/6e51477c53070f27ac3e3d36be1a991870db415a", + "reference": "6e51477c53070f27ac3e3d36be1a991870db415a", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0", - "symfony/dependency-injection": "^4.4|^5.0", - "symfony/event-dispatcher": "^4.4|^5.0", - "symfony/framework-bundle": "^4.4|^5.0", - "symfony/http-foundation": "^4.4|^5.0", - "symfony/http-kernel": "^4.4|^5.0", - "symfony/property-access": "^4.4|^5.0", - "symfony/security-bundle": "^4.4.1|^5.0", - "symfony/twig-bundle": "^4.4|^5.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", + "symfony/framework-bundle": "^5.4 || ^6.0", + "symfony/http-foundation": "^5.4 || ^6.0", + "symfony/http-kernel": "^5.4 || ^6.0", + "symfony/property-access": "^5.4 || ^6.0", + "symfony/security-bundle": "^5.4 || ^6.0", + "symfony/twig-bundle": "^5.4 || ^6.0" }, "conflict": { - "scheb/two-factor-bundle": "*" + "scheb/two-factor-bundle": "*", + "symfony/security-core": "^7" }, "suggest": { "scheb/2fa-backup-code": "Emergency codes when you have no access to other methods", "scheb/2fa-email": "Send codes by email", "scheb/2fa-google-authenticator": "Google Authenticator support", - "scheb/2fa-qr-code": "Generate QR codes for Google Authenticator / TOTP", "scheb/2fa-totp": "Temporary one-time password (TOTP) support (Google Authenticator compatible)", "scheb/2fa-trusted-device": "Trusted devices support" }, @@ -13108,25 +12766,26 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-bundle/tree/v5.13.2" + "source": "https://github.com/scheb/2fa-bundle/tree/v6.12.0" }, - "time": "2022-04-16T10:18:34+00:00" + "time": "2023-12-03T16:02:15+00:00" }, { "name": "scheb/2fa-email", - "version": "v5.13.2", + "version": "v6.12.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-email.git", - "reference": "a1359b763cd1c1d4bea314ca630cc062cdbdbc17" + "reference": "c01162091d7c8ce4553112de70d8c4e1d758166f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-email/zipball/a1359b763cd1c1d4bea314ca630cc062cdbdbc17", - "reference": "a1359b763cd1c1d4bea314ca630cc062cdbdbc17", + "url": "https://api.github.com/repos/scheb/2fa-email/zipball/c01162091d7c8ce4553112de70d8c4e1d758166f", + "reference": "c01162091d7c8ce4553112de70d8c4e1d758166f", "shasum": "" }, "require": { + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "scheb/2fa-bundle": "self.version" }, "type": "library", @@ -13156,77 +12815,29 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-email/tree/v5.13.2" + "source": "https://github.com/scheb/2fa-email/tree/v6.12.0" }, - "time": "2022-01-03T10:21:24+00:00" - }, - { - "name": "scheb/2fa-qr-code", - "version": "v5.13.2", - "source": { - "type": "git", - "url": "https://github.com/scheb/2fa-qr-code.git", - "reference": "1b30d3f32c443c20ddbd4830c7b41dfd17e4dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-qr-code/zipball/1b30d3f32c443c20ddbd4830c7b41dfd17e4dcaf", - "reference": "1b30d3f32c443c20ddbd4830c7b41dfd17e4dcaf", - "shasum": "" - }, - "require": { - "endroid/qr-code": "^3.0", - "scheb/2fa-bundle": "self.version" - }, - "type": "library", - "autoload": { - "psr-4": { - "Scheb\\TwoFactorBundle\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Scheb", - "email": "me@christianscheb.de" - } - ], - "description": "Extends scheb/2fa-bundle with the ability to render QR-codes for Google Authenticator or TOTP", - "homepage": "https://github.com/scheb/2fa", - "keywords": [ - "2fa", - "Authentication", - "qr-code", - "symfony", - "two-factor", - "two-step" - ], - "support": { - "source": "https://github.com/scheb/2fa-qr-code/tree/v5.13.2" - }, - "time": "2022-01-03T10:21:24+00:00" + "time": "2023-12-03T15:44:26+00:00" }, { "name": "scheb/2fa-totp", - "version": "v5.13.2", + "version": "v6.12.0", "source": { "type": "git", "url": "https://github.com/scheb/2fa-totp.git", - "reference": "6b03afbfeedd3e6fab491690a9702410e2770244" + "reference": "a233f4638b75941e97f089c4c917f6101f2983e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scheb/2fa-totp/zipball/6b03afbfeedd3e6fab491690a9702410e2770244", - "reference": "6b03afbfeedd3e6fab491690a9702410e2770244", + "url": "https://api.github.com/repos/scheb/2fa-totp/zipball/a233f4638b75941e97f089c4c917f6101f2983e3", + "reference": "a233f4638b75941e97f089c4c917f6101f2983e3", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^2.2", + "paragonie/constant_time_encoding": "^2.4", + "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", "scheb/2fa-bundle": "self.version", - "spomky-labs/otphp": "^9.1|^10.0" + "spomky-labs/otphp": "^10.0 || ^11.0" }, "type": "library", "autoload": { @@ -13255,127 +12866,44 @@ "two-step" ], "support": { - "source": "https://github.com/scheb/2fa-totp/tree/v5.13.2" + "source": "https://github.com/scheb/2fa-totp/tree/v6.12.0" }, - "time": "2022-01-03T10:21:24+00:00" - }, - { - "name": "sensio/framework-extra-bundle", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0|^2.0", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.5", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/monolog-bridge": "^4.0|^5.0|^6.0", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "6.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" - }, - "exclude-from-classmap": [ - "/tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "This bundle provides a way to configure your controllers with annotations", - "keywords": [ - "annotations", - "controllers" - ], - "support": { - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" - }, - "abandoned": "Symfony", - "time": "2023-02-24T14:57:12+00:00" + "time": "2023-12-03T15:44:26+00:00" }, { "name": "spomky-labs/otphp", - "version": "v10.0.3", + "version": "11.2.0", "source": { "type": "git", "url": "https://github.com/Spomky-Labs/otphp.git", - "reference": "9784d9f7c790eed26e102d6c78f12c754036c366" + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9784d9f7c790eed26e102d6c78f12c754036c366", - "reference": "9784d9f7c790eed26e102d6c78f12c754036c366", + "url": "https://api.github.com/repos/Spomky-Labs/otphp/zipball/9a1569038bb1c8e98040b14b8bcbba54f25e7795", + "reference": "9a1569038bb1c8e98040b14b8bcbba54f25e7795", "shasum": "" }, "require": { - "beberlei/assert": "^3.0", "ext-mbstring": "*", "paragonie/constant_time_encoding": "^2.0", - "php": "^7.2|^8.0", - "thecodingmachine/safe": "^0.1.14|^1.0|^2.0" + "php": "^8.1" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-beberlei-assert": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^8.0", - "thecodingmachine/phpstan-safe-rule": "^1.0 || ^2.0" + "ekino/phpstan-banned-code": "^1.0", + "infection/infection": "^0.26", + "php-parallel-lint/php-parallel-lint": "^1.3", + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5.26", + "qossmic/deptrac-shim": "^1.0", + "rector/rector": "^0.15", + "symfony/phpunit-bridge": "^6.1", + "symplify/easy-coding-standard": "^11.0" }, "type": "library", - "extra": { - "branch-alias": { - "v10.0": "10.0.x-dev", - "v9.0": "9.0.x-dev", - "v8.3": "8.3.x-dev" - } - }, "autoload": { "psr-4": { "OTPHP\\": "src/" @@ -13408,44 +12936,49 @@ ], "support": { "issues": "https://github.com/Spomky-Labs/otphp/issues", - "source": "https://github.com/Spomky-Labs/otphp/tree/v10.0.3" + "source": "https://github.com/Spomky-Labs/otphp/tree/11.2.0" }, - "time": "2022-03-17T08:00:35+00:00" + "funding": [ + { + "url": "https://github.com/Spomky", + "type": "github" + }, + { + "url": "https://www.patreon.com/FlorentMorselli", + "type": "patreon" + } + ], + "time": "2023-03-16T19:16:25+00:00" }, { "name": "symfony/debug-bundle", - "version": "v5.4.26", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/debug-bundle.git", - "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8" + "reference": "1e07027423d1d37125b60a50997ada26a9d9d202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/17c372891d4554d5d2f5cf602aef02c859ad52d8", - "reference": "17c372891d4554d5d2f5cf602aef02c859ad52d8", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/1e07027423d1d37125b60a50997ada26a9d9d202", + "reference": "1e07027423d1d37125b60a50997ada26a9d9d202", "shasum": "" }, "require": { "ext-xml": "*", - "php": ">=7.2.5", - "symfony/http-kernel": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" + "php": ">=8.1", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/twig-bridge": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/config": "<4.4", - "symfony/dependency-injection": "<5.2" + "symfony/config": "<5.4", + "symfony/dependency-injection": "<5.4" }, "require-dev": { - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/web-profiler-bundle": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/config": "For service container configuration", - "symfony/dependency-injection": "For using as a service from the container" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/web-profiler-bundle": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -13473,7 +13006,7 @@ "description": "Provides a tight integration of the Symfony VarDumper component and the ServerLogCommand from MonologBridge into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/debug-bundle/tree/v5.4.26" + "source": "https://github.com/symfony/debug-bundle/tree/v6.4.0" }, "funding": [ { @@ -13489,29 +13022,32 @@ "type": "tidelift" } ], - "time": "2023-07-11T21:42:03+00:00" + "time": "2023-11-01T12:07:38+00:00" }, { "name": "symfony/dotenv", - "version": "v5.4.22", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3" + "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/77b7660bfcb85e8f28287d557d7af0046bcd2ca3", - "reference": "77b7660bfcb85e8f28287d557d7af0046bcd2ca3", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f", + "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -13544,7 +13080,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.22" + "source": "https://github.com/symfony/dotenv/tree/v6.4.0" }, "funding": [ { @@ -13560,20 +13096,20 @@ "type": "tidelift" } ], - "time": "2023-03-09T20:36:58+00:00" + "time": "2023-10-26T18:19:48+00:00" }, { "name": "symfony/flex", - "version": "v2.4.0", + "version": "v2.4.2", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9" + "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/46bebc3d097d1bb1dce04c5ba83658afd79988f9", - "reference": "46bebc3d097d1bb1dce04c5ba83658afd79988f9", + "url": "https://api.github.com/repos/symfony/flex/zipball/67ee785f1aedada76461de7a7ec10cd7f8ff8d36", + "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36", "shasum": "" }, "require": { @@ -13609,7 +13145,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.2" }, "funding": [ { @@ -13625,36 +13161,38 @@ "type": "tidelift" } ], - "time": "2023-10-22T18:05:25+00:00" + "time": "2023-12-05T14:09:35+00:00" }, { "name": "symfony/http-client", - "version": "v5.4.29", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "04784c66cbee613a827363ee1e65db65392893c1" + "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/04784c66cbee613a827363ee1e65db65392893c1", - "reference": "04784c66cbee613a827363ee1e65db65392893c1", + "url": "https://api.github.com/repos/symfony/http-client/zipball/5c584530b77aa10ae216989ffc48b4bedc9c0b29", + "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-client-contracts": "^2.4", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2|^3" + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "2.4" + "symfony/http-client-implementation": "3.0" }, "require-dev": { "amphp/amp": "^2.5", @@ -13664,12 +13202,12 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", - "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -13700,7 +13238,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v5.4.29" + "source": "https://github.com/symfony/http-client/tree/v6.4.0" }, "funding": [ { @@ -13716,32 +13254,29 @@ "type": "tidelift" } ], - "time": "2023-09-14T20:49:15+00:00" + "time": "2023-11-28T20:55:58+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v2.5.2", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" + "reference": "1ee70e699b41909c209a0c930f11034b93578654" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", - "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", + "reference": "1ee70e699b41909c209a0c930f11034b93578654", "shasum": "" }, "require": { - "php": ">=7.2.5" - }, - "suggest": { - "symfony/http-client-implementation": "" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.4-dev" }, "thanks": { "name": "symfony/contracts", @@ -13751,7 +13286,10 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -13778,7 +13316,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0" }, "funding": [ { @@ -13794,34 +13332,34 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2023-07-30T20:28:31+00:00" }, { "name": "symfony/lock", - "version": "v5.4.25", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/lock.git", - "reference": "ed4055b2e03c8893ce2d0042c8f0e0707be8e179" + "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/lock/zipball/ed4055b2e03c8893ce2d0042c8f0e0707be8e179", - "reference": "ed4055b2e03c8893ce2d0042c8f0e0707be8e179", + "url": "https://api.github.com/repos/symfony/lock/zipball/49c2d0ae4777d118edb13f23d0b4f125d7302cb3", + "reference": "49c2d0ae4777d118edb13f23d0b4f125d7302cb3", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { - "doctrine/dbal": "<2.13" + "doctrine/dbal": "<2.13", + "symfony/cache": "<6.2" }, "require-dev": { - "doctrine/dbal": "^2.13|^3.0", - "predis/predis": "~1.0" + "doctrine/dbal": "^2.13|^3|^4", + "predis/predis": "^1.1|^2.0" }, "type": "library", "autoload": { @@ -13857,7 +13395,7 @@ "semaphore" ], "support": { - "source": "https://github.com/symfony/lock/tree/v5.4.25" + "source": "https://github.com/symfony/lock/tree/v6.4.0" }, "funding": [ { @@ -13873,47 +13411,42 @@ "type": "tidelift" } ], - "time": "2023-06-22T08:06:06+00:00" + "time": "2023-11-21T09:41:01+00:00" }, { "name": "symfony/monolog-bridge", - "version": "v5.4.22", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bridge.git", - "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a" + "reference": "c262c2f54ce7e160a231808817f306f880c32750" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/34be6f0695e4187dbb832a05905fb4c6581ac39a", - "reference": "34be6f0695e4187dbb832a05905fb4c6581ac39a", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/c262c2f54ce7e160a231808817f306f880c32750", + "reference": "c262c2f54ce7e160a231808817f306f880c32750", "shasum": "" }, "require": { - "monolog/monolog": "^1.25.1|^2", - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "monolog/monolog": "^1.25.1|^2|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/console": "<4.4", - "symfony/http-foundation": "<5.3" + "symfony/console": "<5.4", + "symfony/http-foundation": "<5.4", + "symfony/security-core": "<6.0" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mailer": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/security-core": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings.", - "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", - "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "symfony-bridge", "autoload": { @@ -13941,7 +13474,7 @@ "description": "Provides integration for Monolog with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/monolog-bridge/tree/v5.4.22" + "source": "https://github.com/symfony/monolog-bridge/tree/v6.4.0" }, "funding": [ { @@ -13957,34 +13490,34 @@ "type": "tidelift" } ], - "time": "2023-03-06T21:29:33+00:00" + "time": "2023-10-31T08:18:17+00:00" }, { "name": "symfony/monolog-bundle", - "version": "v3.8.0", + "version": "v3.10.0", "source": { "type": "git", "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d" + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", - "reference": "a41bbcdc1105603b6d73a7d9a43a3788f8e0fb7d", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", + "reference": "414f951743f4aa1fd0f5bf6a0e9c16af3fe7f181", "shasum": "" }, "require": { - "monolog/monolog": "^1.22 || ^2.0 || ^3.0", - "php": ">=7.1.3", - "symfony/config": "~4.4 || ^5.0 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.0 || ^6.0", - "symfony/http-kernel": "~4.4 || ^5.0 || ^6.0", - "symfony/monolog-bridge": "~4.4 || ^5.0 || ^6.0" + "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", + "php": ">=7.2.5", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", + "symfony/monolog-bridge": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "symfony/console": "~4.4 || ^5.0 || ^6.0", - "symfony/phpunit-bridge": "^5.2 || ^6.0", - "symfony/yaml": "~4.4 || ^5.0 || ^6.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/phpunit-bridge": "^6.3 || ^7.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0" }, "type": "symfony-bundle", "extra": { @@ -14022,7 +13555,7 @@ ], "support": { "issues": "https://github.com/symfony/monolog-bundle/issues", - "source": "https://github.com/symfony/monolog-bundle/tree/v3.8.0" + "source": "https://github.com/symfony/monolog-bundle/tree/v3.10.0" }, "funding": [ { @@ -14038,34 +13571,32 @@ "type": "tidelift" } ], - "time": "2022-05-10T14:24:36+00:00" + "time": "2023-11-06T17:08:13+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v5.4.26", + "version": "v6.4.1", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "d04639b395e25efa4260fc5b12a9fa1eafb38a64" + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/d04639b395e25efa4260fc5b12a9fa1eafb38a64", - "reference": "d04639b395e25efa4260fc5b12a9fa1eafb38a64", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", + "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=7.1.3" }, "conflict": { "phpunit/phpunit": "<7.5|9.1.2" }, "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/error-handler": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/polyfill-php81": "^1.27" }, "bin": [ "bin/simple-phpunit" @@ -14105,7 +13636,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v5.4.26" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" }, "funding": [ { @@ -14121,48 +13652,35 @@ "type": "tidelift" } ], - "time": "2023-07-12T15:44:31+00:00" + "time": "2023-12-01T09:25:07+00:00" }, { - "name": "symfony/web-profiler-bundle", - "version": "v5.4.26", + "name": "symfony/redis-messenger", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a08572ac2e4aea7ed85065524bb4fe3ace6c81c3" + "url": "https://github.com/symfony/redis-messenger.git", + "reference": "8cf5116eca61bb8bcf533869e7d4643e6f07b572" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a08572ac2e4aea7ed85065524bb4fe3ace6c81c3", - "reference": "a08572ac2e4aea7ed85065524bb4fe3ace6c81c3", + "url": "https://api.github.com/repos/symfony/redis-messenger/zipball/8cf5116eca61bb8bcf533869e7d4643e6f07b572", + "reference": "8cf5116eca61bb8bcf533869e7d4643e6f07b572", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.3|^6.0", - "symfony/http-kernel": "^5.3|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "twig/twig": "^2.13|^3.0.4" - }, - "conflict": { - "symfony/dependency-injection": "<5.2", - "symfony/form": "<4.4", - "symfony/mailer": "<5.4", - "symfony/messenger": "<4.4" + "ext-redis": "*", + "php": ">=8.1", + "symfony/messenger": "^6.1|^7.0" }, "require-dev": { - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0" + "symfony/property-access": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.0|^7.0" }, - "type": "symfony-bundle", + "type": "symfony-messenger-bridge", "autoload": { "psr-4": { - "Symfony\\Bundle\\WebProfilerBundle\\": "" + "Symfony\\Component\\Messenger\\Bridge\\Redis\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -14182,10 +13700,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides a development tool that gives detailed information about the execution of any request", + "description": "Symfony Redis extension Messenger Bridge", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v5.4.26" + "source": "https://github.com/symfony/redis-messenger/tree/v6.4.0" }, "funding": [ { @@ -14201,146 +13719,89 @@ "type": "tidelift" } ], - "time": "2023-07-19T19:34:05+00:00" + "time": "2023-11-24T19:28:07+00:00" }, { - "name": "thecodingmachine/safe", - "version": "v2.5.0", + "name": "symfony/web-profiler-bundle", + "version": "v6.4.0", "source": { "type": "git", - "url": "https://github.com/thecodingmachine/safe.git", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0" + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thecodingmachine/safe/zipball/3115ecd6b4391662b4931daac4eba6b07a2ac1f0", - "reference": "3115ecd6b4391662b4931daac4eba6b07a2ac1f0", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/14752d3fb77c3c69b6cee7c03c06e2d6494a196b", + "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b", "shasum": "" }, "require": { - "php": "^8.0" + "php": ">=8.1", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0", + "twig/twig": "^2.13|^3.0.4" }, - "require-dev": { - "phpstan/phpstan": "^1.5", - "phpunit/phpunit": "^9.5", - "squizlabs/php_codesniffer": "^3.2", - "thecodingmachine/phpstan-strict-rules": "^1.0" + "conflict": { + "symfony/form": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/twig-bundle": ">=7.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2.x-dev" - } + "require-dev": { + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, + "type": "symfony-bundle", "autoload": { - "files": [ - "deprecated/apc.php", - "deprecated/array.php", - "deprecated/datetime.php", - "deprecated/libevent.php", - "deprecated/misc.php", - "deprecated/password.php", - "deprecated/mssql.php", - "deprecated/stats.php", - "deprecated/strings.php", - "lib/special_cases.php", - "deprecated/mysqli.php", - "generated/apache.php", - "generated/apcu.php", - "generated/array.php", - "generated/bzip2.php", - "generated/calendar.php", - "generated/classobj.php", - "generated/com.php", - "generated/cubrid.php", - "generated/curl.php", - "generated/datetime.php", - "generated/dir.php", - "generated/eio.php", - "generated/errorfunc.php", - "generated/exec.php", - "generated/fileinfo.php", - "generated/filesystem.php", - "generated/filter.php", - "generated/fpm.php", - "generated/ftp.php", - "generated/funchand.php", - "generated/gettext.php", - "generated/gmp.php", - "generated/gnupg.php", - "generated/hash.php", - "generated/ibase.php", - "generated/ibmDb2.php", - "generated/iconv.php", - "generated/image.php", - "generated/imap.php", - "generated/info.php", - "generated/inotify.php", - "generated/json.php", - "generated/ldap.php", - "generated/libxml.php", - "generated/lzf.php", - "generated/mailparse.php", - "generated/mbstring.php", - "generated/misc.php", - "generated/mysql.php", - "generated/network.php", - "generated/oci8.php", - "generated/opcache.php", - "generated/openssl.php", - "generated/outcontrol.php", - "generated/pcntl.php", - "generated/pcre.php", - "generated/pgsql.php", - "generated/posix.php", - "generated/ps.php", - "generated/pspell.php", - "generated/readline.php", - "generated/rpminfo.php", - "generated/rrd.php", - "generated/sem.php", - "generated/session.php", - "generated/shmop.php", - "generated/sockets.php", - "generated/sodium.php", - "generated/solr.php", - "generated/spl.php", - "generated/sqlsrv.php", - "generated/ssdeep.php", - "generated/ssh2.php", - "generated/stream.php", - "generated/strings.php", - "generated/swoole.php", - "generated/uodbc.php", - "generated/uopz.php", - "generated/url.php", - "generated/var.php", - "generated/xdiff.php", - "generated/xml.php", - "generated/xmlrpc.php", - "generated/yaml.php", - "generated/yaz.php", - "generated/zip.php", - "generated/zlib.php" - ], - "classmap": [ - "lib/DateTime.php", - "lib/DateTimeImmutable.php", - "lib/Exceptions/", - "deprecated/Exceptions/", - "generated/Exceptions/" + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "PHP core functions that throw exceptions instead of returning FALSE on error", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides a development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], "support": { - "issues": "https://github.com/thecodingmachine/safe/issues", - "source": "https://github.com/thecodingmachine/safe/tree/v2.5.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.0" }, - "time": "2023-04-05T11:54:14+00:00" + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2023-11-07T14:57:07+00:00" } ], "aliases": [], diff --git a/config/bootstrap.php b/config/bootstrap.php index 89abc7ded..9d6fd404c 100644 --- a/config/bootstrap.php +++ b/config/bootstrap.php @@ -14,7 +14,7 @@ throw new RuntimeException('Please run "composer require symfony/dotenv" to load the ".env" files configuring the application.'); } else { // load all the .env files - (new Dotenv(false))->loadEnv(dirname(__DIR__).'/.env'); + (new Dotenv())->loadEnv(dirname(__DIR__).'/.env'); } $_SERVER += $_ENV; diff --git a/config/bundles.php b/config/bundles.php index ca5efe40f..52c6a06aa 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -18,7 +18,6 @@ Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true], - Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], Draw\Bundle\SonataExtraBundle\DrawSonataExtraBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true], diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 03bd4ae3c..95707cef5 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -18,7 +18,7 @@ doctrine: charset: 'utf8mb4' default_table_options: charset: 'utf8mb4' - collate: 'utf8mb4_unicode_ci' + collation: 'utf8mb4_unicode_ci' url: '%env(resolve:DATABASE_URL)%' replicas: slave1: @@ -28,6 +28,8 @@ doctrine: bigint: 'Draw\DoctrineExtra\DBAL\Types\BigIntType' orm: auto_generate_proxy_classes: true + enable_lazy_ghost_objects: true + report_fields_where_declared: true naming_strategy: 'doctrine.orm.naming_strategy.underscore_number_aware' auto_mapping: true mappings: diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml index f6f581a25..74b9c7cc5 100644 --- a/config/packages/framework.yaml +++ b/config/packages/framework.yaml @@ -2,7 +2,9 @@ framework: secret: '%env(APP_SECRET)%' #csrf_protection: true + annotations: false http_method_override: false + handle_all_throwables: true # Enables session support. Note that the session will ONLY be started if you read or write from it. # Remove or comment this section to explicitly disable session support. @@ -10,7 +12,6 @@ framework: handler_id: null cookie_secure: auto cookie_samesite: lax - storage_factory_id: session.storage.factory.native form: enabled: true @@ -29,3 +30,6 @@ when@test: test: true session: storage_factory_id: session.storage.factory.mock_file + + php_errors: + log: true diff --git a/config/packages/lock.yaml b/config/packages/lock.yaml new file mode 100644 index 000000000..574879f83 --- /dev/null +++ b/config/packages/lock.yaml @@ -0,0 +1,2 @@ +framework: + lock: '%env(LOCK_DSN)%' diff --git a/config/packages/messenger.yaml b/config/packages/messenger.yaml index caea6ef53..89a866fc3 100644 --- a/config/packages/messenger.yaml +++ b/config/packages/messenger.yaml @@ -1,6 +1,5 @@ framework: messenger: - reset_on_message: true failure_transport: 'failed' transports: diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 91c546c4f..1bfaf1de5 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -9,7 +9,6 @@ security: - 'ROLE_SONATA_ADMIN' - 'ROLE_APP\SONATA\ADMIN\TAGADMIN_ALL' - enable_authenticator_manager: true # https://symfony.com/doc/current/security.html#registering-the-user-hashing-passwords password_hashers: Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface: 'auto' diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml deleted file mode 100644 index 8c5fbba37..000000000 --- a/config/packages/sensio_framework_extra.yaml +++ /dev/null @@ -1,6 +0,0 @@ -sensio_framework_extra: - request: - converters: true - auto_convert: false - router: - annotations: false diff --git a/config/packages/sonata_admin.yaml b/config/packages/sonata_admin.yaml index 53ab5ab87..be88a46e3 100644 --- a/config/packages/sonata_admin.yaml +++ b/config/packages/sonata_admin.yaml @@ -75,7 +75,6 @@ sonata_admin: role_super_admin: 'ROLE_SUPER_ADMIN' sonata_block: - http_cache: false blocks: sonata.admin.block.admin_list: contexts: [ 'admin' ] diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml deleted file mode 100644 index 5dac23c0c..000000000 --- a/config/packages/test/framework.yaml +++ /dev/null @@ -1,7 +0,0 @@ -framework: - test: true - session: - storage_id: session.storage.mock_file - - php_errors: - log: true diff --git a/config/routes/annotations.yaml b/config/routes/annotations.yaml index 60b3232f4..020d0eaad 100644 --- a/config/routes/annotations.yaml +++ b/config/routes/annotations.yaml @@ -1,10 +1,10 @@ controllers: resource: '../../app/src/Controller/' - type: 'annotation' + type: 'attribute' api_controllers: resource: '../../app/src/Controller/Api' - type: 'annotation' + type: 'attribute' format: "json" prefix: "/api" diff --git a/config/routes/draw_open_api.yaml b/config/routes/draw_open_api.yaml index 8101408be..056193ea8 100644 --- a/config/routes/draw_open_api.yaml +++ b/config/routes/draw_open_api.yaml @@ -3,5 +3,5 @@ swagger: test: resource: '../../packages/open-api/Tests/Mock/Controller/TestController.php' - type: 'annotation' + type: 'attribute' format: 'json' diff --git a/config/routes/draw_sonata_extra.yaml b/config/routes/draw_sonata_extra.yaml index ce3e68b0b..615a5c486 100644 --- a/config/routes/draw_sonata_extra.yaml +++ b/config/routes/draw_sonata_extra.yaml @@ -1,4 +1,4 @@ keep_alive: resource: '@DrawSonataExtraBundle/Controller/KeepAliveController.php' - type: 'annotation' + type: 'attribute' prefix: /admin diff --git a/config/routes/draw_user.yaml b/config/routes/draw_user.yaml index 07d7e03c6..7eb2e9c36 100644 --- a/config/routes/draw_user.yaml +++ b/config/routes/draw_user.yaml @@ -1,11 +1,11 @@ sonata: resource: "@DrawSonataIntegrationBundle/User/Controller" - type: "annotation" + type: "attribute" prefix: "/admin" api: resource: "@DrawUserBundle/Controller/Api" - type: "annotation" + type: "attribute" format: "json" prefix: "/api" diff --git a/packages/application/composer.json b/packages/application/composer.json index e259d687b..b3ce84c79 100644 --- a/packages/application/composer.json +++ b/packages/application/composer.json @@ -12,14 +12,14 @@ "doctrine/orm": "^2.11", "draw/contracts": "^0.10", "draw/core": "^0.10", - "symfony/doctrine-bridge": "^5.4.3", - "symfony/event-dispatcher": "^5.4.3" + "symfony/doctrine-bridge": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0" }, "require-dev": { "phpunit/phpunit": "^9.0 || ^10.0", "draw/tester": "^0.10", - "symfony/cache": "^5.4.3", - "symfony/console": "^5.4.3" + "symfony/cache": "^6.4.0", + "symfony/console": "^6.4.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/packages/aws-tool-kit/composer.json b/packages/aws-tool-kit/composer.json index fbe369b6a..10be487e5 100644 --- a/packages/aws-tool-kit/composer.json +++ b/packages/aws-tool-kit/composer.json @@ -6,16 +6,16 @@ "keywords": ["draw", "aws"], "require": { "aws/aws-sdk-php": "^3.171", - "symfony/console": "^5.4.3", - "symfony/event-dispatcher": "^5.4.3" + "symfony/console": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0" }, "require-dev": { "draw/core": "^0.10", "draw/tester": "^0.10", "phpunit/phpunit": "^9.0 || ^10.0", - "symfony/cache": "^5.4.3", - "symfony/http-client": "^5.4.3", - "symfony/http-client-contracts": "^2.5" + "symfony/cache": "^6.4.0", + "symfony/http-client": "^6.4.0", + "symfony/http-client-contracts": "^3.4" }, "conflict": { "guzzlehttp/guzzle": "<6" diff --git a/packages/console/composer.json b/packages/console/composer.json index 9c06a76c0..6323dfba8 100644 --- a/packages/console/composer.json +++ b/packages/console/composer.json @@ -10,14 +10,14 @@ "psr/log": "@stable", "ramsey/uuid": "^4.2", "sensiolabs/ansi-to-html": "^1.2", - "symfony/event-dispatcher": "^5.4.3", - "symfony/console": "^5.4.3" + "symfony/event-dispatcher": "^6.4.0", + "symfony/console": "^6.4.0" }, "require-dev": { "doctrine/orm": "^2.11", "draw/tester": "^0.10", "phpunit/phpunit": "^9.0 || ^10.0", - "symfony/cache": "^5.4.3" + "symfony/cache": "^6.4.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/packages/core/composer.json b/packages/core/composer.json index 05dc09d68..5ffca0a9e 100644 --- a/packages/core/composer.json +++ b/packages/core/composer.json @@ -5,9 +5,9 @@ "type": "library", "require": { "php": ">=8.1", - "symfony/dependency-injection": "^5.4.3", - "symfony/property-access": "^5.4.3", - "symfony/validator": "^5.4.3" + "symfony/dependency-injection": "^6.4.0", + "symfony/property-access": "^6.4.0", + "symfony/validator": "^6.4.0" }, "require-dev": { "phpunit/phpunit": "^9.0 || ^10.0" diff --git a/packages/entity-migrator/composer.json b/packages/entity-migrator/composer.json index a1eac419a..7a3eddc36 100644 --- a/packages/entity-migrator/composer.json +++ b/packages/entity-migrator/composer.json @@ -11,11 +11,11 @@ ], "require": { "draw/messenger": "^0.10", - "symfony/console": "^5.4.3", - "symfony/event-dispatcher": "^5.4.3", - "symfony/lock": "^5.4.3", - "symfony/messenger": "^5.4.3", - "symfony/workflow": "^5.4.3" + "symfony/console": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0", + "symfony/lock": "^6.4.0", + "symfony/messenger": "^6.4.0", + "symfony/workflow": "^6.4.0" }, "require-dev": { "draw/tester": "^0.10", diff --git a/packages/framework-extra-bundle/DependencyInjection/Compiler/EmailWriterCompilerPass.php b/packages/framework-extra-bundle/DependencyInjection/Compiler/EmailWriterCompilerPass.php index 816d296a4..44b0e646e 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Compiler/EmailWriterCompilerPass.php +++ b/packages/framework-extra-bundle/DependencyInjection/Compiler/EmailWriterCompilerPass.php @@ -32,9 +32,10 @@ public function process(ContainerBuilder $container): void $priority = 0; } - $emailType = (new \ReflectionMethod($class, $methodName))->getParameters()[0]->getClass()->name; - $emailWriterListenerDefinition - ->addMethodCall('addWriter', [$emailType, $id, $methodName, $priority]); + foreach ($this->getClasses((new \ReflectionMethod($class, $methodName))->getParameters()[0]) as $emailType) { + $emailWriterListenerDefinition + ->addMethodCall('addWriter', [$emailType, $id, $methodName, $priority]); + } } } @@ -44,4 +45,27 @@ public function process(ContainerBuilder $container): void ServiceLocatorTagPass::register($container, $writers) ); } + + /** + * Extract classes base on union and name type. + * + * @return array + */ + private function getClasses(\ReflectionParameter $reflectionParameter): array + { + $type = $reflectionParameter->getType(); + + if ($type instanceof \ReflectionNamedType) { + return [$type->getName()]; + } + + if ($type instanceof \ReflectionUnionType) { + return array_map( + fn (\ReflectionNamedType $type) => $type->getName(), + $type->getTypes() + ); + } + + throw new \InvalidArgumentException('Unable to extract classes from parameter. Only named type and union type are supported.'); + } } diff --git a/packages/framework-extra-bundle/DependencyInjection/Integration/IntegrationTrait.php b/packages/framework-extra-bundle/DependencyInjection/Integration/IntegrationTrait.php index 6b8ec9e7a..cb079f3a0 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Integration/IntegrationTrait.php +++ b/packages/framework-extra-bundle/DependencyInjection/Integration/IntegrationTrait.php @@ -2,6 +2,7 @@ namespace Draw\Bundle\FrameworkExtraBundle\DependencyInjection\Integration; +use Draw\Component\Core\Reflection\ReflectionAccessor; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; @@ -41,6 +42,19 @@ protected function registerClasses( ] ) ); + + $container = ReflectionAccessor::getPropertyValue( + $loader, + 'container', + ); + + \assert($container instanceof ContainerBuilder); + + foreach ($container->getDefinitions() as $id => $definition) { + if ($definition->hasTag('container.excluded')) { + $container->removeDefinition($id); + } + } } protected function assertHasExtension( diff --git a/packages/framework-extra-bundle/DependencyInjection/Integration/LoggerIntegration.php b/packages/framework-extra-bundle/DependencyInjection/Integration/LoggerIntegration.php index de489813a..5e2e6d45e 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Integration/LoggerIntegration.php +++ b/packages/framework-extra-bundle/DependencyInjection/Integration/LoggerIntegration.php @@ -8,6 +8,7 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Definition; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; +use Symfony\Component\HttpFoundation\ChainRequestMatcher; use Symfony\Component\HttpFoundation\RequestMatcher; class LoggerIntegration implements IntegrationInterface @@ -54,18 +55,46 @@ private function loadSlowRequest( $requestMatchers[] = ['duration' => $defaultDuration]; } + $requestMatcherClasses = [ + 'path' => RequestMatcher\PathRequestMatcher::class, + 'host' => RequestMatcher\HostRequestMatcher::class, + 'port' => RequestMatcher\PortRequestMatcher::class, + 'schemes' => RequestMatcher\SchemeRequestMatcher::class, + 'ips' => RequestMatcher\IpsRequestMatcher::class, + 'methods' => RequestMatcher\MethodRequestMatcher::class, + ]; + $requestMatcherReferences = []; foreach ($requestMatchers as $requestMatcher) { - $requestMatcherDefinition = new Definition(RequestMatcher::class); + $chainRequestMatcherDefinition = new Definition(ChainRequestMatcher::class); $duration = $requestMatcher['duration'] ?? $defaultDuration ?: 10000; - $requestMatcherReferences[(int) $duration][] = $requestMatcherDefinition; + $requestMatcherReferences[(int) $duration][] = $chainRequestMatcherDefinition; unset($requestMatcher['duration']); - $requestMatcherDefinition->setArguments( - $this->arrayToArgumentsArray($requestMatcher) + $requestMatcherDefinitions = []; + + ksort($requestMatcher); + + foreach ($requestMatcher as $key => $value) { + if (null === $value || [] === $value) { + continue; + } + + $requestMatcherClass = $requestMatcherClasses[$key] ?? null; + + if (null === $requestMatcherClass) { + throw new \InvalidArgumentException(sprintf('Unknown request matcher "%s".', $key)); + } + + $requestMatcherDefinitions[] = (new Definition($requestMatcherClass))->setArguments([$value]); + } + + $chainRequestMatcherDefinition->setArgument( + '$matchers', + $requestMatcherDefinitions ); } diff --git a/packages/framework-extra-bundle/DependencyInjection/Integration/MessengerIntegration.php b/packages/framework-extra-bundle/DependencyInjection/Integration/MessengerIntegration.php index 0e241f669..fd08f4dde 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Integration/MessengerIntegration.php +++ b/packages/framework-extra-bundle/DependencyInjection/Integration/MessengerIntegration.php @@ -4,6 +4,7 @@ use App\Entity\MessengerMessage; use App\Entity\MessengerMessageTag; +use Doctrine\ORM\Events; use Draw\Component\Messenger\Broker\Broker; use Draw\Component\Messenger\Broker\EventListener\BrokerDefaultValuesListener; use Draw\Component\Messenger\DoctrineMessageBusHook\EnvelopeFactory\BasicEnvelopeFactory; @@ -166,7 +167,10 @@ private function loadDoctrineMessageBusHook(array $config, PhpFileLoader $loader ); $container->getDefinition(DoctrineBusMessageListener::class) - ->addTag('doctrine.event_subscriber'); + ->addTag('doctrine.event_listener', ['event' => Events::postPersist]) + ->addTag('doctrine.event_listener', ['event' => Events::postLoad]) + ->addTag('doctrine.event_listener', ['event' => Events::postFlush]) + ->addTag('doctrine.event_listener', ['event' => Events::onClear]); $container ->setAlias(EnvelopeFactoryInterface::class, BasicEnvelopeFactory::class); diff --git a/packages/framework-extra-bundle/DependencyInjection/Integration/OpenApiIntegration.php b/packages/framework-extra-bundle/DependencyInjection/Integration/OpenApiIntegration.php index d61e4b1c2..9b5ef9c5c 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Integration/OpenApiIntegration.php +++ b/packages/framework-extra-bundle/DependencyInjection/Integration/OpenApiIntegration.php @@ -29,7 +29,6 @@ use Draw\Component\OpenApi\Extraction\ExtractorInterface; use Draw\Component\OpenApi\Naming\AliasesClassNamingFilter; use Draw\Component\OpenApi\OpenApi; -use Draw\Component\OpenApi\Request\ParamConverter\DeserializeBodyParamConverter; use Draw\Component\OpenApi\Request\ValueResolver\RequestBody; use Draw\Component\OpenApi\Request\ValueResolver\RequestBodyValueResolver; use Draw\Component\OpenApi\SchemaBuilder\SchemaBuilderInterface; @@ -98,12 +97,6 @@ public function load(array $config, PhpFileLoader $loader, ContainerBuilder $con 'draw.open_api' ); - $this->renameDefinitions( - $container, - 'Draw\\Component\\OpenApi\\Request\\ParamConverter\\', - 'draw.open_api.param_converter.' - ); - $this->renameDefinitions( $container, 'Draw\\Component\\OpenApi\\Extraction\\Extractor\\', @@ -149,37 +142,34 @@ private function configOpenApi(array $config, PhpFileLoader $loader, ContainerBu ->registerForAutoconfiguration(TypeToSchemaHandlerInterface::class) ->addTag(TypeToSchemaHandlerInterface::class); - $definition = (new Definition()) - ->setAutowired(true) - ->setAutoconfigured(true); - - $openApiComponentDir = \dirname((new \ReflectionClass(OpenApi::class))->getFileName()); + $directory = \dirname((new \ReflectionClass(OpenApi::class))->getFileName()); $exclude = [ - $openApiComponentDir.'/Event/', - $openApiComponentDir.'/EventListener/{Request,Response}*', - $openApiComponentDir.'/Exception/', - $openApiComponentDir.'/Request/', - $openApiComponentDir.'/Schema/', - $openApiComponentDir.'/SchemaBuilder/', - $openApiComponentDir.'/Tests/', + $directory.'/EventListener/{Request,Response}*', + $directory.'/Request/', + $directory.'/Schema/', + $directory.'/SchemaBuilder/', ]; if (!$config['caching_enabled']) { - $exclude[] = $openApiComponentDir.'/Extraction/Extractor/Caching/'; + $exclude[] = $directory.'/Extraction/Extractor/Caching/'; } - $loader->registerClasses( - $definition, + $this->registerClasses( + $loader, 'Draw\\Component\\OpenApi\\', - $openApiComponentDir, - $exclude + $directory, + $exclude, ); - $loader->registerClasses( - $definition->addTag('controller.service_arguments'), + $this->registerClasses( + $loader, 'Draw\\Component\\OpenApi\\Controller\\', - $openApiComponentDir.'/Controller' + $directory.'/Controller', + prototype: (new Definition()) + ->setAutowired(true) + ->setAutoconfigured(true) + ->addTag('controller.service_arguments'), ); $container @@ -221,12 +211,19 @@ private function configOpenApi(array $config, PhpFileLoader $loader, ContainerBu $container ->setDefinition( - 'draw.open_api.schema_builder', + SymfonySchemaBuilder::class, new Definition(SymfonySchemaBuilder::class) ) ->setAutowired(true) ->setAutoconfigured(true); + $container + ->addAliases( + [ + SchemaBuilderInterface::class => SymfonySchemaBuilder::class, + ] + ); + if ($config['caching_enabled']) { $arguments = [ '$debug' => new Parameter('kernel.debug'), @@ -242,12 +239,6 @@ private function configOpenApi(array $config, PhpFileLoader $loader, ContainerBu ->setArguments($arguments); } - $container - ->setAlias( - SchemaBuilderInterface::class, - 'draw.open_api.schema_builder' - ); - $container ->getDefinition(OpenApi::class) ->setArgument('$extractors', new TaggedIteratorArgument(ExtractorInterface::class)); @@ -419,11 +410,7 @@ private function configRequest(array $config, PhpFileLoader $loader, ContainerBu } if (!$config['bodyDeserialization']['enabled']) { - $container->removeDefinition(DeserializeBodyParamConverter::class); $container->removeDefinition(RequestBodyValueResolver::class); - } else { - $container->getDefinition(DeserializeBodyParamConverter::class) - ->addTag('request.param_converter', ['converter' => 'draw_open_api.request_body']); } } diff --git a/packages/framework-extra-bundle/DependencyInjection/Integration/WorkflowIntegration.php b/packages/framework-extra-bundle/DependencyInjection/Integration/WorkflowIntegration.php index d6b6c0ca7..36663fb66 100644 --- a/packages/framework-extra-bundle/DependencyInjection/Integration/WorkflowIntegration.php +++ b/packages/framework-extra-bundle/DependencyInjection/Integration/WorkflowIntegration.php @@ -2,12 +2,12 @@ namespace Draw\Bundle\FrameworkExtraBundle\DependencyInjection\Integration; +use Draw\Component\Security\Core\Security; use Draw\Component\Workflow\EventListener\AddTransitionNameToContextListener; use Draw\Component\Workflow\EventListener\AddUserToContextListener; use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; -use Symfony\Component\Security\Core\Security; class WorkflowIntegration implements IntegrationInterface { diff --git a/packages/framework-extra-bundle/Tests/Bridge/Monolog/Processor/TokenProcessorTest.php b/packages/framework-extra-bundle/Tests/Bridge/Monolog/Processor/TokenProcessorTest.php index 86beae151..b083df425 100644 --- a/packages/framework-extra-bundle/Tests/Bridge/Monolog/Processor/TokenProcessorTest.php +++ b/packages/framework-extra-bundle/Tests/Bridge/Monolog/Processor/TokenProcessorTest.php @@ -5,6 +5,7 @@ use Draw\Bundle\FrameworkExtraBundle\Bridge\Monolog\Processor\TokenProcessor; use Draw\Bundle\UserBundle\Entity\SecurityUserInterface; use Draw\Bundle\UserBundle\Entity\SecurityUserTrait; +use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\Security\Core\Authentication\Token\NullToken; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; @@ -14,10 +15,7 @@ class TokenProcessorTest extends TestCase { private TokenProcessor $service; - /** - * @var TokenStorageInterface|\PHPUnit\Framework\MockObject\MockObject - */ - private TokenStorageInterface $tokenStorage; + private TokenStorageInterface&MockObject $tokenStorage; private string $key; @@ -85,7 +83,7 @@ public function setId(int $id): self return $this; } - public function getUserIdentifier(): ?string + public function getUserIdentifier(): string { return $this->userIdentifier; } diff --git a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/LoggerIntegrationTest.php b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/LoggerIntegrationTest.php index 18bfe6b2a..1299c4a50 100644 --- a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/LoggerIntegrationTest.php +++ b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/LoggerIntegrationTest.php @@ -7,6 +7,11 @@ use Draw\Bundle\FrameworkExtraBundle\Logger\EventListener\SlowRequestLoggerListener; use PHPUnit\Framework\Attributes\CoversClass; use Symfony\Component\DependencyInjection\Definition; +use Symfony\Component\HttpFoundation\RequestMatcher\HostRequestMatcher; +use Symfony\Component\HttpFoundation\RequestMatcher\IpsRequestMatcher; +use Symfony\Component\HttpFoundation\RequestMatcher\MethodRequestMatcher; +use Symfony\Component\HttpFoundation\RequestMatcher\PathRequestMatcher; +use Symfony\Component\HttpFoundation\RequestMatcher\PortRequestMatcher; /** * @property LoggerIntegration $integration @@ -67,57 +72,75 @@ public static function provideTestLoad(): iterable SlowRequestLoggerListener::class, ], function (Definition $definition): void { - $requestMatcherDefinitions = $definition->getArgument('$requestMatchers'); + $chainRequestMatcherDefinitions = $definition->getArgument('$requestMatchers'); - static::assertCount(2, $requestMatcherDefinitions); + static::assertCount(2, $chainRequestMatcherDefinitions); - $requestMatcherDefinitions5000 = $requestMatcherDefinitions[5000]; + $chainRequestMatcherDefinitions5000 = $chainRequestMatcherDefinitions[5000]; - static::assertCount(1, $requestMatcherDefinitions5000); + static::assertCount(1, $chainRequestMatcherDefinitions5000); - $requestMatcherDefinition = $requestMatcherDefinitions5000[0]; + $chainRequestMatcherDefinition = $chainRequestMatcherDefinitions5000[0]; - static::assertInstanceOf(Definition::class, $requestMatcherDefinition); + static::assertInstanceOf(Definition::class, $chainRequestMatcherDefinition); - static::assertSame( + self::assertRequestMatcherDefinitions( + $chainRequestMatcherDefinition->getArgument('$matchers'), [ - '$ips' => [ - '127.0.0.1', - ], - '$path' => '^/api', - '$host' => 'example.com', - '$port' => 80, - '$methods' => [ - 'GET', - 'POST', - ], - '$schemes' => [], - ], - $requestMatcherDefinition->getArguments() + [HostRequestMatcher::class, ['example.com']], + [IpsRequestMatcher::class, [['127.0.0.1']]], + [MethodRequestMatcher::class, [['GET', 'POST']]], + [PathRequestMatcher::class, ['^/api']], + [PortRequestMatcher::class, [80]], + ] ); - $requestMatcherDefinitions9000 = $requestMatcherDefinitions[9000]; + $chainRequestMatcherDefinitions9000 = $chainRequestMatcherDefinitions[9000]; - static::assertCount(1, $requestMatcherDefinitions9000); + static::assertCount(1, $chainRequestMatcherDefinitions9000); - $requestMatcherDefinition = $requestMatcherDefinitions9000[0]; + $chainRequestMatcherDefinition = $chainRequestMatcherDefinitions9000[0]; - static::assertInstanceOf(Definition::class, $requestMatcherDefinition); + static::assertInstanceOf(Definition::class, $chainRequestMatcherDefinition); - static::assertSame( + self::assertRequestMatcherDefinitions( + $chainRequestMatcherDefinition->getArgument('$matchers'), [ - '$path' => '^/admin', - '$host' => null, - '$port' => null, - '$schemes' => [], - '$ips' => [], - '$methods' => [], - ], - $requestMatcherDefinition->getArguments() + [PathRequestMatcher::class, ['^/admin']], + ] ); } ), ], ]; } + + /** + * @param array $definitions + */ + private static function assertRequestMatcherDefinitions( + array $definitions, + array $expectedDefinitions, + ): void { + static::assertCount( + \count($expectedDefinitions), + $definitions + ); + + foreach ($definitions as $index => $definition) { + static::assertInstanceOf(Definition::class, $definition); + + [$expectedClass, $expectedArguments] = $expectedDefinitions[$index]; + + static::assertSame( + $expectedClass, + $definition->getClass() + ); + + static::assertSame( + $expectedArguments, + $definition->getArguments() + ); + } + } } diff --git a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/MessengerIntegrationTest.php b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/MessengerIntegrationTest.php index 9896460fd..6b69e31db 100644 --- a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/MessengerIntegrationTest.php +++ b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/MessengerIntegrationTest.php @@ -3,6 +3,7 @@ namespace Draw\Bundle\FrameworkExtraBundle\Tests\DependencyInjection\Integration; use Doctrine\Bundle\DoctrineBundle\DependencyInjection\DoctrineExtension; +use Doctrine\ORM\Events; use Draw\Bundle\FrameworkExtraBundle\DependencyInjection\Integration\IntegrationInterface; use Draw\Bundle\FrameworkExtraBundle\DependencyInjection\Integration\MessengerIntegration; use Draw\Bundle\SonataIntegrationBundle\DependencyInjection\DrawSonataIntegrationExtension; @@ -331,8 +332,11 @@ function (Definition $definition): void { function (Definition $definition): void { static::assertSame( [ - 'doctrine.event_subscriber' => [ - [], + 'doctrine.event_listener' => [ + ['event' => Events::postPersist], + ['event' => Events::postLoad], + ['event' => Events::postFlush], + ['event' => Events::onClear], ], ], $definition->getTags() diff --git a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/OpenApiIntegrationTest.php b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/OpenApiIntegrationTest.php index d697c59b4..e1e38b787 100644 --- a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/OpenApiIntegrationTest.php +++ b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/OpenApiIntegrationTest.php @@ -55,7 +55,6 @@ use Draw\Component\OpenApi\Extraction\Extractor\TypeSchemaExtractor; use Draw\Component\OpenApi\Naming\AliasesClassNamingFilter; use Draw\Component\OpenApi\OpenApi; -use Draw\Component\OpenApi\Request\ParamConverter\DeserializeBodyParamConverter; use Draw\Component\OpenApi\Request\ValueResolver\RequestBodyValueResolver; use Draw\Component\OpenApi\SchemaBuilder\SchemaBuilderInterface; use Draw\Component\OpenApi\SchemaBuilder\SymfonySchemaBuilder; @@ -197,15 +196,8 @@ public static function provideTestLoad(): iterable [OpenApi::class] ), new ServiceConfiguration( - 'draw.open_api.schema_builder', - [SchemaBuilderInterface::class], - function (Definition $definition): void { - static::assertSame(SymfonySchemaBuilder::class, $definition->getClass()); - } - ), - new ServiceConfiguration( - 'draw.open_api.param_converter.deserialize_body_param_converter', - [DeserializeBodyParamConverter::class] + 'draw.open_api.schema_builder.symfony_schema_builder', + [SymfonySchemaBuilder::class], ), new ServiceConfiguration( 'draw.open_api.request.value_resolver.request_body_value_resolver', @@ -495,6 +487,9 @@ function (Definition $definition): void { 'jms_serializer.metadata_factory' => [ MetadataFactoryInterface::class, ], + SymfonySchemaBuilder::class => [ + SchemaBuilderInterface::class, + ], ], [ 'draw_open_api.root_schema' => [ diff --git a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/SecurityIntegrationTest.php b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/SecurityIntegrationTest.php index a9bbe271d..a8f4b3be2 100644 --- a/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/SecurityIntegrationTest.php +++ b/packages/framework-extra-bundle/Tests/DependencyInjection/Integration/SecurityIntegrationTest.php @@ -9,6 +9,7 @@ use Draw\Component\Security\Core\Authorization\Voter\AbstainRoleHierarchyVoter; use Draw\Component\Security\Core\EventListener\SystemConsoleAuthenticatorListener; use Draw\Component\Security\Core\EventListener\SystemMessengerAuthenticatorListener; +use Draw\Component\Security\Core\Security; use Draw\Component\Security\Http\EventListener\RoleRestrictedAuthenticatorListener; use Draw\Component\Security\Jwt\JwtEncoder; use PHPUnit\Framework\Attributes\CoversClass; @@ -68,6 +69,12 @@ public static function provideTestLoad(): iterable RoleRestrictedAuthenticatorListener::class, ] ), + new ServiceConfiguration( + 'draw.security.core.security', + [ + Security::class, + ] + ), ]; yield 'default' => [ diff --git a/packages/framework-extra-bundle/composer.json b/packages/framework-extra-bundle/composer.json index 4d081dbab..dfe4d3993 100644 --- a/packages/framework-extra-bundle/composer.json +++ b/packages/framework-extra-bundle/composer.json @@ -14,9 +14,9 @@ "php": ">=8.1", "ext-json": "*", "draw/core": "^0.10", - "symfony/config": "^5.4.3", - "symfony/dependency-injection": "^5.4.3", - "symfony/http-kernel": "^5.4.3" + "symfony/config": "^6.4.0", + "symfony/dependency-injection": "^6.4.0", + "symfony/http-kernel": "^6.4.0" }, "require-dev": { "draw/application": "^0.10", @@ -41,11 +41,11 @@ "pelago/emogrifier": "^6.0", "phpunit/phpunit": "^9.0 || ^10.0", "psr/log": "@stable", - "symfony/event-dispatcher": "^5.4.3", - "symfony/http-foundation": "^5.4.3", - "symfony/security-bundle": "^5.4.3", - "symfony/security-core": "^5.4.3", - "symfony/twig-bundle": "^5.4.3" + "symfony/event-dispatcher": "^6.4.0", + "symfony/http-foundation": "^6.4.0", + "symfony/security-bundle": "^6.4.0", + "symfony/security-core": "^6.4.0", + "symfony/twig-bundle": "^6.4.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/packages/mailer/composer.json b/packages/mailer/composer.json index b6b81c45a..c870bfb9d 100644 --- a/packages/mailer/composer.json +++ b/packages/mailer/composer.json @@ -7,12 +7,12 @@ "require": { "php": ">=8.1", "draw/core": "^0.10", - "symfony/dom-crawler": "^5.4.3", - "symfony/css-selector": "^5.4.3", - "symfony/console": "^5.4.3", - "symfony/mailer": "^5.4.3", - "symfony/translation": "^5.4.3", - "symfony/twig-bridge": "^5.4.3", + "symfony/dom-crawler": "^6.4.0", + "symfony/css-selector": "^6.4.0", + "symfony/console": "^6.4.0", + "symfony/mailer": "^6.4.0", + "symfony/translation": "^6.4.0", + "symfony/twig-bridge": "^6.4.0", "twig/twig": "^3.3" }, "require-dev": { diff --git a/packages/messenger/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListener.php b/packages/messenger/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListener.php index d12873813..bf073e93e 100644 --- a/packages/messenger/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListener.php +++ b/packages/messenger/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListener.php @@ -2,10 +2,8 @@ namespace Draw\Component\Messenger\DoctrineMessageBusHook\EventListener; -use Doctrine\Common\EventSubscriber; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\OnClearEventArgs; -use Doctrine\ORM\Events; use Doctrine\Persistence\Event\LifecycleEventArgs; use Doctrine\Persistence\Proxy; use Draw\Component\Messenger\DoctrineMessageBusHook\Entity\MessageHolderInterface; @@ -14,7 +12,7 @@ use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Contracts\Service\ResetInterface; -class DoctrineBusMessageListener implements EventSubscriber, ResetInterface +class DoctrineBusMessageListener implements ResetInterface { /** * @var MessageHolderInterface[] @@ -27,16 +25,6 @@ public function __construct( ) { } - public function getSubscribedEvents(): array - { - return [ - Events::postPersist, - Events::postLoad, - Events::postFlush, - Events::onClear, - ]; - } - public function postPersist(LifecycleEventArgs $event): void { $this->trackMessageHolder($event); diff --git a/packages/messenger/ManualTrigger/Action/ClickMessageAction.php b/packages/messenger/ManualTrigger/Action/ClickMessageAction.php index 5116b2512..b893f86fc 100644 --- a/packages/messenger/ManualTrigger/Action/ClickMessageAction.php +++ b/packages/messenger/ManualTrigger/Action/ClickMessageAction.php @@ -67,7 +67,7 @@ public function __invoke( private function addFlash(Request $request, string $type, string $message): void { - if (!$request->hasSession()) { + if (!$request->hasSession(true)) { return; } diff --git a/packages/messenger/ManualTrigger/MessageHandler/RedirectToRouteMessageHandler.php b/packages/messenger/ManualTrigger/MessageHandler/RedirectToRouteMessageHandler.php index a630bb69b..1a30fcf6e 100644 --- a/packages/messenger/ManualTrigger/MessageHandler/RedirectToRouteMessageHandler.php +++ b/packages/messenger/ManualTrigger/MessageHandler/RedirectToRouteMessageHandler.php @@ -4,16 +4,17 @@ use Draw\Component\Messenger\ManualTrigger\Message\RedirectToRouteMessageInterface; use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\Messenger\Handler\MessageHandlerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -class RedirectToRouteMessageHandler implements MessageHandlerInterface +class RedirectToRouteMessageHandler { public function __construct(private UrlGeneratorInterface $urlGenerator) { } - public function __invoke(RedirectToRouteMessageInterface $message): RedirectResponse + #[AsMessageHandler] + public function handleRedirectToRouteMessage(RedirectToRouteMessageInterface $message): RedirectResponse { return $message->getRedirectResponse($this->urlGenerator); } diff --git a/packages/messenger/Retry/Event/GetWaitingTimeEvent.php b/packages/messenger/Retry/Event/GetWaitingTimeEvent.php index fc93ba52d..ca0fa608d 100644 --- a/packages/messenger/Retry/Event/GetWaitingTimeEvent.php +++ b/packages/messenger/Retry/Event/GetWaitingTimeEvent.php @@ -9,7 +9,7 @@ class GetWaitingTimeEvent extends Event { private ?int $waitingTime = null; - public function __construct(private Envelope $envelope) + public function __construct(private Envelope $envelope, private ?\Throwable $throwable = null) { } @@ -18,6 +18,11 @@ public function getEnvelope(): Envelope return $this->envelope; } + public function getThrowable(): \Throwable + { + return $this->throwable; + } + public function getWaitingTime(): ?int { return $this->waitingTime; diff --git a/packages/messenger/Retry/Event/IsRetryableEvent.php b/packages/messenger/Retry/Event/IsRetryableEvent.php index d81fabca6..a66a19f1c 100644 --- a/packages/messenger/Retry/Event/IsRetryableEvent.php +++ b/packages/messenger/Retry/Event/IsRetryableEvent.php @@ -9,7 +9,7 @@ class IsRetryableEvent extends Event { private ?bool $isRetryable = null; - public function __construct(private Envelope $envelope) + public function __construct(private Envelope $envelope, private ?\Throwable $throwable = null) { } @@ -18,6 +18,11 @@ public function getEnvelope(): Envelope return $this->envelope; } + public function getThrowable(): ?\Throwable + { + return $this->throwable; + } + public function getIsRetryable(): ?bool { return $this->isRetryable; diff --git a/packages/messenger/Retry/EventDrivenRetryStrategy.php b/packages/messenger/Retry/EventDrivenRetryStrategy.php index 3610c77bf..1a2a088e3 100644 --- a/packages/messenger/Retry/EventDrivenRetryStrategy.php +++ b/packages/messenger/Retry/EventDrivenRetryStrategy.php @@ -16,19 +16,19 @@ public function __construct( ) { } - public function isRetryable(Envelope $message): bool + public function isRetryable(Envelope $message, ?\Throwable $throwable = null): bool { $isRetryable = $this->eventDispatcher - ->dispatch(new IsRetryableEvent($message)) + ->dispatch(new IsRetryableEvent($message, $throwable)) ->getIsRetryable(); return $isRetryable ?? $this->fallbackRetryStrategy?->isRetryable($message) ?? false; } - public function getWaitingTime(Envelope $message): int + public function getWaitingTime(Envelope $message, ?\Throwable $throwable = null): int { $waitingTime = $this->eventDispatcher - ->dispatch(new GetWaitingTimeEvent($message)) + ->dispatch(new GetWaitingTimeEvent($message, $throwable)) ->getWaitingTime(); return $waitingTime ?? $this->fallbackRetryStrategy?->getWaitingTime($message) ?? 1000; diff --git a/packages/messenger/Tests/AutoStamp/EventListener/AutoStampEnvelopeListenerTest.php b/packages/messenger/Tests/AutoStamp/EventListener/AutoStampEnvelopeListenerTest.php index 774abda40..3a9303218 100644 --- a/packages/messenger/Tests/AutoStamp/EventListener/AutoStampEnvelopeListenerTest.php +++ b/packages/messenger/Tests/AutoStamp/EventListener/AutoStampEnvelopeListenerTest.php @@ -51,7 +51,7 @@ public function testHandleStampingAwareMessage(): void { $envelope = new Envelope($this); - $this->object->handleStampingAwareMessage($event = new SendMessageToTransportsEvent($envelope)); + $this->object->handleStampingAwareMessage($event = new SendMessageToTransportsEvent($envelope, [])); static::assertSame( self::$newEnvelope, @@ -72,7 +72,7 @@ public function stamp(): void } ); - $this->object->handleStampingAwareMessage(new SendMessageToTransportsEvent($envelope)); + $this->object->handleStampingAwareMessage(new SendMessageToTransportsEvent($envelope, [])); static::assertFalse($message->called, 'Stamp should not have been called.'); } diff --git a/packages/messenger/Tests/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListenerTest.php b/packages/messenger/Tests/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListenerTest.php index 0569a7405..4c721f231 100644 --- a/packages/messenger/Tests/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListenerTest.php +++ b/packages/messenger/Tests/DoctrineMessageBusHook/EventListener/DoctrineBusMessageListenerTest.php @@ -2,10 +2,8 @@ namespace Draw\Component\Messenger\Tests\DoctrineMessageBusHook\EventListener; -use Doctrine\Common\EventSubscriber; use Doctrine\ORM\EntityManagerInterface; use Doctrine\ORM\Event\OnClearEventArgs; -use Doctrine\ORM\Events; use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\Persistence\Event\LifecycleEventArgs; use Doctrine\Persistence\Proxy; @@ -47,30 +45,12 @@ protected function setUp(): void public function testConstruct(): void { - static::assertInstanceOf( - EventSubscriber::class, - $this->object - ); - static::assertInstanceOf( ResetInterface::class, $this->object ); } - public function testGetSubscribedEvents(): void - { - static::assertSame( - [ - Events::postPersist, - Events::postLoad, - Events::postFlush, - Events::onClear, - ], - $this->object->getSubscribedEvents() - ); - } - public function testPostPersist(): void { $messageHolder = $this->createMock(MessageHolderInterface::class); diff --git a/packages/messenger/Tests/ManualTrigger/EventListener/StampManuallyTriggeredEnvelopeListenerTest.php b/packages/messenger/Tests/ManualTrigger/EventListener/StampManuallyTriggeredEnvelopeListenerTest.php index a9bdc7f51..f72531f9e 100644 --- a/packages/messenger/Tests/ManualTrigger/EventListener/StampManuallyTriggeredEnvelopeListenerTest.php +++ b/packages/messenger/Tests/ManualTrigger/EventListener/StampManuallyTriggeredEnvelopeListenerTest.php @@ -63,7 +63,7 @@ public static function provideTestHandleManuallyTriggeredMessage(): iterable #[DataProvider('provideTestHandleManuallyTriggeredMessage')] public function testHandleManuallyTriggeredMessage(Envelope $envelope, int $expectedCount): void { - $this->service->handleManuallyTriggeredMessage($event = new SendMessageToTransportsEvent($envelope)); + $this->service->handleManuallyTriggeredMessage($event = new SendMessageToTransportsEvent($envelope, [])); static::assertCount( $expectedCount, diff --git a/packages/messenger/Tests/ManualTrigger/MessageHandler/RedirectToRouteMessageHandlerTest.php b/packages/messenger/Tests/ManualTrigger/MessageHandler/RedirectToRouteMessageHandlerTest.php index 126ae1d1d..a6fd95912 100644 --- a/packages/messenger/Tests/ManualTrigger/MessageHandler/RedirectToRouteMessageHandlerTest.php +++ b/packages/messenger/Tests/ManualTrigger/MessageHandler/RedirectToRouteMessageHandlerTest.php @@ -7,7 +7,6 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\TestCase; use Symfony\Component\HttpFoundation\RedirectResponse; -use Symfony\Component\Messenger\Handler\MessageHandlerInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; #[CoversClass(RedirectToRouteMessageHandler::class)] @@ -24,14 +23,6 @@ protected function setUp(): void ); } - public function testConstruct(): void - { - static::assertInstanceOf( - MessageHandlerInterface::class, - $this->service - ); - } - public function testInvoke(): void { $message = $this->createMock(RedirectToRouteMessageInterface::class); @@ -44,7 +35,7 @@ public function testInvoke(): void static::assertSame( $response, - $this->service->__invoke($message) + $this->service->handleRedirectToRouteMessage($message) ); } } diff --git a/packages/messenger/composer.json b/packages/messenger/composer.json index 47fe7e8ea..fe78651fc 100644 --- a/packages/messenger/composer.json +++ b/packages/messenger/composer.json @@ -17,14 +17,14 @@ "doctrine/persistence": "^2.2 || ^3.0", "draw/contracts": "^0.10", "draw/core": "^0.10", - "symfony/doctrine-bridge": "^5.4.3", - "symfony/doctrine-messenger": "^5.4.3", - "symfony/event-dispatcher": "^5.4.3", - "symfony/http-foundation": "^5.4.3", - "symfony/messenger": "^5.4.3", - "symfony/process": "^5.4.3", - "symfony/routing": "^5.4.3", - "symfony/translation": "^5.4.3", + "symfony/doctrine-bridge": "^6.4.0", + "symfony/doctrine-messenger": "^6.4.0", + "symfony/event-dispatcher": "^6.4.0", + "symfony/http-foundation": "^6.4.0", + "symfony/messenger": "^6.4.0", + "symfony/process": "^6.4.0", + "symfony/routing": "^6.4.0", + "symfony/translation": "^6.4.0", "ramsey/uuid": "^4.2" }, "require-dev": { diff --git a/packages/open-api/EventListener/RequestValidationListener.php b/packages/open-api/EventListener/RequestValidationListener.php index cf470c284..5a9e64ae7 100644 --- a/packages/open-api/EventListener/RequestValidationListener.php +++ b/packages/open-api/EventListener/RequestValidationListener.php @@ -104,10 +104,10 @@ private function bonifyConstraints(ConstraintViolationListInterface $violations, return $constraintViolations; } - private function validate($object, RequestBody $paramConverter): ConstraintViolationListInterface + private function validate($object, RequestBody $requestBody): ConstraintViolationListInterface { - if ($paramConverter->validate) { - return $this->validator->validate($object, null, $paramConverter->validationGroups ?? ['Default']); + if ($requestBody->validate) { + return $this->validator->validate($object, null, $requestBody->validationGroups ?? ['Default']); } return new ConstraintViolationList(); diff --git a/packages/open-api/OpenApi.php b/packages/open-api/OpenApi.php index b53169272..964adf7c9 100644 --- a/packages/open-api/OpenApi.php +++ b/packages/open-api/OpenApi.php @@ -107,7 +107,7 @@ public function dump(Schema $schema, bool $validate = true, ?ExtractionContextIn public function validate(Schema $schema): void { $result = Validation::createValidatorBuilder() - ->enableAnnotationMapping(true) + ->enableAnnotationMapping() ->getValidator() ->validate($schema, null, [Constraint::DEFAULT_GROUP]); diff --git a/packages/open-api/Request/ParamConverter/DeserializeBodyParamConverter.php b/packages/open-api/Request/ParamConverter/DeserializeBodyParamConverter.php deleted file mode 100644 index cb98a0eb0..000000000 --- a/packages/open-api/Request/ParamConverter/DeserializeBodyParamConverter.php +++ /dev/null @@ -1,134 +0,0 @@ -getClass() && 'draw_open_api.request_body' === $configuration->getConverter(); - } - - public function apply(Request $request, ParamConverter $configuration): bool - { - $object = $this->deserialize( - $this->getBodyData($request, $configuration), - $configuration - ); - - $request->attributes->set($configuration->getName(), $object); - $request->attributes->set('_draw_body_validation', $configuration); - - return true; - } - - private function getBodyData(Request $request, ParamConverter $configuration): string - { - $contentType = $request->headers->get('Content-Type'); - switch (true) { - case str_starts_with($contentType, 'application/json'): - // This allows an empty body to be consider as '{}' - try { - $requestData = json_decode($request->getContent(), true, 512, \JSON_THROW_ON_ERROR); - } catch (\JsonException $e) { - $requestData = []; - } - - break; - case str_starts_with($contentType, 'multipart/form-data'): - $requestData = $request->request->all(); - break; - default: - throw new UnsupportedMediaTypeHttpException('Unsupported request Content-Type ['.$contentType.']'); - } - - $result = json_encode($this->assignPropertiesFromAttribute($request, $configuration, $requestData), \JSON_THROW_ON_ERROR); - - return '[]' === $result ? '{}' : $result; - } - - private function assignPropertiesFromAttribute(Request $request, ParamConverter $configuration, $requestData): array - { - $propertiesMap = $configuration->getOptions()['propertiesMap'] ?? null; - if (!$propertiesMap) { - return $requestData; - } - - $content = new DynamicArrayObject($requestData); - $propertyAccessor = PropertyAccess::createPropertyAccessor(); - - $attributes = (object) $request->attributes->all(); - foreach ($propertiesMap as $target => $source) { - $propertyAccessor->setValue( - $content, - $target, - $propertyAccessor->getValue($attributes, $source) - ); - } - - return $content->getArrayCopy(); - } - - private function deserialize(string $data, ParamConverter $configuration) - { - $options = $configuration->getOptions(); - - $arrayContext = $options['deserializationContext'] ?? []; - - $this->configureContext($context = new DeserializationContext(), $arrayContext); - - try { - return $this->serializer->deserialize( - $data, - $configuration->getClass(), - 'json', - $context - ); - } catch (UnsupportedFormatException $e) { - throw new UnsupportedMediaTypeHttpException($e->getMessage(), $e); - } catch (JMSSerializerException $e) { - throw new BadRequestHttpException($e->getMessage(), $e); - } - } - - protected function configureContext(DeserializationContext $context, array $options): void - { - foreach ($options as $key => $value) { - switch ($key) { - case 'groups': - if ($value) { - $context->setGroups($value); - } - break; - case 'version': - $context->setVersion($value); - break; - case 'maxDepth': - case 'enableMaxDepth': - if ($value) { - $context->enableMaxDepthChecks(); - } - break; - default: - $context->setAttribute($key, $value); - break; - } - } - } -} diff --git a/packages/open-api/Request/ValueResolver/RequestBodyValueResolver.php b/packages/open-api/Request/ValueResolver/RequestBodyValueResolver.php index daa07c2c4..638c14ce9 100644 --- a/packages/open-api/Request/ValueResolver/RequestBodyValueResolver.php +++ b/packages/open-api/Request/ValueResolver/RequestBodyValueResolver.php @@ -8,26 +8,32 @@ use JMS\Serializer\Exception\UnsupportedFormatException; use JMS\Serializer\SerializerInterface; use Symfony\Component\HttpFoundation\Request; -use Symfony\Component\HttpKernel\Controller\ArgumentValueResolverInterface; +use Symfony\Component\HttpKernel\Controller\ValueResolverInterface; use Symfony\Component\HttpKernel\ControllerMetadata\ArgumentMetadata; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\UnsupportedMediaTypeHttpException; use Symfony\Component\PropertyAccess\PropertyAccess; -class RequestBodyValueResolver implements ArgumentValueResolverInterface +class RequestBodyValueResolver implements ValueResolverInterface { - public function __construct(private SerializerInterface $serializer) + public static function getDefaultNamePriority(): int { + return 115; // Need to be before EntityValueResolver which is 110 } - public function supports(Request $request, ArgumentMetadata $argument): bool + public function __construct(private SerializerInterface $serializer) { - return (bool) \count($argument->getAttributes(RequestBody::class, ArgumentMetadata::IS_INSTANCEOF)); } public function resolve(Request $request, ArgumentMetadata $argument): iterable { - $attribute = $argument->getAttributes(RequestBody::class, ArgumentMetadata::IS_INSTANCEOF)[0]; + $attributes = $argument->getAttributes(RequestBody::class, ArgumentMetadata::IS_INSTANCEOF); + + if (empty($attributes)) { + return []; + } + + $attribute = $attributes[0]; \assert($attribute instanceof RequestBody); diff --git a/packages/open-api/Tests/Request/ParamConverter/DeserializeBodyParamConverterTest.php b/packages/open-api/Tests/Request/ParamConverter/DeserializeBodyParamConverterTest.php deleted file mode 100644 index d44d6377c..000000000 --- a/packages/open-api/Tests/Request/ParamConverter/DeserializeBodyParamConverterTest.php +++ /dev/null @@ -1,296 +0,0 @@ -object = new DeserializeBodyParamConverter( - $this->serializer = $this->createMock(SerializerInterface::class) - ); - } - - public function testConstruct(): void - { - static::assertInstanceOf( - ParamConverterInterface::class, - $this->object - ); - } - - public function testSupportsNoClass(): void - { - $paramConverter = new ParamConverter(); - $paramConverter->setConverter('draw_open_api.request_body'); - - static::assertFalse($this->object->supports($paramConverter)); - } - - public function testSupportsWrongConverter(): void - { - $paramConverter = new ParamConverter(); - $paramConverter->setClass(uniqid('class-')); - - static::assertFalse($this->object->supports($paramConverter)); - } - - public function testSupports(): void - { - $paramConverter = new ParamConverter(); - $paramConverter->setConverter('draw_open_api.request_body'); - $paramConverter->setClass(uniqid('class-')); - - static::assertTrue($this->object->supports($paramConverter)); - } - - public function testApplyRequestUnsupportedFormat(): void - { - $paramConverter = $this->createParamConverter(); - - $request = $this->createRequest('', 'application/xml'); - - $this->serializer - ->expects(static::never()) - ->method('deserialize'); - - $this->expectException(UnsupportedMediaTypeHttpException::class); - $this->expectExceptionMessage('Unsupported request Content-Type [application/xml]'); - - $this->object->apply($request, $paramConverter); - } - - public function testApplySerializerUnsupportedFormat(): void - { - $paramConverter = $this->createParamConverter(); - - $request = $this->createRequest('{}'); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->with( - '{}', - $paramConverter->getClass(), - 'json', - static::isInstanceOf(DeserializationContext::class) - ) - ->willThrowException($exception = new UnsupportedFormatException(uniqid('message-'))); - - $this->expectException(UnsupportedMediaTypeHttpException::class); - $this->expectExceptionMessage($exception->getMessage()); - - $this->object->apply($request, $paramConverter); - } - - public function testApplySerializerMultipartFormData(): void - { - $paramConverter = $this->createParamConverter(); - - $request = $this->createRequest('{}', 'multipart/form-data'); - $request->request->set('key', 'value'); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->with( - '{"key":"value"}', - $paramConverter->getClass(), - 'json', - static::isInstanceOf(DeserializationContext::class) - ) - ->willReturn((object) []); - - $this->object->apply($request, $paramConverter); - } - - public function testApplySerializerError(): void - { - $paramConverter = $this->createParamConverter(); - - $request = $this->createRequest('{}'); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->willThrowException($exception = new LogicException(uniqid('message-'))); - - $this->expectException(BadRequestHttpException::class); - $this->expectExceptionMessage($exception->getMessage()); - - $this->object->apply($request, $paramConverter); - } - - public function testApply(): void - { - $paramConverter = $this->createParamConverter(); - - $request = $this->createRequest('{}'); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->willReturn($object = (object) []); - - $this->object->apply($request, $paramConverter); - - static::assertSame( - $object, - $request->attributes->get($paramConverter->getName()) - ); - - static::assertSame( - $paramConverter, - $request->attributes->get('_draw_body_validation') - ); - } - - public static function provideTestApplyAssignPropertiesFromAttribute(): iterable - { - yield 'simple' => [ - ['id' => 'id'], - ['id' => $id = uniqid('id-')], - ['id' => $id], - ]; - - yield 'simple-existing' => [ - ['id' => 'id'], - ['id' => $id = uniqid('id-')], - ['name' => $name = uniqid('name'), 'id' => $id], - json_encode(['name' => $name], \JSON_THROW_ON_ERROR), - ]; - - yield 'empty-body' => [ - ['id' => 'id'], - ['id' => $id = uniqid('id-')], - ['id' => $id], - '', - ]; - - yield 'deep-target' => [ - ['subObject.id' => 'id'], - ['id' => $id = uniqid('id-')], - ['subObject' => ['id' => $id]], - ]; - - yield 'deep-source' => [ - ['id' => 'subObject.id'], - ['subObject' => (object) ['id' => $id = uniqid('id-')]], - ['id' => $id], - ]; - } - - #[DataProvider('provideTestApplyAssignPropertiesFromAttribute')] - public function testApplyAssignPropertiesFromAttribute( - array $propertiesMap, - array $requestAttributes, - array $expectedData, - ?string $requestContent = '{}' - ): void { - $paramConverter = $this->createParamConverter(); - $paramConverter->setOptions(['propertiesMap' => $propertiesMap]); - - $request = $this->createRequest($requestContent); - $request->attributes->add($requestAttributes); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->with(json_encode($expectedData, \JSON_THROW_ON_ERROR)) - ->willReturn((object) []); - - $this->object->apply($request, $paramConverter); - } - - public function testApplyConfigureContext(): void - { - $paramConverter = $this->createParamConverter(); - $paramConverter->setOptions([ - 'deserializationContext' => $options = [ - 'groups' => [uniqid('group-')], - 'version' => uniqid('version-'), - 'enableMaxDepth' => true, - 'other' => uniqid('value'), - ], - ]); - - $request = $this->createRequest('{}'); - - $this->serializer - ->expects(static::once()) - ->method('deserialize') - ->with( - static::isType('string'), - static::isType('string'), - 'json', - static::callback(function (DeserializationContext $context) use ($options) { - $this->assertSame( - $options['groups'], - $context->getAttribute('groups') - ); - - $this->assertSame( - $options['version'], - $context->getAttribute('version') - ); - - $this->assertTrue($context->getAttribute('max_depth_checks')); - - $this->assertSame( - $options['other'], - $context->getAttribute('other') - ); - - return true; - }) - ) - ->willReturn((object) []); - - $this->object->apply($request, $paramConverter); - } - - private function createRequest(string $content, string $contentType = 'application/json'): Request - { - $request = new Request(); - ReflectionAccessor::setPropertyValue( - $request, - 'content', - $content - ); - - $request->headers->set('Content-Type', $contentType); - - return $request; - } - - private function createParamConverter(): ParamConverter - { - $paramConverter = new ParamConverter(); - $paramConverter->setName(uniqid('name-')); - $paramConverter->setConverter('draw_open_api.request_body'); - $paramConverter->setClass(uniqid('class-')); - - return $paramConverter; - } -} diff --git a/packages/open-api/composer.json b/packages/open-api/composer.json index 98ffb9e9c..aa1128086 100644 --- a/packages/open-api/composer.json +++ b/packages/open-api/composer.json @@ -8,9 +8,9 @@ "ext-json": "*", "jms/serializer": "^3.11", "phpdocumentor/reflection-docblock": "^5.2", - "symfony/event-dispatcher": "^5.4.3", - "symfony/filesystem": "^5.4.3", - "symfony/validator": "^5.4.3" + "symfony/event-dispatcher": "^6.4.0", + "symfony/filesystem": "^6.4.0", + "symfony/validator": "^6.4.0" }, "require-dev": { "ext-zip": "*", diff --git a/packages/process/composer.json b/packages/process/composer.json index e6cb4a1fb..b0b8fe589 100644 --- a/packages/process/composer.json +++ b/packages/process/composer.json @@ -12,7 +12,7 @@ ], "require": { "draw/contracts": "^0.10", - "symfony/process": "^5.4.3" + "symfony/process": "^6.4.0" }, "require-dev": { "phpunit/phpunit": "^9.0 || ^10.0" diff --git a/packages/security/Core/Security.php b/packages/security/Core/Security.php new file mode 100644 index 000000000..1fe87801d --- /dev/null +++ b/packages/security/Core/Security.php @@ -0,0 +1,32 @@ +getToken()?->getUser(); + } + + public function isGranted(mixed $attributes, mixed $subject = null): bool + { + return $this->authorizationChecker->isGranted($attributes, $subject); + } + + public function getToken(): ?TokenInterface + { + return $this->tokenStorage->getToken(); + } +} diff --git a/packages/security/Http/Authenticator/MessageAuthenticator.php b/packages/security/Http/Authenticator/MessageAuthenticator.php index fe1b03926..c421c05b9 100644 --- a/packages/security/Http/Authenticator/MessageAuthenticator.php +++ b/packages/security/Http/Authenticator/MessageAuthenticator.php @@ -3,6 +3,7 @@ namespace Draw\Component\Security\Http\Authenticator; use Draw\Component\Messenger\Searchable\EnvelopeFinder; +use Draw\Component\Security\Core\Security; use Draw\Component\Security\Http\Message\AutoConnectInterface; use Draw\Contracts\Messenger\Exception\MessageNotFoundException; use Symfony\Component\HttpFoundation\Request; @@ -10,7 +11,6 @@ use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\AuthenticationException; use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; diff --git a/packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php b/packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php index debc158f8..44ae1e854 100644 --- a/packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php +++ b/packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php @@ -45,10 +45,7 @@ class JwtAuthenticatorTest extends TestCase protected function setUp(): void { - $this->userProvider = $this->createMockWithExtraMethods( - UserProviderInterface::class, - ['loadUserByIdentifier'] - ); + $this->userProvider = $this->createMock(UserProviderInterface::class); $this->object = new JwtAuthenticator( $this->jwtEncoder = $this->createMock(JwtEncoder::class), @@ -226,10 +223,7 @@ public function testAuthenticate(): void ->with($token) ->willReturn((object) [$this->userIdentifierPayloadKey => $userId = uniqid('id-')]); - $user = $this->createMockWithExtraMethods( - UserInterface::class, - ['getUserIdentifier'] - ); + $user = $this->createMock(UserInterface::class); $user ->expects(static::once()) @@ -278,10 +272,7 @@ public function testAuthenticateWithExtraPayload(): void ] ); - $user = $this->createMockWithExtraMethods( - UserInterface::class, - ['getUserIdentifier'] - ); + $user = $this->createMock(UserInterface::class); $user ->expects(static::once()) diff --git a/packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php b/packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php index dfea8d63b..0c9428f0c 100644 --- a/packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php +++ b/packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php @@ -3,6 +3,7 @@ namespace Draw\Component\Security\Tests\Http\Authenticator; use Draw\Component\Messenger\Searchable\EnvelopeFinder; +use Draw\Component\Security\Core\Security; use Draw\Component\Security\Http\Authenticator\MessageAuthenticator; use Draw\Component\Security\Http\Message\AutoConnectInterface; use Draw\Component\Tester\MockTrait; @@ -14,7 +15,6 @@ use Symfony\Component\Messenger\Envelope; use Symfony\Component\Security\Core\Authentication\Token\TokenInterface; use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator; @@ -39,10 +39,7 @@ class MessageAuthenticatorTest extends TestCase protected function setUp(): void { - $this->userProvider = $this->createMockWithExtraMethods( - UserProviderInterface::class, - ['loadUserByIdentifier'] - ); + $this->userProvider = $this->createMock(UserProviderInterface::class); $this->service = new MessageAuthenticator( $this->envelopeFinder = $this->createMock(EnvelopeFinder::class), @@ -181,10 +178,7 @@ public function testAuthenticate(): void ->with($messageId) ->willReturn(new Envelope($this->createAutoConnectMessage($userIdentifier = uniqid('user-id-')))); - $user = $this->createMockWithExtraMethods( - UserInterface::class, - ['getUserIdentifier'] - ); + $user = $this->createMock(UserInterface::class); $user ->expects(static::once()) diff --git a/packages/security/composer.json b/packages/security/composer.json index 419d4394a..6b2f74f64 100644 --- a/packages/security/composer.json +++ b/packages/security/composer.json @@ -20,10 +20,10 @@ "draw/tester": "^0.10", "firebase/php-jwt": "^6.1", "phpunit/phpunit": "^9.0 || ^10.0", - "symfony/console": "^5.4.3", - "symfony/messenger": "^5.4.3", - "symfony/security-http": "^5.4.3", - "symfony/security-core": "^5.4.3", + "symfony/console": "^6.4.0", + "symfony/messenger": "^6.4.0", + "symfony/security-http": "^6.4.0", + "symfony/security-core": "^6.4.0", "symfony/translation-contracts": "^2.5" }, "minimum-stability": "dev", diff --git a/packages/sonata-extra-bundle/ArgumentResolver/AdminValueResolver.php b/packages/sonata-extra-bundle/ArgumentResolver/AdminValueResolver.php deleted file mode 100644 index 747a6a02b..000000000 --- a/packages/sonata-extra-bundle/ArgumentResolver/AdminValueResolver.php +++ /dev/null @@ -1,50 +0,0 @@ -getType(); - - if (null === $type) { - return false; - } - - if (AdminInterface::class !== $type) { - return false; - } - - try { - $admin = $this->adminFetcher->get($request); - } catch (\InvalidArgumentException) { - return false; - } - - return is_a($admin, $type); - } - - /** - * @return iterable> - */ - public function resolve(Request $request, ArgumentMetadata $argument): iterable - { - yield $this->adminFetcher->get($request); - } -} diff --git a/packages/sonata-extra-bundle/DependencyInjection/DrawSonataExtraExtension.php b/packages/sonata-extra-bundle/DependencyInjection/DrawSonataExtraExtension.php index f6fcfe405..5947e1f0d 100644 --- a/packages/sonata-extra-bundle/DependencyInjection/DrawSonataExtraExtension.php +++ b/packages/sonata-extra-bundle/DependencyInjection/DrawSonataExtraExtension.php @@ -122,6 +122,12 @@ public function load(array $configs, ContainerBuilder $container): void $container->removeDefinition(SubClassFieldDescriptionFactory::class); $container->removeAlias(AdminControllerInterface::class); + + foreach ($container->getDefinitions() as $id => $definition) { + if ($definition->hasTag('container.excluded')) { + $container->removeDefinition($id); + } + } } public function prepend(ContainerBuilder $container): void diff --git a/packages/sonata-extra-bundle/EventListener/SessionTimeoutRequestListener.php b/packages/sonata-extra-bundle/EventListener/SessionTimeoutRequestListener.php index 60da48f40..1b84562b7 100644 --- a/packages/sonata-extra-bundle/EventListener/SessionTimeoutRequestListener.php +++ b/packages/sonata-extra-bundle/EventListener/SessionTimeoutRequestListener.php @@ -2,11 +2,11 @@ namespace Draw\Bundle\SonataExtraBundle\EventListener; +use Draw\Component\Security\Core\Security; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; class SessionTimeoutRequestListener implements EventSubscriberInterface { @@ -40,7 +40,7 @@ public function onKernelRequestInvalidate(RequestEvent $event): void $request = $event->getRequest(); - if (!$request->hasSession()) { + if (!$request->hasSession(true)) { return; } @@ -61,7 +61,7 @@ public function onKernelResponseSetLastUsed(ResponseEvent $event): void $request = $event->getRequest(); - if (!$request->hasSession()) { + if (!$request->hasSession(true)) { return; } diff --git a/packages/sonata-extra-bundle/PreventDelete/Extension/PreventDeleteExtension.php b/packages/sonata-extra-bundle/PreventDelete/Extension/PreventDeleteExtension.php index 2557d756c..ee5d4fbe0 100644 --- a/packages/sonata-extra-bundle/PreventDelete/Extension/PreventDeleteExtension.php +++ b/packages/sonata-extra-bundle/PreventDelete/Extension/PreventDeleteExtension.php @@ -5,11 +5,11 @@ use Doctrine\Persistence\ManagerRegistry; use Draw\Bundle\SonataExtraBundle\PreventDelete\PreventDelete; use Draw\Bundle\SonataExtraBundle\PreventDelete\PreventDeleteRelationLoader; +use Draw\Component\Security\Core\Security; use Sonata\AdminBundle\Admin\AbstractAdminExtension; use Sonata\AdminBundle\Admin\AdminInterface; use Sonata\AdminBundle\Show\ShowMapper; use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag; -use Symfony\Component\Security\Core\Security; #[AutoconfigureTag( 'sonata.admin.extension', diff --git a/packages/sonata-extra-bundle/Tests/DependencyInjection/DrawSonataExtraExtensionTest.php b/packages/sonata-extra-bundle/Tests/DependencyInjection/DrawSonataExtraExtensionTest.php index 9ce905b9c..6f4090ac2 100644 --- a/packages/sonata-extra-bundle/Tests/DependencyInjection/DrawSonataExtraExtensionTest.php +++ b/packages/sonata-extra-bundle/Tests/DependencyInjection/DrawSonataExtraExtensionTest.php @@ -2,7 +2,6 @@ namespace Draw\Bundle\SonataExtraBundle\Tests\DependencyInjection; -use Draw\Bundle\SonataExtraBundle\ArgumentResolver\AdminValueResolver; use Draw\Bundle\SonataExtraBundle\Block\MonitoringBlockService; use Draw\Bundle\SonataExtraBundle\Controller\BatchAdminController; use Draw\Bundle\SonataExtraBundle\Controller\KeepAliveController; @@ -41,7 +40,6 @@ public function getConfiguration(): array public static function provideTestHasServiceDefinition(): iterable { - yield [AdminValueResolver::class]; yield [MonitoringBlockService::class]; yield [BatchAdminController::class]; yield [BatchActionExtension::class]; diff --git a/packages/sonata-extra-bundle/Tests/EventListener/SessionTimeoutRequestListenerTest.php b/packages/sonata-extra-bundle/Tests/EventListener/SessionTimeoutRequestListenerTest.php index fe726018b..103594912 100644 --- a/packages/sonata-extra-bundle/Tests/EventListener/SessionTimeoutRequestListenerTest.php +++ b/packages/sonata-extra-bundle/Tests/EventListener/SessionTimeoutRequestListenerTest.php @@ -3,6 +3,7 @@ namespace Draw\Bundle\SonataExtraBundle\Tests\EventListener; use Draw\Bundle\SonataExtraBundle\EventListener\SessionTimeoutRequestListener; +use Draw\Component\Security\Core\Security; use Draw\Component\Tester\MockTrait; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\DataProvider; @@ -20,7 +21,6 @@ use Symfony\Component\HttpKernel\Event\ResponseEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; #[CoversClass(SessionTimeoutRequestListener::class)] diff --git a/packages/sonata-extra-bundle/Tests/PreventDeletion/Extension/PreventDeleteExtensionTest.php b/packages/sonata-extra-bundle/Tests/PreventDeletion/Extension/PreventDeleteExtensionTest.php index 9f8974b0d..322ca7e32 100644 --- a/packages/sonata-extra-bundle/Tests/PreventDeletion/Extension/PreventDeleteExtensionTest.php +++ b/packages/sonata-extra-bundle/Tests/PreventDeletion/Extension/PreventDeleteExtensionTest.php @@ -6,13 +6,13 @@ use Draw\Bundle\SonataExtraBundle\PreventDelete\Extension\PreventDeleteExtension; use Draw\Bundle\SonataExtraBundle\PreventDelete\PreventDeleteRelationLoader; use Draw\Component\Core\Reflection\ReflectionAccessor; +use Draw\Component\Security\Core\Security; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Sonata\AdminBundle\Admin\AdminInterface; use Sonata\AdminBundle\Builder\ShowBuilderInterface; use Sonata\AdminBundle\FieldDescription\FieldDescriptionCollection; use Sonata\AdminBundle\Show\ShowMapper; -use Symfony\Component\Security\Core\Security; class PreventDeleteExtensionTest extends TestCase { diff --git a/packages/sonata-extra-bundle/composer.json b/packages/sonata-extra-bundle/composer.json index 7c9a4a5c9..1cfebabca 100644 --- a/packages/sonata-extra-bundle/composer.json +++ b/packages/sonata-extra-bundle/composer.json @@ -6,11 +6,12 @@ "keywords": ["symfony", "sonata"], "require": { "php": ">=8.1", - "symfony/framework-bundle": "^5.4.3", - "symfony/expression-language": "^5.4.3" + "symfony/framework-bundle": "^6.4.0", + "symfony/expression-language": "^6.4.0" }, "require-dev": { "draw/tester": "^0.10", + "draw/security": "^0.10", "phpunit/phpunit": "^9.0 || ^10.0", "sonata-project/admin-bundle": "^4.8", "sonata-project/doctrine-orm-admin-bundle": "^4.2" diff --git a/packages/sonata-integration-bundle/Console/Admin/ExecutionAdmin.php b/packages/sonata-integration-bundle/Console/Admin/ExecutionAdmin.php index 1456a0659..165274d35 100644 --- a/packages/sonata-integration-bundle/Console/Admin/ExecutionAdmin.php +++ b/packages/sonata-integration-bundle/Console/Admin/ExecutionAdmin.php @@ -25,20 +25,12 @@ class ExecutionAdmin extends AbstractAdmin { - private CommandRegistry $commandFactory; - - private KernelInterface $kernel; - - private EntityManagerInterface $entityManager; - - /** - * @required - */ - public function inject(CommandRegistry $commandFactory, KernelInterface $kernel, EntityManagerInterface $entityManager): void - { - $this->kernel = $kernel; - $this->commandFactory = $commandFactory; - $this->entityManager = $entityManager; + public function __construct( + private CommandRegistry $commandFactory, + private KernelInterface $kernel, + private EntityManagerInterface $entityManager + ) { + parent::__construct(); } public function createNewInstance(): object diff --git a/packages/sonata-integration-bundle/Console/Controller/ExecutionController.php b/packages/sonata-integration-bundle/Console/Controller/ExecutionController.php index 055abc37a..f2461dc20 100644 --- a/packages/sonata-integration-bundle/Console/Controller/ExecutionController.php +++ b/packages/sonata-integration-bundle/Console/Controller/ExecutionController.php @@ -5,21 +5,14 @@ use Doctrine\ORM\EntityManagerInterface; use Draw\Bundle\SonataIntegrationBundle\Console\CommandRegistry; use Draw\Component\Console\Entity\Execution; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Entity; use Sonata\AdminBundle\Controller\CRUDController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; class ExecutionController extends CRUDController { - private CommandRegistry $commandFactory; - - /** - * @required - */ - public function inject(CommandRegistry $commandFactory): void + public function __construct(private CommandRegistry $commandFactory) { - $this->commandFactory = $commandFactory; } public function myCreateAction(Request $request): Response @@ -39,7 +32,6 @@ public function myCreateAction(Request $request): Response return parent::createAction($request); } - #[Entity('execution', class: Execution::class)] public function acknowledgeAction(Request $request, Execution $execution): Response { $execution->setState(Execution::STATE_ACKNOWLEDGE); diff --git a/packages/sonata-integration-bundle/Messenger/Admin/MessengerMessageAdmin.php b/packages/sonata-integration-bundle/Messenger/Admin/MessengerMessageAdmin.php index d54bae32e..b7afa4a47 100644 --- a/packages/sonata-integration-bundle/Messenger/Admin/MessengerMessageAdmin.php +++ b/packages/sonata-integration-bundle/Messenger/Admin/MessengerMessageAdmin.php @@ -20,17 +20,9 @@ class MessengerMessageAdmin extends AbstractAdmin { - private EnvelopeFinderInterface $envelopeFinder; - - private array $queueNames = []; - - /** - * @required - */ - public function inject(EnvelopeFinderInterface $envelopeFinder, array $queueNames): void + public function __construct(private EnvelopeFinderInterface $envelopeFinder, private array $queueNames) { - $this->envelopeFinder = $envelopeFinder; - $this->queueNames = $queueNames; + parent::__construct(); } protected function configureDefaultSortValues(array &$sortValues): void diff --git a/packages/sonata-integration-bundle/Tests/User/Action/TwoFactorAuthenticationResendCodeActionTest.php b/packages/sonata-integration-bundle/Tests/User/Action/TwoFactorAuthenticationResendCodeActionTest.php index 0f2b43514..5c52156ed 100644 --- a/packages/sonata-integration-bundle/Tests/User/Action/TwoFactorAuthenticationResendCodeActionTest.php +++ b/packages/sonata-integration-bundle/Tests/User/Action/TwoFactorAuthenticationResendCodeActionTest.php @@ -3,6 +3,7 @@ namespace Draw\Bundle\SonataIntegrationBundle\Tests\User\Action; use Draw\Bundle\SonataIntegrationBundle\User\Action\TwoFactorAuthenticationResendCodeAction; +use Draw\Component\Security\Core\Security; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; @@ -10,7 +11,6 @@ use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Email\Generator\CodeGeneratorInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; #[CoversClass(TwoFactorAuthenticationResendCodeAction::class)] @@ -71,7 +71,7 @@ public function eraseCredentials(): void { } - public function getUsername(): string + public function getUserIdentifier(): string { return ''; } diff --git a/packages/sonata-integration-bundle/User/Action/TwoFactorAuthenticationResendCodeAction.php b/packages/sonata-integration-bundle/User/Action/TwoFactorAuthenticationResendCodeAction.php index 724bd3b46..7118ac271 100644 --- a/packages/sonata-integration-bundle/User/Action/TwoFactorAuthenticationResendCodeAction.php +++ b/packages/sonata-integration-bundle/User/Action/TwoFactorAuthenticationResendCodeAction.php @@ -2,11 +2,11 @@ namespace Draw\Bundle\SonataIntegrationBundle\User\Action; +use Draw\Component\Security\Core\Security; use Scheb\TwoFactorBundle\Model\Email\TwoFactorInterface; use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Email\Generator\CodeGeneratorInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; class TwoFactorAuthenticationResendCodeAction { diff --git a/packages/sonata-integration-bundle/User/Controller/TwoFactorAuthenticationController.php b/packages/sonata-integration-bundle/User/Controller/TwoFactorAuthenticationController.php index d9182ee30..7bf2cf723 100644 --- a/packages/sonata-integration-bundle/User/Controller/TwoFactorAuthenticationController.php +++ b/packages/sonata-integration-bundle/User/Controller/TwoFactorAuthenticationController.php @@ -5,8 +5,8 @@ use Draw\Bundle\SonataIntegrationBundle\User\Form\Enable2fa; use Draw\Bundle\SonataIntegrationBundle\User\Form\Enable2faForm; use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\Entity\ByTimeBaseOneTimePasswordInterface; +use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\QrCodeGenerator; use Scheb\TwoFactorBundle\Security\TwoFactor\Provider\Totp\TotpAuthenticatorInterface; -use Scheb\TwoFactorBundle\Security\TwoFactor\QrCode\QrCodeGenerator; use Sonata\AdminBundle\Controller\CRUDController; use Symfony\Component\Form\Form; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -85,7 +85,7 @@ public function enable2faAction( return new RedirectResponse($this->admin->generateObjectUrl('enable-2fa', $user)); } - $qrCode = $qrCodeGenerator->getTotpQrCode($user); + $qrCode = $qrCodeGenerator->getTotpQrCode($totpAuthenticator->getQRContent($user)); return new Response( $this->renderWithExtraParams( @@ -94,7 +94,7 @@ public function enable2faAction( 'object' => $user, 'action' => 'enable-2fa', 'form' => $form->createView(), - 'qrCodeSvg' => $qrCode->getWriter('svg')->writeString($qrCode), + 'qrCodeSvg' => $qrCode->getString(), 'totpSecret' => $user->getTotpSecret(), ] ) diff --git a/packages/sonata-integration-bundle/User/Extension/TwoFactorAuthenticationExtension.php b/packages/sonata-integration-bundle/User/Extension/TwoFactorAuthenticationExtension.php index e9fb0475b..bb6781dc7 100644 --- a/packages/sonata-integration-bundle/User/Extension/TwoFactorAuthenticationExtension.php +++ b/packages/sonata-integration-bundle/User/Extension/TwoFactorAuthenticationExtension.php @@ -3,13 +3,13 @@ namespace Draw\Bundle\SonataIntegrationBundle\User\Extension; use Draw\Bundle\SonataIntegrationBundle\User\Controller\TwoFactorAuthenticationController; +use Draw\Component\Security\Core\Security; use Sonata\AdminBundle\Admin\AbstractAdminExtension; use Sonata\AdminBundle\Admin\AdminInterface; use Sonata\AdminBundle\Datagrid\ListMapper; use Sonata\AdminBundle\Form\FormMapper; use Sonata\AdminBundle\Route\RouteCollectionInterface; use Symfony\Component\Form\Extension\Core\Type\CheckboxType; -use Symfony\Component\Security\Core\Security; class TwoFactorAuthenticationExtension extends AbstractAdminExtension { diff --git a/packages/sonata-integration-bundle/User/Form/Enable2fa.php b/packages/sonata-integration-bundle/User/Form/Enable2fa.php index 47ecae17d..b7e366522 100644 --- a/packages/sonata-integration-bundle/User/Form/Enable2fa.php +++ b/packages/sonata-integration-bundle/User/Form/Enable2fa.php @@ -6,10 +6,10 @@ class Enable2fa { - /** - * @Assert\NotBlank - * @Assert\Length(6) - */ + #[ + Assert\NotBlank, + Assert\Length(6) + ] public ?string $code = null; public ?string $totpSecret = null; diff --git a/packages/sonata-integration-bundle/composer.json b/packages/sonata-integration-bundle/composer.json index e889c566c..40882e8e0 100644 --- a/packages/sonata-integration-bundle/composer.json +++ b/packages/sonata-integration-bundle/composer.json @@ -8,8 +8,8 @@ "php": ">=8.1", "draw/framework-extra-bundle": "^0.10", "draw/sonata-extra-bundle": "^0.10", - "symfony/framework-bundle": "^5.4.3", - "symfony/expression-language": "^5.4.3", + "symfony/framework-bundle": "^6.4.0", + "symfony/expression-language": "^6.4.0", "sonata-project/admin-bundle": "^4.8", "sonata-project/doctrine-orm-admin-bundle": "^4.2" }, @@ -17,14 +17,15 @@ "draw/application": "^0.10", "draw/console": "^0.10", "draw/messenger": "^0.10", + "draw/security": "^0.10", "draw/tester": "^0.10", "draw/user-bundle": "^0.10", "firebase/php-jwt": "^6.1", "phpunit/phpunit": "^9.0 || ^10.0", - "scheb/2fa-bundle": "^5.12", - "scheb/2fa-email": "^5.12", - "scheb/2fa-qr-code": "^5.12", - "scheb/2fa-totp": "^5.12" + "scheb/2fa-bundle": "^6.0", + "scheb/2fa-email": "^6.0", + "endroid/qr-code": "^4.8", + "scheb/2fa-totp": "^6.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/packages/tester-bundle/Messenger/TransportTester.php b/packages/tester-bundle/Messenger/TransportTester.php index a5e20c899..884127851 100644 --- a/packages/tester-bundle/Messenger/TransportTester.php +++ b/packages/tester-bundle/Messenger/TransportTester.php @@ -7,7 +7,7 @@ use Draw\Component\Core\FilterExpression\Expression\Expression; use Draw\Component\Core\FilterExpression\Query; use PHPUnit\Framework\TestCase; -use Symfony\Component\Messenger\Transport\InMemoryTransport; +use Symfony\Component\Messenger\Transport\InMemory\InMemoryTransport; use Symfony\Component\Messenger\Transport\TransportInterface; use Symfony\Component\Validator\Constraints\Type; @@ -23,7 +23,7 @@ public function __construct(TransportInterface $transport, private Evaluator $ev $this->transport = $transport; } - public function getTransport(): TransportInterface + public function getTransport(): InMemoryTransport { return $this->transport; } @@ -41,7 +41,7 @@ public function assertMessageMatch( string $message = '' ): array { $messages = []; - foreach ($this->transport->get() as $envelope) { + foreach ($this->transport->getSent() as $envelope) { $messages[] = $envelope->getMessage(); } diff --git a/packages/tester-bundle/composer.json b/packages/tester-bundle/composer.json index 8a855bca5..9ba5285c0 100644 --- a/packages/tester-bundle/composer.json +++ b/packages/tester-bundle/composer.json @@ -7,16 +7,16 @@ "require": { "draw/core": "^0.10", "draw/tester": "^0.10", - "symfony/browser-kit": "^5.4.3", - "symfony/framework-bundle": "^5.4.3", - "symfony/http-foundation": "^5.4.3", - "symfony/validator": "^5.4.3" + "symfony/browser-kit": "^6.4.0", + "symfony/framework-bundle": "^6.4.0", + "symfony/http-foundation": "^6.4.0", + "symfony/validator": "^6.4.0" }, "require-dev": { "draw/profiling": "^0.10", "phpunit/phpunit": "^9.0 || ^10.0", - "symfony/messenger": "^5.4.3", - "symfony/yaml": "^5.4.3" + "symfony/messenger": "^6.4.0", + "symfony/yaml": "^6.4.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/packages/tester/DataTester.php b/packages/tester/DataTester.php index b12920652..a8c46d7ed 100644 --- a/packages/tester/DataTester.php +++ b/packages/tester/DataTester.php @@ -29,7 +29,13 @@ public function ifPathIsReadable(string|PropertyPathInterface $path, callable $c */ public function isReadable($path): bool { - return static::getPropertyAccessor()->isReadable($this->getData(), $path); + $data = $this->getData(); + + if (!\is_array($data) && !\is_object($data)) { + return false; + } + + return static::getPropertyAccessor()->isReadable($data, $path); } /** diff --git a/packages/tester/composer.json b/packages/tester/composer.json index 7d8ec4b99..48104984a 100644 --- a/packages/tester/composer.json +++ b/packages/tester/composer.json @@ -16,14 +16,14 @@ "guzzlehttp/psr7": "^1.8 || ^2.0", "phpunit/phpunit": "^9.0 || ^10.0", "psr/http-message": "^1.0", - "symfony/property-access": "^5.4.3" + "symfony/property-access": "^6.4.0" }, "require-dev": { "nesbot/carbon": "^2.0", "doctrine/orm": "^2.11", "pdeans/http": "^1.1", - "symfony/console": "^5.4.3", - "symfony/dependency-injection": "^5.4.3" + "symfony/console": "^6.4.0", + "symfony/dependency-injection": "^6.4.0" }, "suggest": { "pdeans/http": "If you wan to use the curl http client", diff --git a/packages/user-bundle/Controller/Api/ConnectionTokensController.php b/packages/user-bundle/Controller/Api/ConnectionTokensController.php index b2cb8d765..ef8e5acbb 100644 --- a/packages/user-bundle/Controller/Api/ConnectionTokensController.php +++ b/packages/user-bundle/Controller/Api/ConnectionTokensController.php @@ -8,15 +8,15 @@ use Draw\Component\OpenApi\Schema as OpenApi; use Draw\Component\OpenApi\Serializer\Serialization; use Draw\Component\Security\Http\Authenticator\JwtAuthenticator; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted; -use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\ExpressionLanguage\Expression; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; use Symfony\Component\Routing\Annotation\Route; use Symfony\Component\Security\Core\Exception\UserNotFoundException; use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface; use Symfony\Component\Security\Core\User\UserProviderInterface; +use Symfony\Component\Security\Http\Attribute\IsGranted; // todo refactor to be reusable class ConnectionTokensController extends AbstractController @@ -32,7 +32,7 @@ class ConnectionTokensController extends AbstractController * @return ConnectionToken The newly created token */ #[Route(path: '/connection-tokens', name: 'connection_token_create', methods: ['POST'])] - #[Security('not is_granted("IS_AUTHENTICATED_FULLY")')] + #[IsGranted(new Expression('not is_granted("IS_AUTHENTICATED_FULLY")'))] #[OpenApi\Operation(operationId: 'drawUserBundleCreateConnectionToken', tags: ['Security'])] #[Serialization(statusCode: 201)] public function createAction( diff --git a/packages/user-bundle/DTO/Credential.php b/packages/user-bundle/DTO/Credential.php index 316dfcd3a..fbedad166 100644 --- a/packages/user-bundle/DTO/Credential.php +++ b/packages/user-bundle/DTO/Credential.php @@ -6,14 +6,10 @@ class Credential { - /** - * @Assert\NotBlank - */ + #[Assert\NotBlank] private ?string $username = null; - /** - * @Assert\NotBlank - */ + #[Assert\NotBlank] private ?string $password = null; public function getUsername(): ?string diff --git a/packages/user-bundle/DependencyInjection/DrawUserExtension.php b/packages/user-bundle/DependencyInjection/DrawUserExtension.php index 637c29366..931c212c2 100644 --- a/packages/user-bundle/DependencyInjection/DrawUserExtension.php +++ b/packages/user-bundle/DependencyInjection/DrawUserExtension.php @@ -140,6 +140,12 @@ public function load(array $configs, ContainerBuilder $container): void 'draw.user.orm.metadata_driver.exclude_paths', $this->excludeEntitiesPath ); + + foreach ($container->getDefinitions() as $id => $definition) { + if ($definition->hasTag('container.excluded')) { + $container->removeDefinition($id); + } + } } private function assignParameters(array $config, ContainerBuilder $container): void diff --git a/packages/user-bundle/Entity/SecurityUserInterface.php b/packages/user-bundle/Entity/SecurityUserInterface.php index c4db88949..19439de9f 100644 --- a/packages/user-bundle/Entity/SecurityUserInterface.php +++ b/packages/user-bundle/Entity/SecurityUserInterface.php @@ -9,7 +9,7 @@ interface SecurityUserInterface extends PasswordAuthenticatedUserInterface, User { public function getId(): mixed; - public function getUserIdentifier(): ?string; + public function getUserIdentifier(): string; public function getPasswordUpdatedAt(): ?\DateTimeInterface; diff --git a/packages/user-bundle/Entity/SecurityUserTrait.php b/packages/user-bundle/Entity/SecurityUserTrait.php index 67292b7e0..a7bf98122 100644 --- a/packages/user-bundle/Entity/SecurityUserTrait.php +++ b/packages/user-bundle/Entity/SecurityUserTrait.php @@ -38,7 +38,7 @@ public function setEmail(string $email): self return $this; } - public function getUserIdentifier(): ?string + public function getUserIdentifier(): string { return $this->getUsername(); } diff --git a/packages/user-bundle/Entity/UserLock.php b/packages/user-bundle/Entity/UserLock.php index ea280f6b4..34738d080 100644 --- a/packages/user-bundle/Entity/UserLock.php +++ b/packages/user-bundle/Entity/UserLock.php @@ -19,7 +19,7 @@ class UserLock implements \Stringable #[ORM\Column(name: 'id', type: 'guid')] private ?string $id = null; - #[ORM\ManyToOne(targetEntity: LockableUserInterface::class)] + #[ORM\ManyToOne(targetEntity: LockableUserInterface::class, inversedBy: 'userLocks')] #[ORM\JoinColumn(nullable: false, onDelete: 'CASCADE')] private ?LockableUserInterface $user = null; diff --git a/packages/user-bundle/EventListener/TwoFactorAuthenticationListener.php b/packages/user-bundle/EventListener/TwoFactorAuthenticationListener.php index 99a614d27..74fdc5975 100644 --- a/packages/user-bundle/EventListener/TwoFactorAuthenticationListener.php +++ b/packages/user-bundle/EventListener/TwoFactorAuthenticationListener.php @@ -5,10 +5,10 @@ use Draw\Bundle\UserBundle\Entity\SecurityUserInterface; use Draw\Bundle\UserBundle\Event\UserRequestInterceptionEvent; use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\Entity\ByTimeBaseOneTimePasswordInterface; +use Draw\Component\Security\Core\Security; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; class TwoFactorAuthenticationListener implements EventSubscriberInterface { diff --git a/packages/user-bundle/EventListener/UserRequestInterceptorListener.php b/packages/user-bundle/EventListener/UserRequestInterceptorListener.php index 6ba548d62..e38455af4 100644 --- a/packages/user-bundle/EventListener/UserRequestInterceptorListener.php +++ b/packages/user-bundle/EventListener/UserRequestInterceptorListener.php @@ -4,6 +4,7 @@ use Draw\Bundle\UserBundle\Event\UserRequestInterceptedEvent; use Draw\Bundle\UserBundle\Event\UserRequestInterceptionEvent; +use Draw\Component\Security\Core\Security; use Symfony\Bundle\SecurityBundle\Security\FirewallMap; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\RedirectResponse; @@ -11,7 +12,6 @@ use Symfony\Component\HttpFoundation\Session\SessionInterface; use Symfony\Component\HttpKernel\Event\RequestEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class UserRequestInterceptorListener implements EventSubscriberInterface @@ -124,7 +124,7 @@ private function getAccessibleSession(Request $request): ?SessionInterface } } - if (!$request->hasSession()) { + if (!$request->hasSession(true)) { return null; } diff --git a/packages/user-bundle/Feed/FlashUserFeed.php b/packages/user-bundle/Feed/FlashUserFeed.php index 75651e5a9..cc749dc15 100644 --- a/packages/user-bundle/Feed/FlashUserFeed.php +++ b/packages/user-bundle/Feed/FlashUserFeed.php @@ -2,10 +2,10 @@ namespace Draw\Bundle\UserBundle\Feed; +use Draw\Component\Security\Core\Security; use Symfony\Component\HttpFoundation\Exception\SessionNotFoundException; use Symfony\Component\HttpFoundation\RequestStack; use Symfony\Component\HttpFoundation\Session\Session; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Contracts\Translation\TranslatorInterface; diff --git a/packages/user-bundle/Message/TemporaryUnlockedMessage.php b/packages/user-bundle/Message/TemporaryUnlockedMessage.php index 401f0a173..00203b3bc 100644 --- a/packages/user-bundle/Message/TemporaryUnlockedMessage.php +++ b/packages/user-bundle/Message/TemporaryUnlockedMessage.php @@ -39,11 +39,6 @@ public function preSend(MessageHolderInterface $messageHolder): void throw new \LogicException(sprintf('The parameter [%s] must implement interfaced [%s]', '$messageHolder', LockableUserInterface::class)); } - $this->setUser($messageHolder); - } - - private function setUser(LockableUserInterface $user): void - { - $this->userIdentifier = $user->getUserIdentifier(); + $this->userIdentifier = $messageHolder->getUserIdentifier(); } } diff --git a/packages/user-bundle/MessageHandler/NewUserSendEmailMessageHandler.php b/packages/user-bundle/MessageHandler/NewUserSendEmailMessageHandler.php index 6a00d1d92..3760a1d8d 100644 --- a/packages/user-bundle/MessageHandler/NewUserSendEmailMessageHandler.php +++ b/packages/user-bundle/MessageHandler/NewUserSendEmailMessageHandler.php @@ -7,16 +7,11 @@ use Draw\Bundle\UserBundle\Message\NewUserMessage; use Draw\Component\Mailer\Recipient\LocalizationAwareInterface; use Symfony\Component\Mailer\MailerInterface; -use Symfony\Component\Messenger\Handler\MessageHandlerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Security\Core\User\UserInterface; -class NewUserSendEmailMessageHandler implements MessageHandlerInterface +class NewUserSendEmailMessageHandler { - public static function getHandledMessages(): iterable - { - yield NewUserMessage::class => 'handleNewUserMessage'; - } - /** * @param EntityRepository $drawUserEntityRepository */ @@ -26,7 +21,8 @@ public function __construct( ) { } - public function __invoke(NewUserMessage $message): void + #[AsMessageHandler] + public function handleNewUserMessage(NewUserMessage $message): void { $user = $this->drawUserEntityRepository->find($message->getUserId()); diff --git a/packages/user-bundle/MessageHandler/PasswordChangeRequestedSendEmailMessageHandler.php b/packages/user-bundle/MessageHandler/PasswordChangeRequestedSendEmailMessageHandler.php index a75a5d5f2..04fee906e 100644 --- a/packages/user-bundle/MessageHandler/PasswordChangeRequestedSendEmailMessageHandler.php +++ b/packages/user-bundle/MessageHandler/PasswordChangeRequestedSendEmailMessageHandler.php @@ -8,16 +8,11 @@ use Draw\Bundle\UserBundle\Message\PasswordChangeRequestedMessage; use Draw\Component\Mailer\Recipient\LocalizationAwareInterface; use Symfony\Component\Mailer\MailerInterface; -use Symfony\Component\Messenger\Handler\MessageHandlerInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Security\Core\User\UserInterface; -class PasswordChangeRequestedSendEmailMessageHandler implements MessageHandlerInterface +class PasswordChangeRequestedSendEmailMessageHandler { - public static function getHandledMessages(): iterable - { - yield PasswordChangeRequestedMessage::class => 'handlePasswordChangeRequestedMessage'; - } - /** * @param EntityRepository $drawUserEntityRepository */ @@ -27,7 +22,8 @@ public function __construct( ) { } - public function __invoke(PasswordChangeRequestedMessage $message): void + #[AsMessageHandler] + public function handlePasswordChangeRequestedMessage(PasswordChangeRequestedMessage $message): void { $user = $this->drawUserEntityRepository->find($message->getUserId()); diff --git a/packages/user-bundle/MessageHandler/PreventNotHandleMessageHandler.php b/packages/user-bundle/MessageHandler/PreventNotHandleMessageHandler.php index d1d6cb0ab..6c2a5ba7e 100644 --- a/packages/user-bundle/MessageHandler/PreventNotHandleMessageHandler.php +++ b/packages/user-bundle/MessageHandler/PreventNotHandleMessageHandler.php @@ -6,19 +6,12 @@ use Draw\Bundle\UserBundle\Message\PasswordChangeRequestedMessage; use Draw\Bundle\UserBundle\Message\TemporaryUnlockedMessage; use Draw\Bundle\UserBundle\Message\UserLockActivatedMessage; -use Symfony\Component\Messenger\Handler\MessageSubscriberInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; -class PreventNotHandleMessageHandler implements MessageSubscriberInterface +class PreventNotHandleMessageHandler { - public static function getHandledMessages(): iterable - { - yield PasswordChangeRequestedMessage::class => 'nothing'; - yield NewUserMessage::class => 'nothing'; - yield UserLockActivatedMessage::class => 'nothing'; - yield TemporaryUnlockedMessage::class => 'nothing'; - } - - public function nothing(object $event): void + #[AsMessageHandler] + public function nothing(PasswordChangeRequestedMessage|NewUserMessage|UserLockActivatedMessage|TemporaryUnlockedMessage $event): void { } } diff --git a/packages/user-bundle/MessageHandler/RefreshUserLockMessageHandler.php b/packages/user-bundle/MessageHandler/RefreshUserLockMessageHandler.php index 9a0340ea4..eddc0119b 100644 --- a/packages/user-bundle/MessageHandler/RefreshUserLockMessageHandler.php +++ b/packages/user-bundle/MessageHandler/RefreshUserLockMessageHandler.php @@ -7,18 +7,11 @@ use Draw\Bundle\UserBundle\AccountLocker; use Draw\Bundle\UserBundle\Entity\LockableUserInterface; use Draw\Bundle\UserBundle\Message\RefreshUserLockMessage; -use Symfony\Component\Messenger\Handler\MessageSubscriberInterface; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Security\Core\User\UserInterface; -class RefreshUserLockMessageHandler implements MessageSubscriberInterface +class RefreshUserLockMessageHandler { - public static function getHandledMessages(): array - { - return [ - RefreshUserLockMessage::class => 'handleRefreshUserLockMessage', - ]; - } - /** * @param EntityRepository $drawUserEntityRepository */ @@ -29,6 +22,7 @@ public function __construct( ) { } + #[AsMessageHandler] public function handleRefreshUserLockMessage(RefreshUserLockMessage $message): void { if (!$user = $this->drawUserEntityRepository->find($message->getUserId())) { diff --git a/packages/user-bundle/MessageHandler/UserLockLifeCycleMessageHandler.php b/packages/user-bundle/MessageHandler/UserLockLifeCycleMessageHandler.php index f83504a2e..0ac5caf79 100644 --- a/packages/user-bundle/MessageHandler/UserLockLifeCycleMessageHandler.php +++ b/packages/user-bundle/MessageHandler/UserLockLifeCycleMessageHandler.php @@ -9,29 +9,25 @@ use Draw\Bundle\UserBundle\Message\UserLockDelayedActivationMessage; use Draw\Component\Core\DateTimeUtils; use Draw\Component\Messenger\Searchable\Stamp\SearchableTagStamp; +use Symfony\Component\Messenger\Attribute\AsMessageHandler; use Symfony\Component\Messenger\Envelope; -use Symfony\Component\Messenger\Handler\MessageSubscriberInterface; use Symfony\Component\Messenger\MessageBusInterface; use Symfony\Component\Messenger\Stamp\DelayStamp; use Symfony\Component\Messenger\Stamp\DispatchAfterCurrentBusStamp; -class UserLockLifeCycleMessageHandler implements MessageSubscriberInterface +class UserLockLifeCycleMessageHandler { - public static function getHandledMessages(): iterable - { - yield NewUserLockMessage::class => 'handleNewUserLockMessage'; - yield UserLockDelayedActivationMessage::class => 'handleUserLockDelayedActivationMessage'; - } - public function __construct(private MessageBusInterface $messageBus, private EntityManagerInterface $entityManager) { } + #[AsMessageHandler] public function handleNewUserLockMessage(NewUserLockMessage $message): void { $this->sendUserLockLifeCycleMessage($message->getUserLockId()); } + #[AsMessageHandler] public function handleUserLockDelayedActivationMessage(UserLockDelayedActivationMessage $message): void { $this->sendUserLockLifeCycleMessage($message->getUserLockId()); diff --git a/packages/user-bundle/Security/TwoFactorAuthentication/Entity/ByTimeBaseOneTimePasswordTrait.php b/packages/user-bundle/Security/TwoFactorAuthentication/Entity/ByTimeBaseOneTimePasswordTrait.php index 7be74a1aa..6fa8d0b5d 100644 --- a/packages/user-bundle/Security/TwoFactorAuthentication/Entity/ByTimeBaseOneTimePasswordTrait.php +++ b/packages/user-bundle/Security/TwoFactorAuthentication/Entity/ByTimeBaseOneTimePasswordTrait.php @@ -23,7 +23,7 @@ public function setTotpSecret(?string $totpSecret): void $this->totpSecret = $totpSecret; } - abstract public function getUserIdentifier(): ?string; + abstract public function getUserIdentifier(): string; public function isTotpAuthenticationEnabled(): bool { diff --git a/packages/user-bundle/Security/TwoFactorAuthentication/QrCodeGenerator.php b/packages/user-bundle/Security/TwoFactorAuthentication/QrCodeGenerator.php new file mode 100644 index 000000000..3f003bdfa --- /dev/null +++ b/packages/user-bundle/Security/TwoFactorAuthentication/QrCodeGenerator.php @@ -0,0 +1,27 @@ +writer(new SvgWriter()) + ->writerOptions([]) + ->data($qrCodeContent) + ->encoding(new Encoding('UTF-8')) + ->errorCorrectionLevel(new ErrorCorrectionLevelHigh()) + ->size(200) + ->margin(0) + ->roundBlockSizeMode(new RoundBlockSizeModeMargin()) + ->build(); + } +} diff --git a/packages/user-bundle/Tests/DependencyInjection/DrawUserExtensionTest.php b/packages/user-bundle/Tests/DependencyInjection/DrawUserExtensionTest.php index 8fdcfbcbf..95352f82e 100644 --- a/packages/user-bundle/Tests/DependencyInjection/DrawUserExtensionTest.php +++ b/packages/user-bundle/Tests/DependencyInjection/DrawUserExtensionTest.php @@ -11,6 +11,7 @@ use Draw\Bundle\UserBundle\Feed\FlashUserFeed; use Draw\Bundle\UserBundle\Feed\UserFeedInterface; use Draw\Bundle\UserBundle\MessageHandler\PreventNotHandleMessageHandler; +use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\QrCodeGenerator; use Draw\Bundle\UserBundle\Tests\Fixtures\Entity\User; use Draw\Component\Tester\DependencyInjection\ExtensionTestCase; use Symfony\Component\DependencyInjection\Extension\Extension; @@ -52,6 +53,7 @@ public static function provideTestHasServiceDefinition(): iterable yield [UserFeedInterface::class, FlashUserFeed::class]; yield ['Doctrine\ORM\EntityRepository $drawUserEntityRepository', 'draw_user.user_repository']; yield [PreventNotHandleMessageHandler::class]; + yield [QrCodeGenerator::class]; } public function testExcludePathsParameter(): void diff --git a/packages/user-bundle/Tests/EventListener/TwoFactorAuthenticationListenerTest.php b/packages/user-bundle/Tests/EventListener/TwoFactorAuthenticationListenerTest.php index fc3e95fcd..821265ab6 100644 --- a/packages/user-bundle/Tests/EventListener/TwoFactorAuthenticationListenerTest.php +++ b/packages/user-bundle/Tests/EventListener/TwoFactorAuthenticationListenerTest.php @@ -10,13 +10,13 @@ use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\Entity\ByTimeBaseOneTimePasswordTrait; use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\Entity\ConfigurationTrait; use Draw\Bundle\UserBundle\Security\TwoFactorAuthentication\Entity\TwoFactorAuthenticationUserInterface; +use Draw\Component\Security\Core\Security; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; class TwoFactorAuthenticationListenerTest extends TestCase @@ -88,7 +88,7 @@ public function getSalt(): ?string return null; } - public function getUsername(): string + public function getUserIdentifier(): string { return ''; } diff --git a/packages/user-bundle/Tests/Fixtures/Entity/User.php b/packages/user-bundle/Tests/Fixtures/Entity/User.php index 9142a4068..cb5870089 100644 --- a/packages/user-bundle/Tests/Fixtures/Entity/User.php +++ b/packages/user-bundle/Tests/Fixtures/Entity/User.php @@ -39,7 +39,7 @@ public function setUsername(?string $username): void $this->username = $username; } - public function getUserIdentifier(): ?string + public function getUserIdentifier(): string { return $this->getUsername(); } diff --git a/packages/user-bundle/composer.json b/packages/user-bundle/composer.json index 489caf2f7..a87f63fce 100644 --- a/packages/user-bundle/composer.json +++ b/packages/user-bundle/composer.json @@ -14,29 +14,29 @@ "draw/contracts": "^0.10", "draw/core": "^0.10", "ramsey/uuid": "^4.2", - "symfony/framework-bundle": "^5.4.3", - "symfony/security-core": "^5.4.3", - "symfony/security-guard": "^5.4.3", - "symfony/security-http": "^5.4.3", - "symfony/yaml": "^5.4.3" + "symfony/framework-bundle": "^6.4.0", + "symfony/security-core": "^6.4.0", + "symfony/security-http": "^6.4.0", + "symfony/yaml": "^6.4.0" }, "require-dev": { "draw/framework-extra-bundle": "^0.10", "draw/mailer": "^0.10", "draw/messenger": "^0.10", + "draw/security": "^0.10", "draw/tester": "^0.10", + "endroid/qr-code": "^4.8", "firebase/php-jwt": "^6.1", "phpunit/phpunit": "^9.0 || ^10.0", - "scheb/2fa-bundle": "^5.12", - "scheb/2fa-qr-code": "^5.12", - "scheb/2fa-totp": "^5.12" + "scheb/2fa-bundle": "^6.0", + "scheb/2fa-totp": "^6.0" }, "suggest": { "draw/messenger": "By using this bundle 'call to action' link will be generated. Other wise you need to do it by hand", "draw/post-office-bundle": "This allow to write and send email via email writer services.", + "endroid/qr-code": "Use for the 2FA secret code generation using QR code", "firebase/php-jwt": "Use for the jwt connection token system", "scheb/2fa-bundle": "Use for the 2FA", - "scheb/2fa-qr-code": "Use for the 2FA secret code generation using QR code", "scheb/2fa-totp": "Use to enable TOTP methdon for 2FA" }, "minimum-stability": "dev", diff --git a/packages/validator/composer.json b/packages/validator/composer.json index 86aecaccf..4ec179ebf 100644 --- a/packages/validator/composer.json +++ b/packages/validator/composer.json @@ -10,7 +10,7 @@ } ], "require": { - "symfony/validator": "^5.4.3" + "symfony/validator": "^6.4.0" }, "require-dev": { "phpunit/phpunit": "^9.0 || ^10.0", diff --git a/packages/workflow/EventListener/AddUserToContextListener.php b/packages/workflow/EventListener/AddUserToContextListener.php index 5af1043e1..0b41786ba 100644 --- a/packages/workflow/EventListener/AddUserToContextListener.php +++ b/packages/workflow/EventListener/AddUserToContextListener.php @@ -2,8 +2,8 @@ namespace Draw\Component\Workflow\EventListener; +use Draw\Component\Security\Core\Security; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Workflow\Event\TransitionEvent; class AddUserToContextListener implements EventSubscriberInterface diff --git a/packages/workflow/Tests/EventListener/AddUserToContextListenerTest.php b/packages/workflow/Tests/EventListener/AddUserToContextListenerTest.php index 3acaac3bb..71736162e 100644 --- a/packages/workflow/Tests/EventListener/AddUserToContextListenerTest.php +++ b/packages/workflow/Tests/EventListener/AddUserToContextListenerTest.php @@ -2,11 +2,11 @@ namespace Draw\Component\Workflow\Tests\EventListener; +use Draw\Component\Security\Core\Security; use Draw\Component\Workflow\EventListener\AddUserToContextListener; use PHPUnit\Framework\MockObject\MockObject; use PHPUnit\Framework\TestCase; use Symfony\Component\EventDispatcher\EventSubscriberInterface; -use Symfony\Component\Security\Core\Security; use Symfony\Component\Security\Core\User\UserInterface; use Symfony\Component\Workflow\Event\TransitionEvent; use Symfony\Component\Workflow\Marking; diff --git a/packages/workflow/composer.json b/packages/workflow/composer.json index 62fd1d6a6..9e5d2fdc3 100644 --- a/packages/workflow/composer.json +++ b/packages/workflow/composer.json @@ -11,12 +11,13 @@ } ], "require": { - "symfony/event-dispatcher": "^5.4.3", - "symfony/workflow": "^5.4.3" + "symfony/event-dispatcher": "^6.4.0", + "symfony/workflow": "^6.4.0" }, "require-dev": { + "draw/security": "^0.10", "phpunit/phpunit": "^9.0 || ^10.0", - "symfony/security-core": "^5.4.3" + "symfony/security-core": "^6.4.0" }, "minimum-stability": "dev", "prefer-stable": true, diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 1d2b5f30f..14e0db600 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -30,52 +30,8 @@ parameters: count: 1 path: packages/security/Http/Authenticator/JwtAuthenticator.php - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getRole\\(\\)\\.$#" - count: 1 - path: packages/security/Http/EventListener/RoleRestrictedAuthenticatorListener.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getUser\\(\\)\\.$#" - count: 1 - path: packages/security/Http/EventListener/RoleRestrictedAuthenticatorListener.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:markResolved\\(\\)\\.$#" - count: 1 - path: packages/security/Http/EventListener/RoleRestrictedAuthenticatorListener.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getPayloadKeyValue\\(\\)\\.$#" - count: 2 - path: packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getUser\\(\\)\\.$#" - count: 1 - path: packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getUserIdentifier\\(\\)\\.$#" - count: 1 - path: packages/security/Tests/Http/Authenticator/JwtAuthenticatorTest.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getUser\\(\\)\\.$#" - count: 1 - path: packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php - - - - message: "#^Call to an undefined method Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\Passport\\\\Badge\\\\BadgeInterface\\:\\:getUserIdentifier\\(\\)\\.$#" - count: 1 - path: packages/security/Tests/Http/Authenticator/MessageAuthenticatorTest.php - - message: "#^Class Draw\\\\Bundle\\\\SonataIntegrationBundle\\\\User\\\\Security\\\\AdminLoginAuthenticator extends @final class Symfony\\\\Component\\\\Security\\\\Http\\\\Authenticator\\\\FormLoginAuthenticator\\.$#" count: 1 path: packages/sonata-integration-bundle/User/Security/AdminLoginAuthenticator.php - - - message: "#^Call to static method PHPUnit\\\\Framework\\\\Assert\\:\\:assertArrayHasKey\\(\\) with string\\|null and array\\{\\} will always evaluate to false\\.$#" - count: 1 - path: packages/user-bundle/Tests/AccountLocker/Entity/LockableUserTraitTest.php diff --git a/symfony.lock b/symfony.lock index cc683a1b9..f67bb7293 100644 --- a/symfony.lock +++ b/symfony.lock @@ -23,9 +23,6 @@ "bamarni/composer-bin-plugin": { "version": "v1.5.0" }, - "beberlei/assert": { - "version": "v3.3.1" - }, "brick/math": { "version": "0.9.3" }, @@ -149,9 +146,6 @@ ".php-cs-fixer.dist.php" ] }, - "friendsofphp/proxy-manager-lts": { - "version": "v1.0.5" - }, "guzzlehttp/guzzle": { "version": "7.3.0" }, @@ -176,18 +170,12 @@ "ref": "384cec52df45f3bfd46a09930d6960a58872b268" } }, - "khanamiryan/qrcode-detector-decoder": { - "version": "1.0.5.2" - }, "knplabs/knp-menu": { "version": "v3.2.0" }, "knplabs/knp-menu-bundle": { "version": "v3.1.0" }, - "laminas/laminas-code": { - "version": "3.4.1" - }, "laminas/laminas-diactoros": { "version": "2.8.0" }, @@ -200,9 +188,6 @@ "myclabs/deep-copy": { "version": "1.10.2" }, - "myclabs/php-enum": { - "version": "1.8.3" - }, "nelmio/cors-bundle": { "version": "2.1", "recipe": { @@ -335,9 +320,6 @@ "config/routes/scheb_2fa.yaml" ] }, - "scheb/2fa-qr-code": { - "version": "v5.12.1" - }, "scheb/2fa-totp": { "version": "v5.12.1" }, @@ -386,18 +368,6 @@ "sebastian/version": { "version": "3.0.2" }, - "sensio/framework-extra-bundle": { - "version": "6.2", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.2", - "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" - }, - "files": [ - "config/packages/sensio_framework_extra.yaml" - ] - }, "sensiolabs/ansi-to-html": { "version": "1.2", "recipe": { @@ -449,9 +419,6 @@ "spomky-labs/otphp": { "version": "v10.0.1" }, - "symfony/amqp-messenger": { - "version": "v5.3.7" - }, "symfony/asset": { "version": "v5.3.4" }, @@ -546,12 +513,12 @@ "version": "v5.3.8" }, "symfony/framework-bundle": { - "version": "5.4", + "version": "6.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.4", - "ref": "3cd216a4d007b78d8554d44a5b1c0a446dab24fb" + "branch": "main", + "version": "6.4", + "ref": "a91c965766ad3ff2ae15981801643330eb42b6a5" }, "files": [ "config/packages/cache.yaml", @@ -560,8 +527,8 @@ "config/routes/framework.yaml", "config/services.yaml", "public/index.php", - "app/src/Controller/.gitignore", - "app/src/Kernel.php" + "src/Controller/.gitignore", + "src/Kernel.php" ] }, "symfony/http-client": { @@ -576,6 +543,18 @@ "symfony/http-kernel": { "version": "v5.3.9" }, + "symfony/lock": { + "version": "6.4", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "5.2", + "ref": "8e937ff2b4735d110af1770f242c1107fdab4c8e" + }, + "files": [ + "config/packages/lock.yaml" + ] + }, "symfony/mailer": { "version": "5.3", "recipe": { @@ -712,9 +691,6 @@ "symfony/security-csrf": { "version": "v5.3.4" }, - "symfony/security-guard": { - "version": "v5.3.7" - }, "symfony/security-http": { "version": "v5.3.8" }, @@ -805,9 +781,6 @@ "symfony/yaml": { "version": "v5.3.6" }, - "thecodingmachine/safe": { - "version": "v1.3.3" - }, "theseer/tokenizer": { "version": "1.2.1" }, diff --git a/tests/Controller/Security/TwoFactorAuthorizationTest.php b/tests/Controller/Security/TwoFactorAuthorizationTest.php index b0985f2a7..55dab19ed 100644 --- a/tests/Controller/Security/TwoFactorAuthorizationTest.php +++ b/tests/Controller/Security/TwoFactorAuthorizationTest.php @@ -71,10 +71,8 @@ public function testLoginRedirectEnable2fa(): KernelBrowser /** * @depends testLoginRedirectEnable2fa */ - public function testCancel(): KernelBrowser + public function testCancel(KernelBrowser $client): KernelBrowser { - /** @var KernelBrowser $client */ - $client = $this->getService('test.client'); $client->followRedirects(); $crawler = $client->request('GET', '/admin/app/user/'.self::$user->getId().'/enable-2fa'); diff --git a/tests/Entity/UserTest.php b/tests/Entity/UserTest.php index aeaad9305..32a0b6ee4 100644 --- a/tests/Entity/UserTest.php +++ b/tests/Entity/UserTest.php @@ -80,7 +80,7 @@ public function testLockDelayed(): void $this->transportTester->assertMessageMatch(UserLockDelayedActivationMessage::class); - $stamp = $this->transportTester->getTransport()->get()[0]->last(SearchableTagStamp::class); + $stamp = $this->transportTester->getTransport()->getSent()[0]->last(SearchableTagStamp::class); static::assertTrue($stamp->getEnforceUniqueness()); static::assertSame( diff --git a/vendor-bin/monorepo/composer.lock b/vendor-bin/monorepo/composer.lock index b3380a810..0108609ef 100644 --- a/vendor-bin/monorepo/composer.lock +++ b/vendor-bin/monorepo/composer.lock @@ -488,16 +488,16 @@ }, { "name": "symfony/config", - "version": "v5.4.26", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650" + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8109892f27beed9252bd1f1c1880aeb4ad842650", - "reference": "8109892f27beed9252bd1f1c1880aeb4ad842650", + "url": "https://api.github.com/repos/symfony/config/zipball/dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", + "reference": "dd5ea39de228813aba0c23c3a4153da2a4cf3cd9", "shasum": "" }, "require": { @@ -547,7 +547,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.26" + "source": "https://github.com/symfony/config/tree/v5.4.31" }, "funding": [ { @@ -563,20 +563,20 @@ "type": "tidelift" } ], - "time": "2023-07-19T20:21:11+00:00" + "time": "2023-11-09T08:22:43+00:00" }, { "name": "symfony/console", - "version": "v5.4.28", + "version": "v5.4.32", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827" + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827", - "reference": "f4f71842f24c2023b91237c72a365306f3c58827", + "url": "https://api.github.com/repos/symfony/console/zipball/c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", + "reference": "c70df1ffaf23a8d340bded3cfab1b86752ad6ed7", "shasum": "" }, "require": { @@ -646,7 +646,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.28" + "source": "https://github.com/symfony/console/tree/v5.4.32" }, "funding": [ { @@ -662,20 +662,20 @@ "type": "tidelift" } ], - "time": "2023-08-07T06:12:30+00:00" + "time": "2023-11-18T18:23:04+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.29", + "version": "v5.4.33", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05" + "reference": "14969a558cd6382b2a12b14b20ef9a851a02da79" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/338638ed8c9d5c7fcb136a73f5c7043465ae2f05", - "reference": "338638ed8c9d5c7fcb136a73f5c7043465ae2f05", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/14969a558cd6382b2a12b14b20ef9a851a02da79", + "reference": "14969a558cd6382b2a12b14b20ef9a851a02da79", "shasum": "" }, "require": { @@ -735,7 +735,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.29" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.33" }, "funding": [ { @@ -751,11 +751,11 @@ "type": "tidelift" } ], - "time": "2023-09-20T06:23:43+00:00" + "time": "2023-11-30T08:15:37+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -802,7 +802,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" }, "funding": [ { @@ -896,16 +896,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.3.2", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e" + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/adb01fe097a4ee930db9258a3cc906b5beb5cf2e", - "reference": "adb01fe097a4ee930db9258a3cc906b5beb5cf2e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", "shasum": "" }, "require": { @@ -922,13 +922,13 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/error-handler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -956,7 +956,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.3.2" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" }, "funding": [ { @@ -972,11 +972,11 @@ "type": "tidelift" } ], - "time": "2023-07-06T06:56:43+00:00" + "time": "2023-07-27T06:52:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.3.0", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -1032,7 +1032,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.3.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" }, "funding": [ { @@ -1179,16 +1179,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.6", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c186627f52febe09c6d5270b04f8462687a250a6" + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" }, "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/44a6d39a9cc11e154547d882d5aac1e014440771", + "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", "shasum": "" }, "require": { @@ -1203,12 +1203,12 @@ "require-dev": { "doctrine/dbal": "^2.13.1|^3|^4", "predis/predis": "^1.1|^2.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", - "symfony/mime": "^5.4|^6.0", - "symfony/rate-limiter": "^5.2|^6.0" + "symfony/cache": "^6.3|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -1236,7 +1236,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.4.0" }, "funding": [ { @@ -1252,20 +1252,20 @@ "type": "tidelift" } ], - "time": "2023-10-17T11:32:53+00:00" + "time": "2023-11-20T16:41:16+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.29", + "version": "v5.4.33", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7" + "reference": "892636f9279f953dc266dc088f900b03eecb4ffa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", - "reference": "f53265fc6bd2a7f3a4ed4e443b76e750348ac3f7", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/892636f9279f953dc266dc088f900b03eecb4ffa", + "reference": "892636f9279f953dc266dc088f900b03eecb4ffa", "shasum": "" }, "require": { @@ -1348,7 +1348,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/v5.4.29" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.33" }, "funding": [ { @@ -1364,7 +1364,7 @@ "type": "tidelift" } ], - "time": "2023-09-30T06:31:17+00:00" + "time": "2023-12-01T16:51:11+00:00" }, { "name": "symfony/polyfill-ctype", @@ -2164,16 +2164,16 @@ }, { "name": "symfony/string", - "version": "v6.3.5", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339" + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/13d76d0fb049051ed12a04bef4f9de8715bea339", - "reference": "13d76d0fb049051ed12a04bef4f9de8715bea339", + "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", + "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", "shasum": "" }, "require": { @@ -2187,11 +2187,11 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/error-handler": "^5.4|^6.0", - "symfony/http-client": "^5.4|^6.0", - "symfony/intl": "^6.2", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/intl": "^6.2|^7.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^5.4|^6.0" + "symfony/var-exporter": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -2230,7 +2230,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.5" + "source": "https://github.com/symfony/string/tree/v6.4.0" }, "funding": [ { @@ -2246,20 +2246,20 @@ "type": "tidelift" } ], - "time": "2023-09-18T10:38:32+00:00" + "time": "2023-11-28T20:41:49+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.3.6", + "version": "v6.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97" + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/999ede244507c32b8e43aebaa10e9fce20de7c97", - "reference": "999ede244507c32b8e43aebaa10e9fce20de7c97", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", "shasum": "" }, "require": { @@ -2272,10 +2272,11 @@ }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/uid": "^5.4|^6.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", "twig/twig": "^2.13|^3.0.4" }, "bin": [ @@ -2314,7 +2315,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.6" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" }, "funding": [ { @@ -2330,20 +2331,20 @@ "type": "tidelift" } ], - "time": "2023-10-12T18:45:56+00:00" + "time": "2023-11-09T08:28:32+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.23", + "version": "v5.4.31", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" + "reference": "f387675d7f5fc4231f7554baa70681f222f73563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/f387675d7f5fc4231f7554baa70681f222f73563", + "reference": "f387675d7f5fc4231f7554baa70681f222f73563", "shasum": "" }, "require": { @@ -2389,7 +2390,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.23" + "source": "https://github.com/symfony/yaml/tree/v5.4.31" }, "funding": [ { @@ -2405,7 +2406,7 @@ "type": "tidelift" } ], - "time": "2023-04-23T19:33:36+00:00" + "time": "2023-11-03T14:41:28+00:00" }, { "name": "symplify/autowire-array-parameter", @@ -2652,6 +2653,7 @@ "type": "github" } ], + "abandoned": "custom code", "time": "2020-10-26T10:38:48+00:00" }, { @@ -2769,6 +2771,7 @@ "type": "github" } ], + "abandoned": "symfony/filesystem", "time": "2020-10-26T10:38:48+00:00" }, { @@ -2816,6 +2819,7 @@ "issues": "https://github.com/symplify/symplify-kernel/issues", "source": "https://github.com/symplify/symplify-kernel/tree/8.3.48" }, + "abandoned": "symfony/http-kernel", "time": "2020-10-26T10:38:48+00:00" } ],