From 1f9562d36bad599add8655f5f043a6239266d903 Mon Sep 17 00:00:00 2001 From: lubiana Date: Sun, 29 Jun 2025 19:26:29 +0200 Subject: [PATCH 1/2] bumpi --- composer.json | 3 +- composer.lock | 151 +++++++++++--------- src/Controller/FoodOrderController.php | 68 ++++----- src/Controller/FoodVendorController.php | 34 ++--- src/Controller/MenuItemController.php | 32 ++--- src/Controller/OrderItemController.php | 130 +++++++++--------- src/DataFixtures/AppFixtures.php | 46 +++---- src/Entity/FoodOrder.php | 104 +++++++------- src/Entity/FoodVendor.php | 160 +++++++++++----------- src/Entity/MenuItem.php | 174 ++++++++++++------------ src/Entity/OrderItem.php | 88 ++++++------ src/Repository/FoodOrderRepository.php | 24 ++-- tests/DbWebTest.php | 18 +-- 13 files changed, 525 insertions(+), 507 deletions(-) diff --git a/composer.json b/composer.json index 186955e..9daaf2d 100644 --- a/composer.json +++ b/composer.json @@ -15,7 +15,6 @@ "doctrine/orm": "^3.4.0", "nelmio/cors-bundle": "^2.5", "phpdocumentor/reflection-docblock": "^5.6.2", - "phpstan/phpdoc-parser": "^1.33", "psr/clock": "^1.0", "symfony/asset": "7.3.*", "symfony/asset-mapper": "7.3.*", @@ -42,7 +41,7 @@ "require-dev": { "doctrine/doctrine-fixtures-bundle": "^4.1", "liip/test-fixtures-bundle": "^3.4", - "lubiana/code-quality": "^1.7.2", + "lubiana/code-quality": "1.7.3", "pestphp/pest": "^3.8.2", "symfony/browser-kit": "7.3.*", "symfony/css-selector": "7.3.*", diff --git a/composer.lock b/composer.lock index 46aa9a3..85c6657 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "923bae46e3b7f783b6c25f8f68f97991", + "content-hash": "bc8674fb48687aeee3da991cd7c8d0ad", "packages": [ { "name": "api-platform/core", @@ -1764,30 +1764,30 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.33.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", - "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^5.3.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -1805,9 +1805,9 @@ "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.33.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" }, - "time": "2024-10-13T11:25:22+00:00" + "time": "2025-02-19T13:28:12+00:00" }, { "name": "psr/cache", @@ -7031,28 +7031,28 @@ }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "4be43904336affa5c2f70744a348312336afd0da" + "reference": "6e0fa428497bf560152ee73ffbb8af5c6a56b0dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", - "reference": "4be43904336affa5c2f70744a348312336afd0da", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/6e0fa428497bf560152ee73ffbb8af5c6a56b0dd", + "reference": "6e0fa428497bf560152ee73ffbb8af5c6a56b0dd", "shasum": "" }, "require": { - "composer-plugin-api": "^1.0 || ^2.0", + "composer-plugin-api": "^2.2", "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { - "composer/composer": "*", + "composer/composer": "^2.2", "ext-json": "*", "ext-zip": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", + "php-parallel-lint/php-parallel-lint": "^1.4.0", "phpcompatibility/php-compatibility": "^9.0", "yoast/phpunit-polyfills": "^1.0" }, @@ -7072,9 +7072,9 @@ "authors": [ { "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" + "email": "opensource@frenck.dev", + "homepage": "https://frenck.dev", + "role": "Open source developer" }, { "name": "Contributors", @@ -7082,7 +7082,6 @@ } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", "keywords": [ "PHPCodeSniffer", "PHP_CodeSniffer", @@ -7103,9 +7102,28 @@ ], "support": { "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "security": "https://github.com/PHPCSStandards/composer-installer/security/policy", "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2023-01-05T11:28:13+00:00" + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-27T17:24:01+00:00" }, { "name": "doctrine/data-fixtures", @@ -7557,17 +7575,17 @@ }, { "name": "lubiana/code-quality", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://git.php.fail/lubiana/code-quality.git", - "reference": "b7e3418f0fa3225d2cdab9cfdcba266bc74775a4" + "reference": "85f220919f8b478eb25ca0ca1028f045b8f0c4c4" }, "require": { "php": "^8.3", - "rector/rector": "^1.0.5", - "slevomat/coding-standard": "^8.15", - "symplify/easy-coding-standard": "^12.3.5" + "rector/rector": "^2.1.0", + "slevomat/coding-standard": "^8.19.1", + "symplify/easy-coding-standard": "^12.5.20" }, "type": "library", "autoload": { @@ -7582,7 +7600,7 @@ "keywords": [ "dev" ], - "time": "2024-08-18T07:17:23+00:00" + "time": "2025-06-29T17:02:17+00:00" }, { "name": "masterminds/html5", @@ -8399,20 +8417,20 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.27", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162" + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", "shasum": "" }, "require": { - "php": "^7.2|^8.0" + "php": "^7.4|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -8453,7 +8471,7 @@ "type": "github" } ], - "time": "2025-05-21T20:51:45+00:00" + "time": "2025-05-21T20:55:28+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8932,21 +8950,21 @@ }, { "name": "rector/rector", - "version": "1.2.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61" + "reference": "d513dea45a94394b660e15c155d1fa27826f8e30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", - "reference": "40f9cf38c05296bd32f444121336a521a293fa61", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/d513dea45a94394b660e15c155d1fa27826f8e30", + "reference": "d513dea45a94394b660e15c155d1fa27826f8e30", "shasum": "" }, "require": { - "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.12.5" + "php": "^7.4|^8.0", + "phpstan/phpstan": "^2.1.17" }, "conflict": { "rector/rector-doctrine": "*", @@ -8971,6 +8989,7 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "homepage": "https://getrector.com/", "keywords": [ "automation", "dev", @@ -8979,7 +8998,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.2.10" + "source": "https://github.com/rectorphp/rector/tree/2.1.0" }, "funding": [ { @@ -8987,7 +9006,7 @@ "type": "github" } ], - "time": "2024-11-08T13:59:10+00:00" + "time": "2025-06-24T20:26:57+00:00" }, { "name": "sebastian/cli-parser", @@ -9929,32 +9948,32 @@ }, { "name": "slevomat/coding-standard", - "version": "8.15.0", + "version": "8.19.1", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "7d1d957421618a3803b593ec31ace470177d7817" + "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", - "reference": "7d1d957421618a3803b593ec31ace470177d7817", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/458d665acd49009efebd7e0cb385d71ae9ac3220", + "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.23.1", - "squizlabs/php_codesniffer": "^3.9.0" + "php": "^7.4 || ^8.0", + "phpstan/phpdoc-parser": "^2.1.0", + "squizlabs/php_codesniffer": "^3.13.0" }, "require-dev": { - "phing/phing": "2.17.4", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.10.60", - "phpstan/phpstan-deprecation-rules": "1.1.4", - "phpstan/phpstan-phpunit": "1.3.16", - "phpstan/phpstan-strict-rules": "1.5.2", - "phpunit/phpunit": "8.5.21|9.6.8|10.5.11" + "phing/phing": "3.0.1", + "php-parallel-lint/php-parallel-lint": "1.4.0", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-deprecation-rules": "2.0.3", + "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan-strict-rules": "2.0.4", + "phpunit/phpunit": "9.6.8|10.5.45|11.4.4|11.5.21|12.1.3" }, "type": "phpcodesniffer-standard", "extra": { @@ -9978,7 +9997,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" + "source": "https://github.com/slevomat/coding-standard/tree/8.19.1" }, "funding": [ { @@ -9990,20 +10009,20 @@ "type": "tidelift" } ], - "time": "2024-03-09T15:20:58+00:00" + "time": "2025-06-09T17:53:57+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.13.1", + "version": "3.13.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd" + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c", "shasum": "" }, "require": { @@ -10074,7 +10093,7 @@ "type": "thanks_dev" } ], - "time": "2025-06-12T15:04:34+00:00" + "time": "2025-06-17T22:17:01+00:00" }, { "name": "staabm/side-effects-detector", diff --git a/src/Controller/FoodOrderController.php b/src/Controller/FoodOrderController.php index 81b72d5..626d20a 100644 --- a/src/Controller/FoodOrderController.php +++ b/src/Controller/FoodOrderController.php @@ -14,22 +14,6 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/food/order')] final class FoodOrderController extends AbstractController { - #[Route( - path: '/list', - name: 'app_food_order_index', - methods: ['GET'] - )] - public function index(FoodOrderRepository $foodOrderRepository): Response - { - - return $this->render('food_order/index.html.twig', [ - 'food_orders' => $foodOrderRepository->findLatestEntries(days: 3), - 'current_page' => 0, - 'next_page' => 0, - 'prev_page' => 0, - ]); - } - #[Route( path: '/list/archive/{page}', name: 'app_food_order_archive', @@ -60,6 +44,32 @@ final class FoodOrderController extends AbstractController ]); } + #[Route('/{id}/close', name: 'app_food_order_close', methods: ['GET'])] + public function close(FoodOrder $foodOrder, FoodOrderRepository $repository): Response + { + $foodOrder->close(); + $repository->save(); + return $this->redirectToRoute('app_food_order_show', [ + 'id' => $foodOrder->getId(), + ], Response::HTTP_SEE_OTHER); + } + + #[Route( + path: '/list', + name: 'app_food_order_index', + methods: ['GET'] + )] + public function index(FoodOrderRepository $foodOrderRepository): Response + { + + return $this->render('food_order/index.html.twig', [ + 'food_orders' => $foodOrderRepository->findLatestEntries(days: 3), + 'current_page' => 0, + 'next_page' => 0, + 'prev_page' => 0, + ]); + } + #[Route('/new', name: 'app_food_order_new', methods: ['GET', 'POST'])] public function new(Request $request, EntityManagerInterface $entityManager): Response { @@ -84,24 +94,6 @@ final class FoodOrderController extends AbstractController ]); } - #[Route('/{id}', name: 'app_food_order_show', methods: ['GET'])] - public function show(FoodOrder $foodOrder): Response - { - return $this->render('food_order/show.html.twig', [ - 'food_order' => $foodOrder, - ]); - } - - #[Route('/{id}/close', name: 'app_food_order_close', methods: ['GET'])] - public function close(FoodOrder $foodOrder, FoodOrderRepository $repository): Response - { - $foodOrder->close(); - $repository->save(); - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $foodOrder->getId(), - ], Response::HTTP_SEE_OTHER); - } - #[Route('/{id}/open', name: 'app_food_order_open', methods: ['GET'])] public function open(FoodOrder $foodOrder, FoodOrderRepository $repository): Response { @@ -111,4 +103,12 @@ final class FoodOrderController extends AbstractController 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } + + #[Route('/{id}', name: 'app_food_order_show', methods: ['GET'])] + public function show(FoodOrder $foodOrder): Response + { + return $this->render('food_order/show.html.twig', [ + 'food_order' => $foodOrder, + ]); + } } diff --git a/src/Controller/FoodVendorController.php b/src/Controller/FoodVendorController.php index 283eae9..cb7c02c 100644 --- a/src/Controller/FoodVendorController.php +++ b/src/Controller/FoodVendorController.php @@ -14,6 +14,23 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/food/vendor')] final class FoodVendorController extends AbstractController { + #[Route('/{id}/edit', name: 'app_food_vendor_edit', methods: ['GET', 'POST'])] + public function edit(Request $request, FoodVendor $foodVendor, EntityManagerInterface $entityManager): Response + { + $form = $this->createForm(FoodVendorType::class, $foodVendor); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $entityManager->flush(); + + return $this->redirectToRoute('app_food_vendor_index', [], Response::HTTP_SEE_OTHER); + } + + return $this->render('food_vendor/edit.html.twig', [ + 'form' => $form, + ]); + } + #[Route('/', name: 'app_food_vendor_index', methods: ['GET'])] public function index(FoodVendorRepository $foodVendorRepository): Response { @@ -51,21 +68,4 @@ final class FoodVendorController extends AbstractController 'food_vendor' => $foodVendor, ]); } - - #[Route('/{id}/edit', name: 'app_food_vendor_edit', methods: ['GET', 'POST'])] - public function edit(Request $request, FoodVendor $foodVendor, EntityManagerInterface $entityManager): Response - { - $form = $this->createForm(FoodVendorType::class, $foodVendor); - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $entityManager->flush(); - - return $this->redirectToRoute('app_food_vendor_index', [], Response::HTTP_SEE_OTHER); - } - - return $this->render('food_vendor/edit.html.twig', [ - 'form' => $form, - ]); - } } diff --git a/src/Controller/MenuItemController.php b/src/Controller/MenuItemController.php index ecf6103..0686062 100644 --- a/src/Controller/MenuItemController.php +++ b/src/Controller/MenuItemController.php @@ -13,12 +13,18 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/menu/item')] final class MenuItemController extends AbstractController { - #[Route('/{id}', name: 'app_menu_item_show', methods: ['GET'])] - public function show(MenuItem $menuItem): Response + #[Route('/{id}', name: 'app_menu_item_delete', methods: ['POST'])] + public function delete(Request $request, MenuItem $menuItem, EntityManagerInterface $entityManager): Response { - return $this->render('menu_item/show.html.twig', [ - 'menu_item' => $menuItem, - ]); + if ($this->isCsrfTokenValid('delete' . $menuItem->getId(), $request->getPayload()->getString('_token'))) { + $menuItem->delete(); + $entityManager->flush(); + } + + return $this->redirectToRoute('app_food_vendor_show', [ + 'id' => $menuItem->getFoodVendor() + ->getId(), + ], Response::HTTP_SEE_OTHER); } #[Route('/{id}/edit', name: 'app_menu_item_edit', methods: ['GET', 'POST'])] @@ -52,17 +58,11 @@ final class MenuItemController extends AbstractController ]); } - #[Route('/{id}', name: 'app_menu_item_delete', methods: ['POST'])] - public function delete(Request $request, MenuItem $menuItem, EntityManagerInterface $entityManager): Response + #[Route('/{id}', name: 'app_menu_item_show', methods: ['GET'])] + public function show(MenuItem $menuItem): Response { - if ($this->isCsrfTokenValid('delete' . $menuItem->getId(), $request->getPayload()->getString('_token'))) { - $menuItem->delete(); - $entityManager->flush(); - } - - return $this->redirectToRoute('app_food_vendor_show', [ - 'id' => $menuItem->getFoodVendor() - ->getId(), - ], Response::HTTP_SEE_OTHER); + return $this->render('menu_item/show.html.twig', [ + 'menu_item' => $menuItem, + ]); } } diff --git a/src/Controller/OrderItemController.php b/src/Controller/OrderItemController.php index 6cdffda..f52d202 100644 --- a/src/Controller/OrderItemController.php +++ b/src/Controller/OrderItemController.php @@ -16,62 +16,6 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/order/item')] final class OrderItemController extends AbstractController { - #[Route('/new/{foodOrder}', name: 'app_order_item_new', methods: ['GET', 'POST'])] - public function new(Request $request, FoodOrder $foodOrder, EntityManagerInterface $entityManager, MenuItemRepository $menuItemRepository): Response - { - if ($foodOrder->isClosed()) { - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $foodOrder->getId(), - ], Response::HTTP_SEE_OTHER); - } - - $orderItem = new OrderItem; - $username = $request->cookies->get('username', 'nobody'); - $orderItem->setCreatedBy($username); - - $form = $this->createForm(OrderItemType::class, $orderItem); - $form->handleRequest($request); - - if ($form->isSubmitted() && $form->isValid()) { - $menuItem = $menuItemRepository->findOneBy([ - 'name' => $orderItem->getName(), - 'foodVendor' => $foodOrder->getFoodVendor(), - ]); - - if ($menuItem === null) { - $menuItem = new MenuItem; - $menuItem->setName($orderItem->getName()); - $menuItem->setFoodVendor($foodOrder->getFoodVendor()); - $entityManager->persist($menuItem); - } - - if ($menuItem->getAliasOf() !== null) { - $menuItem = $menuItem->getAliasOf(); - $orderItem->setName($menuItem->getName()); - } - - $orderItem->setMenuItem($menuItem); - $orderItem->setFoodOrder($foodOrder); - $entityManager->persist($orderItem); - $entityManager->flush(); - - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $foodOrder->getId(), - ], Response::HTTP_SEE_OTHER); - } - $menuItems = $menuItemRepository->findBy([ - 'foodVendor' => $foodOrder->getFoodVendor(), - 'deletedAt' => null, - ]); - - return $this->render('order_item/new.html.twig', [ - 'order_item' => $orderItem, - 'food_order' => $foodOrder, - 'form' => $form, - 'menuItems' => $menuItems, - ]); - } - #[Route('/{id}/copy', name: 'app_order_item_copy', methods: ['GET'])] public function copy(OrderItem $orderItem, EntityManagerInterface $entityManager): Response { @@ -95,6 +39,23 @@ final class OrderItemController extends AbstractController ], Response::HTTP_SEE_OTHER); } + #[Route('/delete/{id}', name: 'app_order_item_delete')] + public function delete(OrderItem $orderItem, EntityManagerInterface $entityManager): Response + { + $foodOrder = $orderItem->getFoodOrder(); + if ($foodOrder->isClosed()) { + return $this->redirectToRoute('app_food_order_show', [ + 'id' => $foodOrder->getId(), + ], Response::HTTP_SEE_OTHER); + } + $entityManager->remove($orderItem); + $entityManager->flush(); + return $this->redirectToRoute('app_food_order_show', [ + 'id' => $orderItem->getFoodOrder() + ->getId(), + ], Response::HTTP_SEE_OTHER); + } + #[Route('/{id}/edit', name: 'app_order_item_edit', methods: ['GET', 'POST'])] public function edit( Request $request, @@ -143,20 +104,59 @@ final class OrderItemController extends AbstractController ]); } - #[Route('/delete/{id}', name: 'app_order_item_delete')] - public function delete(OrderItem $orderItem, EntityManagerInterface $entityManager): Response + #[Route('/new/{foodOrder}', name: 'app_order_item_new', methods: ['GET', 'POST'])] + public function new(Request $request, FoodOrder $foodOrder, EntityManagerInterface $entityManager, MenuItemRepository $menuItemRepository): Response { - $foodOrder = $orderItem->getFoodOrder(); if ($foodOrder->isClosed()) { return $this->redirectToRoute('app_food_order_show', [ 'id' => $foodOrder->getId(), ], Response::HTTP_SEE_OTHER); } - $entityManager->remove($orderItem); - $entityManager->flush(); - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $orderItem->getFoodOrder() - ->getId(), - ], Response::HTTP_SEE_OTHER); + + $orderItem = new OrderItem; + $username = $request->cookies->get('username', 'nobody'); + $orderItem->setCreatedBy($username); + + $form = $this->createForm(OrderItemType::class, $orderItem); + $form->handleRequest($request); + + if ($form->isSubmitted() && $form->isValid()) { + $menuItem = $menuItemRepository->findOneBy([ + 'name' => $orderItem->getName(), + 'foodVendor' => $foodOrder->getFoodVendor(), + ]); + + if ($menuItem === null) { + $menuItem = new MenuItem; + $menuItem->setName($orderItem->getName()); + $menuItem->setFoodVendor($foodOrder->getFoodVendor()); + $entityManager->persist($menuItem); + } + + if ($menuItem->getAliasOf() !== null) { + $menuItem = $menuItem->getAliasOf(); + $orderItem->setName($menuItem->getName()); + } + + $orderItem->setMenuItem($menuItem); + $orderItem->setFoodOrder($foodOrder); + $entityManager->persist($orderItem); + $entityManager->flush(); + + return $this->redirectToRoute('app_food_order_show', [ + 'id' => $foodOrder->getId(), + ], Response::HTTP_SEE_OTHER); + } + $menuItems = $menuItemRepository->findBy([ + 'foodVendor' => $foodOrder->getFoodVendor(), + 'deletedAt' => null, + ]); + + return $this->render('order_item/new.html.twig', [ + 'order_item' => $orderItem, + 'food_order' => $foodOrder, + 'form' => $form, + 'menuItems' => $menuItems, + ]); } } diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index 327df22..b8a30b3 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -16,29 +16,6 @@ final class AppFixtures extends Fixture { private ObjectManager $manager; - #[Override] - public function load(ObjectManager $manager): void - { - $this->manager = $manager; - $vendorA = $this->createVendor('Vendor A'); - $this->addMenuItemsToVendor($vendorA); - - $vendorB = $this->createVendor('Vendor B'); - $this->addMenuItemsToVendor($vendorB); - } - - public function createVendor(string $name): FoodVendor - { - $vendorA = new FoodVendor; - $vendorA->setName($name); - $vendorA->setMenuLink('https://vendora.com'); - $vendorA->setPhone('1234567890'); - - $this->manager->persist($vendorA); - $this->manager->flush(); - return $vendorA; - } - public function addMenuItemsToVendor(FoodVendor $vendor): void { $menuItems = []; @@ -63,4 +40,27 @@ final class AppFixtures extends Fixture $this->manager->persist($orderItem); } } + + public function createVendor(string $name): FoodVendor + { + $vendorA = new FoodVendor; + $vendorA->setName($name); + $vendorA->setMenuLink('https://vendora.com'); + $vendorA->setPhone('1234567890'); + + $this->manager->persist($vendorA); + $this->manager->flush(); + return $vendorA; + } + + #[Override] + public function load(ObjectManager $manager): void + { + $this->manager = $manager; + $vendorA = $this->createVendor('Vendor A'); + $this->addMenuItemsToVendor($vendorA); + + $vendorB = $this->createVendor('Vendor B'); + $this->addMenuItemsToVendor($vendorB); + } } diff --git a/src/Entity/FoodOrder.php b/src/Entity/FoodOrder.php index 52c0d85..2ca9e80 100644 --- a/src/Entity/FoodOrder.php +++ b/src/Entity/FoodOrder.php @@ -47,32 +47,32 @@ use function iterator_to_array; #[ORM\Entity(repositoryClass: FoodOrderRepository::class)] class FoodOrder { - #[ORM\Column(nullable: true)] #[Groups(['food_order:read'])] + #[ORM\Column(nullable: true)] private DateTimeImmutable|null $closedAt = null; - #[ORM\ManyToOne(inversedBy: 'foodOrders')] - #[ORM\JoinColumn(nullable: false)] + #[Groups(['food_order:read'])] + #[ORM\Column(length: 255, options: [ + 'default' => 'nobody', + ])] + private string|null $createdBy = 'nobody'; + #[Groups(['food_order:read', 'food_order:latest'])] + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(inversedBy: 'foodOrders')] private FoodVendor|null $foodVendor = null; /** * @var Collection */ - #[ORM\OneToMany(targetEntity: OrderItem::class, mappedBy: 'foodOrder', orphanRemoval: true)] #[Groups(['food_order:read', 'food_order:latest'])] + #[ORM\OneToMany(targetEntity: OrderItem::class, mappedBy: 'foodOrder', orphanRemoval: true)] private Collection $orderItems; - #[ORM\Column(length: 255, options: [ - 'default' => 'nobody', - ])] - #[Groups(['food_order:read'])] - private string|null $createdBy = 'nobody'; - public function __construct( - #[ORM\Id] - #[ORM\Column(type: UlidType::NAME, unique: true)] #[Groups(['food_order:read'])] + #[ORM\Column(type: UlidType::NAME, unique: true)] + #[ORM\Id] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; @@ -80,9 +80,24 @@ class FoodOrder $this->open(); } - public function getId(): Ulid|null + public function addOrderItem(OrderItem $orderItem): static { - return $this->id; + if (! $this->orderItems->contains($orderItem)) { + $this->orderItems->add($orderItem); + $orderItem->setFoodOrder($this); + } + + return $this; + } + + public function close(): static + { + return $this->setClosedAt(new DateTimeImmutable); + } + + public function getClosedAt(): DateTimeImmutable|null + { + return $this->closedAt; } #[Groups(['food_order:read'])] @@ -91,35 +106,9 @@ class FoodOrder return $this->id->getDateTime(); } - public function getClosedAt(): DateTimeImmutable|null + public function getCreatedBy(): string|null { - return $this->closedAt; - } - - public function setClosedAt(DateTimeImmutable|null $closedAt = null): static - { - $this->closedAt = $closedAt; - - return $this; - } - - public function isClosed(): bool - { - if (! $this->closedAt instanceof DateTimeImmutable) { - return false; - } - return $this->closedAt < new DateTimeImmutable; - } - - public function close(): static - { - return $this->setClosedAt(new DateTimeImmutable); - } - - public function open(): static - { - $this->closedAt = (new DateTimeImmutable)->add(new DateInterval('PT1H')); - return $this; + return $this->createdBy; } public function getFoodVendor(): FoodVendor|null @@ -127,11 +116,9 @@ class FoodOrder return $this->foodVendor; } - public function setFoodVendor(FoodVendor|null $foodVendor): static + public function getId(): Ulid|null { - $this->foodVendor = $foodVendor; - - return $this; + return $this->id; } /** @@ -159,13 +146,17 @@ class FoodOrder ); } - public function addOrderItem(OrderItem $orderItem): static + public function isClosed(): bool { - if (! $this->orderItems->contains($orderItem)) { - $this->orderItems->add($orderItem); - $orderItem->setFoodOrder($this); + if (! $this->closedAt instanceof DateTimeImmutable) { + return false; } + return $this->closedAt < new DateTimeImmutable; + } + public function open(): static + { + $this->closedAt = (new DateTimeImmutable)->add(new DateInterval('PT1H')); return $this; } @@ -179,9 +170,11 @@ class FoodOrder return $this; } - public function getCreatedBy(): string|null + public function setClosedAt(DateTimeImmutable|null $closedAt = null): static { - return $this->createdBy; + $this->closedAt = $closedAt; + + return $this; } public function setCreatedBy(string $createdBy): static @@ -190,4 +183,11 @@ class FoodOrder return $this; } + + public function setFoodVendor(FoodVendor|null $foodVendor): static + { + $this->foodVendor = $foodVendor; + + return $this; + } } diff --git a/src/Entity/FoodVendor.php b/src/Entity/FoodVendor.php index 83bef71..123be49 100644 --- a/src/Entity/FoodVendor.php +++ b/src/Entity/FoodVendor.php @@ -16,19 +16,17 @@ use Symfony\Component\Validator\Constraints\Length; use function mb_strlen; -#[ORM\Entity(repositoryClass: FoodVendorRepository::class)] #[ApiResource] +#[ORM\Entity(repositoryClass: FoodVendorRepository::class)] class FoodVendor { - #[ORM\Column(length: 50)] + /** + * String of emojis (max 30 characters) + */ #[Groups(['food_order:latest', 'food_vendor:read'])] - private string|null $name = null; - - #[ORM\Column(length: 50, nullable: true, options: [ - 'default' => '', - ])] - #[Groups(['food_order:latest', 'food_vendor:read'])] - private string|null $phone = null; + #[Length(max: 10)] + #[ORM\Column(length: 30, nullable: true)] + private string|null $emojis = null; /** * @var Collection @@ -42,24 +40,26 @@ class FoodVendor #[ORM\OneToMany(targetEntity: MenuItem::class, mappedBy: 'foodVendor', orphanRemoval: true)] private Collection $menuItems; - #[ORM\Column(length: 255, nullable: true)] #[Groups(['food_order:latest'])] + #[ORM\Column(length: 255, nullable: true)] private string|null $menuLink = null; - /** - * String of emojis (max 30 characters) - */ - #[ORM\Column(length: 30, nullable: true)] #[Groups(['food_order:latest', 'food_vendor:read'])] - #[Length(max: 10)] - private string|null $emojis = null; + #[ORM\Column(length: 50)] + private string|null $name = null; + + #[Groups(['food_order:latest', 'food_vendor:read'])] + #[ORM\Column(length: 50, nullable: true, options: [ + 'default' => '', + ])] + private string|null $phone = null; public function __construct( - #[ORM\Id] - #[ORM\GeneratedValue(strategy: 'CUSTOM')] + #[Groups(['food_order:latest'])] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] - #[Groups(['food_order:latest'])] + #[ORM\GeneratedValue(strategy: 'CUSTOM')] + #[ORM\Id] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; @@ -67,31 +67,6 @@ class FoodVendor $this->menuItems = new ArrayCollection; } - public function getId(): Ulid|null - { - return $this->id; - } - - public function getName(): string|null - { - return $this->name; - } - - public function setName(string $name): static - { - $this->name = $name; - - return $this; - } - - /** - * @return Collection - */ - public function getFoodOrders(): Collection - { - return $this->foodOrders; - } - public function addFoodOrder(FoodOrder $foodOrder): static { if (! $this->foodOrders->contains($foodOrder)) { @@ -102,16 +77,34 @@ class FoodVendor return $this; } - public function removeFoodOrder(FoodOrder $foodOrder): static + public function addMenuItem(MenuItem $menuItem): static { - // set the owning side to null (unless already changed) - if ($this->foodOrders->removeElement($foodOrder)) { - $foodOrder->setFoodVendor(null); + if (! $this->menuItems->contains($menuItem)) { + $this->menuItems->add($menuItem); + $menuItem->setFoodVendor($this); } return $this; } + public function getEmojis(): string|null + { + return $this->emojis; + } + + /** + * @return Collection + */ + public function getFoodOrders(): Collection + { + return $this->foodOrders; + } + + public function getId(): Ulid|null + { + return $this->id; + } + /** * @return Collection */ @@ -125,11 +118,26 @@ class FoodVendor ); } - public function addMenuItem(MenuItem $menuItem): static + public function getMenuLink(): string|null { - if (! $this->menuItems->contains($menuItem)) { - $this->menuItems->add($menuItem); - $menuItem->setFoodVendor($this); + return $this->menuLink; + } + + public function getName(): string|null + { + return $this->name; + } + + public function getPhone(): string|null + { + return $this->phone; + } + + public function removeFoodOrder(FoodOrder $foodOrder): static + { + // set the owning side to null (unless already changed) + if ($this->foodOrders->removeElement($foodOrder)) { + $foodOrder->setFoodVendor(null); } return $this; @@ -145,34 +153,6 @@ class FoodVendor return $this; } - public function getMenuLink(): string|null - { - return $this->menuLink; - } - - public function setMenuLink(string|null $menuLink): static - { - $this->menuLink = $menuLink; - - return $this; - } - - public function getPhone(): string|null - { - return $this->phone; - } - - public function setPhone(string|null $phone): static - { - $this->phone = $phone; - return $this; - } - - public function getEmojis(): string|null - { - return $this->emojis; - } - public function setEmojis(string|null $emojis): static { if ($emojis !== null && mb_strlen($emojis) > 30) { @@ -182,4 +162,24 @@ class FoodVendor $this->emojis = $emojis; return $this; } + + public function setMenuLink(string|null $menuLink): static + { + $this->menuLink = $menuLink; + + return $this; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } + + public function setPhone(string|null $phone): static + { + $this->phone = $phone; + return $this; + } } diff --git a/src/Entity/MenuItem.php b/src/Entity/MenuItem.php index 71021a5..21beed9 100644 --- a/src/Entity/MenuItem.php +++ b/src/Entity/MenuItem.php @@ -16,108 +16,36 @@ use Symfony\Component\Uid\Ulid; #[ORM\Entity(repositoryClass: MenuItemRepository::class)] class MenuItem { - #[ORM\Column(length: 255)] - private string|null $name = null; - - #[ORM\ManyToOne(inversedBy: 'menuItems')] - #[ORM\JoinColumn(nullable: false)] - private FoodVendor|null $foodVendor = null; - - #[ORM\Column(nullable: true)] - private DateTimeImmutable|null $deletedAt = null; - - #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'aliases')] - private self|null $aliasOf = null; - /** * @var Collection */ #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'aliasOf')] private Collection $aliases; + #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'aliases')] + private self|null $aliasOf = null; + + #[ORM\Column(nullable: true)] + private DateTimeImmutable|null $deletedAt = null; + + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne(inversedBy: 'menuItems')] + private FoodVendor|null $foodVendor = null; + + #[ORM\Column(length: 255)] + private string|null $name = null; + public function __construct( - #[ORM\Id] - #[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] + #[ORM\GeneratedValue(strategy: 'CUSTOM')] + #[ORM\Id] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; $this->aliases = new ArrayCollection; } - public function getId(): Ulid|null - { - return $this->id; - } - - public function getName(): string|null - { - return $this->name; - } - - public function setName(string $name): static - { - $this->name = $name; - - return $this; - } - - public function getFoodVendor(): FoodVendor|null - { - return $this->foodVendor; - } - - public function setFoodVendor(FoodVendor|null $foodVendor): static - { - $this->foodVendor = $foodVendor; - - return $this; - } - - public function isDeleted(): bool - { - return $this->getDeletedAt() instanceof DateTimeImmutable; - } - - public function delete(): static - { - $this->setDeletedAt(new DateTimeImmutable); - return $this; - } - - public function getDeletedAt(): DateTimeImmutable|null - { - return $this->deletedAt; - } - - public function setDeletedAt(DateTimeImmutable|null $deletedAt = new DateTimeImmutable): static - { - $this->deletedAt = $deletedAt; - - return $this; - } - - public function getAliasOf(): self|null - { - return $this->aliasOf; - } - - public function setAliasOf(self|null $aliasOf): static - { - $this->aliasOf = $aliasOf; - - return $this; - } - - /** - * @return Collection - */ - public function getAliases(): Collection - { - return $this->aliases; - } - public function addAlias(self $alias): static { if (! $this->aliases->contains($alias)) { @@ -128,6 +56,50 @@ class MenuItem return $this; } + public function delete(): static + { + $this->setDeletedAt(new DateTimeImmutable); + return $this; + } + + /** + * @return Collection + */ + public function getAliases(): Collection + { + return $this->aliases; + } + + public function getAliasOf(): self|null + { + return $this->aliasOf; + } + + public function getDeletedAt(): DateTimeImmutable|null + { + return $this->deletedAt; + } + + public function getFoodVendor(): FoodVendor|null + { + return $this->foodVendor; + } + + public function getId(): Ulid|null + { + return $this->id; + } + + public function getName(): string|null + { + return $this->name; + } + + public function isDeleted(): bool + { + return $this->getDeletedAt() instanceof DateTimeImmutable; + } + public function removeAlias(self $alias): static { // set the owning side to null (unless already changed) @@ -137,4 +109,32 @@ class MenuItem return $this; } + + public function setAliasOf(self|null $aliasOf): static + { + $this->aliasOf = $aliasOf; + + return $this; + } + + public function setDeletedAt(DateTimeImmutable|null $deletedAt = new DateTimeImmutable): static + { + $this->deletedAt = $deletedAt; + + return $this; + } + + public function setFoodVendor(FoodVendor|null $foodVendor): static + { + $this->foodVendor = $foodVendor; + + return $this; + } + + public function setName(string $name): static + { + $this->name = $name; + + return $this; + } } diff --git a/src/Entity/OrderItem.php b/src/Entity/OrderItem.php index a25bb07..5b2c045 100644 --- a/src/Entity/OrderItem.php +++ b/src/Entity/OrderItem.php @@ -14,62 +14,77 @@ use Symfony\Component\Uid\Ulid; #[ORM\Entity(repositoryClass: OrderItemRepository::class)] class OrderItem { - #[ORM\Column(length: 255)] #[Groups(['food_order:latest'])] - private string|null $name = null; - - #[ORM\Column(length: 255, nullable: true)] - #[Groups(['food_order:latest'])] - private string|null $extras = null; - - #[ORM\ManyToOne(inversedBy: 'orderItems')] - #[ORM\JoinColumn(nullable: true)] - private FoodOrder|null $foodOrder = null; - - #[ORM\ManyToOne] - #[ORM\JoinColumn(nullable: false)] - #[Groups(['food_order:latest'])] - private MenuItem|null $menuItem = null; - #[ORM\Column(length: 255, options: [ 'default' => 'nobody', ])] - #[Groups(['food_order:latest'])] private string|null $createdBy = 'nobody'; + #[Groups(['food_order:latest'])] + #[ORM\Column(length: 255, nullable: true)] + private string|null $extras = null; + + #[ORM\JoinColumn(nullable: true)] + #[ORM\ManyToOne(inversedBy: 'orderItems')] + private FoodOrder|null $foodOrder = null; + + #[Groups(['food_order:latest'])] + #[ORM\JoinColumn(nullable: false)] + #[ORM\ManyToOne] + private MenuItem|null $menuItem = null; + + #[Groups(['food_order:latest'])] + #[ORM\Column(length: 255)] + private string|null $name = null; + public function __construct( - #[ORM\Id] - #[ORM\GeneratedValue(strategy: 'CUSTOM')] + #[Groups(['food_order:latest'])] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] - #[Groups(['food_order:latest'])] + #[ORM\GeneratedValue(strategy: 'CUSTOM')] + #[ORM\Id] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; } + public function getCreatedBy(): string|null + { + return $this->createdBy; + } + + public function getExtras(): string|null + { + return $this->extras; + } + + public function getFoodOrder(): FoodOrder|null + { + return $this->foodOrder; + } + public function getId(): Ulid|null { return $this->id; } + public function getMenuItem(): MenuItem|null + { + return $this->menuItem; + } + public function getName(): string|null { return $this->name; } - public function setName(string $name): static + public function setCreatedBy(string $createdBy): static { - $this->name = $name; + $this->createdBy = $createdBy; return $this; } - public function getExtras(): string|null - { - return $this->extras; - } - public function setExtras(string|null $extras): static { $this->extras = $extras; @@ -77,11 +92,6 @@ class OrderItem return $this; } - public function getFoodOrder(): FoodOrder|null - { - return $this->foodOrder; - } - public function setFoodOrder(FoodOrder|null $foodOrder): static { $this->foodOrder = $foodOrder; @@ -89,11 +99,6 @@ class OrderItem return $this; } - public function getMenuItem(): MenuItem|null - { - return $this->menuItem; - } - public function setMenuItem(MenuItem|null $menuItem): static { $this->menuItem = $menuItem; @@ -102,14 +107,9 @@ class OrderItem return $this; } - public function getCreatedBy(): string|null + public function setName(string $name): static { - return $this->createdBy; - } - - public function setCreatedBy(string $createdBy): static - { - $this->createdBy = $createdBy; + $this->name = $name; return $this; } diff --git a/src/Repository/FoodOrderRepository.php b/src/Repository/FoodOrderRepository.php index a48d123..a781506 100644 --- a/src/Repository/FoodOrderRepository.php +++ b/src/Repository/FoodOrderRepository.php @@ -19,12 +19,6 @@ final class FoodOrderRepository extends ServiceEntityRepository parent::__construct($registry, FoodOrder::class); } - public function save(): void - { - $this->getEntityManager() - ->flush(); - } - /** * @return FoodOrder[] */ @@ -48,6 +42,15 @@ final class FoodOrderRepository extends ServiceEntityRepository ->getValues(); } + public function findLatestOrder(): FoodOrder|null + { + return $this->createQueryBuilder('alias') + ->orderBy('alias.id', 'DESC') + ->setMaxResults(1) + ->getQuery() + ->getOneOrNullResult(); + } + /** * @return FoodOrder[] */ @@ -63,12 +66,9 @@ final class FoodOrderRepository extends ServiceEntityRepository ->getResult(); } - public function findLatestOrder(): FoodOrder|null + public function save(): void { - return $this->createQueryBuilder('alias') - ->orderBy('alias.id', 'DESC') - ->setMaxResults(1) - ->getQuery() - ->getOneOrNullResult(); + $this->getEntityManager() + ->flush(); } } diff --git a/tests/DbWebTest.php b/tests/DbWebTest.php index 181dce1..6751c3d 100644 --- a/tests/DbWebTest.php +++ b/tests/DbWebTest.php @@ -18,10 +18,10 @@ use function str_contains; abstract class DbWebTest extends WebTestCase { protected KernelBrowser $client; - protected EntityManagerInterface $manager; - protected EntityRepository $repository; protected string $entityClass = ''; + protected EntityManagerInterface $manager; protected string $path = ''; + protected EntityRepository $repository; #[Override] protected function setUp(): void @@ -35,13 +35,6 @@ abstract class DbWebTest extends WebTestCase $schemaTool->updateSchema($metadata); } - protected function generateOldUlid(int $daysToSubtract = 10): Ulid - { - $date = (new DateTimeImmutable)->sub(new DateInterval('P' . $daysToSubtract . 'D')); - $ulidString = Ulid::generate($date); - return Ulid::fromString($ulidString); - } - protected function assertElementContainsCount(Crawler $crawler, string $element, int $count, string $text): void { $this->assertCount( @@ -53,6 +46,13 @@ abstract class DbWebTest extends WebTestCase ); } + protected function generateOldUlid(int $daysToSubtract = 10): Ulid + { + $date = (new DateTimeImmutable)->sub(new DateInterval('P' . $daysToSubtract . 'D')); + $ulidString = Ulid::generate($date); + return Ulid::fromString($ulidString); + } + protected function setEntityClass(string $entityClass): void { $this->entityClass = $entityClass; From 8ebf229d622520d2793e70242302458043961474 Mon Sep 17 00:00:00 2001 From: lubiana Date: Sun, 29 Jun 2025 19:34:59 +0200 Subject: [PATCH 2/2] bumpi --- composer.lock | 2320 ++++++++++++++++++++++++++++---------------- config/bundles.php | 6 +- symfony.lock | 4 +- 3 files changed, 1488 insertions(+), 842 deletions(-) diff --git a/composer.lock b/composer.lock index 85c6657..fd45297 100644 --- a/composer.lock +++ b/composer.lock @@ -7,174 +7,52 @@ "content-hash": "bc8674fb48687aeee3da991cd7c8d0ad", "packages": [ { - "name": "api-platform/core", - "version": "v4.1.16", + "name": "api-platform/doctrine-common", + "version": "v4.1.17", "source": { "type": "git", - "url": "https://github.com/api-platform/core.git", - "reference": "64ff50f9b7206e7ac324ea221537f753194889b3" + "url": "https://github.com/api-platform/doctrine-common.git", + "reference": "3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/64ff50f9b7206e7ac324ea221537f753194889b3", - "reference": "64ff50f9b7206e7ac324ea221537f753194889b3", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f", + "reference": "3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f", "shasum": "" }, "require": { - "doctrine/inflector": "^2.0", - "php": ">=8.2", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^3.1", - "symfony/http-foundation": "^6.4 || ^7.0", - "symfony/http-kernel": "^6.4 || ^7.0", - "symfony/property-access": "^6.4 || ^7.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/translation-contracts": "^3.3", - "symfony/type-info": "^7.2", - "symfony/web-link": "^6.4 || ^7.1", - "willdurand/negotiation": "^3.1" + "api-platform/metadata": "^4.1.11", + "api-platform/state": "^4.1.11", + "doctrine/collections": "^2.1", + "doctrine/common": "^3.2.2", + "doctrine/persistence": "^3.2", + "php": ">=8.2" }, "conflict": { - "doctrine/common": "<3.2.2", - "doctrine/dbal": "<2.10", - "doctrine/mongodb-odm": "<2.4", - "doctrine/orm": "<2.14.0", - "doctrine/persistence": "<1.3", - "phpspec/prophecy": "<1.15", - "phpunit/phpunit": "<9.5", - "symfony/framework-bundle": "6.4.6 || 7.0.6", - "symfony/var-exporter": "<6.1.1" - }, - "replace": { - "api-platform/doctrine-common": "self.version", - "api-platform/doctrine-odm": "self.version", - "api-platform/doctrine-orm": "self.version", - "api-platform/documentation": "self.version", - "api-platform/elasticsearch": "self.version", - "api-platform/graphql": "self.version", - "api-platform/http-cache": "self.version", - "api-platform/hydra": "self.version", - "api-platform/json-api": "self.version", - "api-platform/json-hal": "self.version", - "api-platform/json-schema": "self.version", - "api-platform/jsonld": "self.version", - "api-platform/laravel": "self.version", - "api-platform/metadata": "self.version", - "api-platform/openapi": "self.version", - "api-platform/parameter-validator": "self.version", - "api-platform/ramsey-uuid": "self.version", - "api-platform/serializer": "self.version", - "api-platform/state": "self.version", - "api-platform/symfony": "self.version", - "api-platform/validator": "self.version" + "doctrine/persistence": "<1.3" }, "require-dev": { - "behat/behat": "^3.11", - "behat/mink": "^1.9", - "doctrine/cache": "^1.11 || ^2.1", - "doctrine/common": "^3.2.2", - "doctrine/dbal": "^4.0", - "doctrine/doctrine-bundle": "^2.11", "doctrine/mongodb-odm": "^2.10", - "doctrine/mongodb-odm-bundle": "^5.0", "doctrine/orm": "^2.17 || ^3.0", - "elasticsearch/elasticsearch": "^7.17 || ^8.4 || ^9.0", - "friends-of-behat/mink-browserkit-driver": "^1.3.1", - "friends-of-behat/mink-extension": "^2.2", - "friends-of-behat/symfony-extension": "^2.1", - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "illuminate/config": "^11.0 || ^12.0", - "illuminate/contracts": "^11.0 || ^12.0", - "illuminate/database": "^11.0 || ^12.0", - "illuminate/http": "^11.0 || ^12.0", - "illuminate/pagination": "^11.0 || ^12.0", - "illuminate/routing": "^11.0 || ^12.0", - "illuminate/support": "^11.0 || ^12.0", - "jangregor/phpstan-prophecy": "^1.0", - "justinrainbow/json-schema": "^5.2.11", - "laravel/framework": "^11.0 || ^12.0", - "orchestra/testbench": "^9.1", "phpspec/prophecy-phpunit": "^2.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpdoc-parser": "^1.29 || ^2.0", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-doctrine": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "11.5.x-dev", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "ramsey/uuid": "^4.7", - "ramsey/uuid-doctrine": "^2.0", - "soyuka/contexts": "^3.3.10", - "soyuka/pmu": "^0.2.0", - "soyuka/stubs-mongodb": "^1.0", - "symfony/asset": "^6.4 || ^7.0", - "symfony/browser-kit": "^6.4 || ^7.0", - "symfony/cache": "^6.4 || ^7.0", - "symfony/config": "^6.4 || ^7.0", - "symfony/console": "^6.4 || ^7.0", - "symfony/css-selector": "^6.4 || ^7.0", - "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/doctrine-bridge": "^6.4.2 || ^7.0.2", - "symfony/dom-crawler": "^6.4 || ^7.0", - "symfony/error-handler": "^6.4 || ^7.0", - "symfony/event-dispatcher": "^6.4 || ^7.0", - "symfony/expression-language": "^6.4 || ^7.0", - "symfony/finder": "^6.4 || ^7.0", - "symfony/form": "^6.4 || ^7.0", - "symfony/framework-bundle": "^6.4 || ^7.0", - "symfony/http-client": "^6.4 || ^7.0", - "symfony/intl": "^6.4 || ^7.0", - "symfony/maker-bundle": "^1.24", - "symfony/mercure-bundle": "*", - "symfony/messenger": "^6.4 || ^7.0", - "symfony/routing": "^6.4 || ^7.0", - "symfony/security-bundle": "^6.4 || ^7.0", - "symfony/security-core": "^6.4 || ^7.0", - "symfony/stopwatch": "^6.4 || ^7.0", - "symfony/string": "^6.4 || ^7.0", - "symfony/twig-bundle": "^6.4 || ^7.0", - "symfony/uid": "^6.4 || ^7.0", - "symfony/validator": "^6.4 || ^7.0", - "symfony/web-profiler-bundle": "^6.4 || ^7.0", - "symfony/yaml": "^6.4 || ^7.0", - "twig/twig": "^1.42.3 || ^2.12 || ^3.0", - "webonyx/graphql-php": "^15.0" + "phpunit/phpunit": "11.5.x-dev" }, "suggest": { - "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", - "elasticsearch/elasticsearch": "To support Elasticsearch.", - "ocramius/package-versions": "To display the API Platform's version in the debug bar.", - "phpstan/phpdoc-parser": "To support extracting metadata from PHPDoc.", - "psr/cache-implementation": "To use metadata caching.", - "ramsey/uuid": "To support Ramsey's UUID identifiers.", - "symfony/cache": "To have metadata caching when using Symfony integration.", - "symfony/config": "To load XML configuration files.", - "symfony/expression-language": "To use authorization features.", - "symfony/http-client": "To use the HTTP cache invalidation system.", - "symfony/messenger": "To support messenger integration.", - "symfony/security": "To use authorization features.", - "symfony/twig-bundle": "To use the Swagger UI integration.", - "symfony/uid": "To support Symfony UUID/ULID identifiers.", - "symfony/web-profiler-bundle": "To use the data collector.", - "webonyx/graphql-php": "To support GraphQL." + "api-platform/graphql": "For GraphQl mercure subscriptions.", + "api-platform/http-cache": "For HTTP cache invalidation.", + "phpstan/phpdoc-parser": "For PHP documentation support.", + "symfony/config": "For XML resource configuration.", + "symfony/mercure-bundle": "For mercure updates publisher.", + "symfony/yaml": "For YAML resource configuration." }, "type": "library", "extra": { - "pmu": { - "projects": [ - "./src/*/composer.json", - "src/Doctrine/*/composer.json" - ] - }, "thanks": { "url": "https://github.com/api-platform/api-platform", "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.1" + "require": "^6.4 || ^7.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -183,11 +61,8 @@ } }, "autoload": { - "files": [ - "src/JsonLd/HydraContext.php" - ], "psr-4": { - "ApiPlatform\\": "src/" + "ApiPlatform\\Doctrine\\Common\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -199,9 +74,966 @@ "name": "Kévin Dunglas", "email": "kevin@dunglas.fr", "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" } ], - "description": "Build a fully-featured hypermedia or GraphQL API in minutes!", + "description": "Common files used by api-platform/doctrine-orm and api-platform/doctrine-odm", + "homepage": "https://api-platform.com", + "keywords": [ + "doctrine", + "graphql", + "odm", + "orm", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/doctrine-common/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/doctrine-orm", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/doctrine-orm.git", + "reference": "61a199da6f6014dba2da43ea1a66b2c9dda27263" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/61a199da6f6014dba2da43ea1a66b2c9dda27263", + "reference": "61a199da6f6014dba2da43ea1a66b2c9dda27263", + "shasum": "" + }, + "require": { + "api-platform/doctrine-common": "^4.1.11", + "api-platform/metadata": "^4.1.11", + "api-platform/state": "^4.1.11", + "doctrine/orm": "^2.17 || ^3.0", + "php": ">=8.2", + "symfony/property-info": "^6.4 || ^7.1" + }, + "require-dev": { + "doctrine/doctrine-bundle": "^2.11", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev", + "ramsey/uuid": "^4.7", + "ramsey/uuid-doctrine": "^2.0", + "symfony/cache": "^6.4 || ^7.0", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/uid": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Doctrine\\Orm\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "Doctrine ORM bridge", + "homepage": "https://api-platform.com", + "keywords": [ + "api", + "doctrine", + "graphql", + "orm", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/doctrine-orm/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/documentation", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/documentation.git", + "reference": "1a0ac988d659008ef8667d05bc9978863026bab8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/1a0ac988d659008ef8667d05bc9978863026bab8", + "reference": "1a0ac988d659008ef8667d05bc9978863026bab8", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "11.5.x-dev" + }, + "type": "project", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Documentation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Platform documentation controller.", + "support": { + "source": "https://github.com/api-platform/documentation/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/http-cache", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/http-cache.git", + "reference": "f65f092c90311a87ebb6dda87db3ca08b57c10d6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/f65f092c90311a87ebb6dda87db3ca08b57c10d6", + "reference": "f65f092c90311a87ebb6dda87db3ca08b57c10d6", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "api-platform/state": "^4.1.11", + "php": ">=8.2", + "symfony/http-foundation": "^6.4 || ^7.0" + }, + "require-dev": { + "guzzlehttp/guzzle": "^6.0 || ^7.0", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev", + "symfony/dependency-injection": "^6.4 || ^7.0", + "symfony/http-client": "^6.4 || ^7.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\HttpCache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/comunnity/contributors" + } + ], + "description": "API Platform HttpCache component", + "homepage": "https://api-platform.com", + "keywords": [ + "api", + "cache", + "http", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/http-cache/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/hydra", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/hydra.git", + "reference": "8a521a1d4a7d377dd3a7cf6d51520a8e2762d9f0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/8a521a1d4a7d377dd3a7cf6d51520a8e2762d9f0", + "reference": "8a521a1d4a7d377dd3a7cf6d51520a8e2762d9f0", + "shasum": "" + }, + "require": { + "api-platform/documentation": "^4.1.11", + "api-platform/json-schema": "^4.1.11", + "api-platform/jsonld": "^4.1.11", + "api-platform/metadata": "^4.1.11", + "api-platform/serializer": "^4.1.11", + "api-platform/state": "^4.1.11", + "php": ">=8.2", + "symfony/web-link": "^6.4 || ^7.1" + }, + "require-dev": { + "api-platform/doctrine-common": "^4.1", + "api-platform/doctrine-odm": "^4.1", + "api-platform/doctrine-orm": "^4.1", + "phpspec/prophecy": "^1.19", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Hydra\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Hydra support", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "jsonapi", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/hydra/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/json-schema", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/json-schema.git", + "reference": "1081f99a02ef35c42779b0dd9f532ca0bddf2781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/1081f99a02ef35c42779b0dd9f532ca0bddf2781", + "reference": "1081f99a02ef35c42779b0dd9f532ca0bddf2781", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "php": ">=8.2", + "symfony/console": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.1", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/uid": "^6.4 || ^7.0" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\JsonSchema\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "Generate a JSON Schema from a PHP class", + "homepage": "https://api-platform.com", + "keywords": [ + "JSON Schema", + "api", + "json", + "openapi", + "rest", + "swagger" + ], + "support": { + "source": "https://github.com/api-platform/json-schema/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" + }, + { + "name": "api-platform/jsonld", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/jsonld.git", + "reference": "f9450e0ed2218a3f7fe32041172135514591c74d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/f9450e0ed2218a3f7fe32041172135514591c74d", + "reference": "f9450e0ed2218a3f7fe32041172135514591c74d", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "api-platform/serializer": "^4.1.11", + "api-platform/state": "^4.1.11", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "11.5.x-dev" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "files": [ + "./HydraContext.php" + ], + "psr-4": { + "ApiPlatform\\JsonLd\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API JSON-LD support", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/jsonld/tree/v4.1.17" + }, + "time": "2025-06-19T10:12:21+00:00" + }, + { + "name": "api-platform/metadata", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/metadata.git", + "reference": "fd11cd8e38d859357a010bb7c31dc5116f1908d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/fd11cd8e38d859357a010bb7c31dc5116f1908d7", + "reference": "fd11cd8e38d859357a010bb7c31dc5116f1908d7", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^2.0", + "php": ">=8.2", + "psr/cache": "^1.0 || ^2.0 || ^3.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", + "symfony/property-info": "^6.4 || ^7.1", + "symfony/string": "^6.4 || ^7.0", + "symfony/type-info": "^7.2" + }, + "require-dev": { + "api-platform/json-schema": "^4.1.11", + "api-platform/openapi": "^4.1.11", + "api-platform/state": "^4.1.11", + "phpspec/prophecy-phpunit": "^2.2", + "phpstan/phpdoc-parser": "^1.29 || ^2.0", + "phpunit/phpunit": "11.5.x-dev", + "symfony/config": "^6.4 || ^7.0", + "symfony/routing": "^6.4 || ^7.0", + "symfony/var-dumper": "^6.4 || ^7.0", + "symfony/web-link": "^6.4 || ^7.1", + "symfony/yaml": "^6.4 || ^7.0" + }, + "suggest": { + "phpstan/phpdoc-parser": "For PHP documentation support.", + "symfony/config": "For XML resource configuration.", + "symfony/yaml": "For YAML resource configuration." + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Metadata\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Resource-oriented metadata attributes and factories", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "hal", + "jsonapi", + "openapi", + "rest", + "swagger" + ], + "support": { + "source": "https://github.com/api-platform/metadata/tree/v4.1.17" + }, + "time": "2025-06-19T08:33:15+00:00" + }, + { + "name": "api-platform/openapi", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/openapi.git", + "reference": "d60890b47f0a75912cec4ea44a98d181145ae6f3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/d60890b47f0a75912cec4ea44a98d181145ae6f3", + "reference": "d60890b47f0a75912cec4ea44a98d181145ae6f3", + "shasum": "" + }, + "require": { + "api-platform/json-schema": "^4.1.11", + "api-platform/metadata": "^4.1.11", + "api-platform/state": "^4.1.11", + "php": ">=8.2", + "symfony/console": "^6.4 || ^7.0", + "symfony/filesystem": "^6.4 || ^7.0", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0" + }, + "require-dev": { + "api-platform/doctrine-common": "^4.1", + "api-platform/doctrine-odm": "^4.1", + "api-platform/doctrine-orm": "^4.1", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\OpenApi\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "Models to build and serialize an OpenAPI specification.", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "hal", + "jsonapi", + "openapi", + "rest", + "swagger" + ], + "support": { + "source": "https://github.com/api-platform/openapi/tree/v4.1.17" + }, + "time": "2025-06-19T08:57:27+00:00" + }, + { + "name": "api-platform/serializer", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/serializer.git", + "reference": "804a421fa27f8c21270937c55ee3fb6d1855697c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/804a421fa27f8c21270937c55ee3fb6d1855697c", + "reference": "804a421fa27f8c21270937c55ee3fb6d1855697c", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "api-platform/state": "^4.1.11", + "php": ">=8.2", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.1", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0" + }, + "require-dev": { + "api-platform/doctrine-common": "^4.1", + "api-platform/doctrine-odm": "^4.1", + "api-platform/doctrine-orm": "^4.1", + "api-platform/json-schema": "^4.1", + "api-platform/openapi": "^4.1", + "doctrine/collections": "^2.1", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev", + "symfony/mercure-bundle": "*", + "symfony/var-dumper": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0" + }, + "suggest": { + "api-platform/doctrine-odm": "To support Doctrine MongoDB ODM state options.", + "api-platform/doctrine-orm": "To support Doctrine ORM state options." + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Serializer\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Platform core Serializer", + "homepage": "https://api-platform.com", + "keywords": [ + "api", + "graphql", + "rest", + "serializer" + ], + "support": { + "source": "https://github.com/api-platform/serializer/tree/v4.1.17" + }, + "time": "2025-06-19T10:12:21+00:00" + }, + { + "name": "api-platform/state", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/state.git", + "reference": "b6c9510a974bda5a89af43266b7a7d829e0de549" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/state/zipball/b6c9510a974bda5a89af43266b7a7d829e0de549", + "reference": "b6c9510a974bda5a89af43266b7a7d829e0de549", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "php": ">=8.2", + "psr/container": "^1.0 || ^2.0", + "symfony/contracts": "^3.0", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0" + }, + "require-dev": { + "api-platform/validator": "^4.1", + "phpunit/phpunit": "11.5.x-dev", + "symfony/http-foundation": "^6.4 || ^7.0", + "symfony/web-link": "^6.4 || ^7.1", + "willdurand/negotiation": "^3.1" + }, + "suggest": { + "api-platform/serializer": "To use API Platform serializer.", + "api-platform/validator": "To use API Platform validation.", + "symfony/http-foundation": "To use our HTTP providers and processor.", + "symfony/web-link": "To support adding web links to the response headers.", + "willdurand/negotiation": "To use the API Platform content negoatiation provider." + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\State\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Platform State component ", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "hal", + "jsonapi", + "openapi", + "rest", + "swagger" + ], + "support": { + "source": "https://github.com/api-platform/state/tree/v4.1.17" + }, + "time": "2025-06-13T12:04:07+00:00" + }, + { + "name": "api-platform/symfony", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/symfony.git", + "reference": "89a5e6116ac1ecd5ef30017decedf5cb66b5b32c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/89a5e6116ac1ecd5ef30017decedf5cb66b5b32c", + "reference": "89a5e6116ac1ecd5ef30017decedf5cb66b5b32c", + "shasum": "" + }, + "require": { + "api-platform/documentation": "^4.1.11", + "api-platform/http-cache": "^4.1.11", + "api-platform/hydra": "^4.1.11", + "api-platform/json-schema": "^4.1.11", + "api-platform/jsonld": "^4.1.11", + "api-platform/metadata": "^4.1.11", + "api-platform/openapi": "^4.1.11", + "api-platform/serializer": "^4.1.11", + "api-platform/state": "^4.1.11", + "api-platform/validator": "^4.1.11", + "php": ">=8.2", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.1", + "symfony/security-core": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0", + "willdurand/negotiation": "^3.1" + }, + "require-dev": { + "api-platform/doctrine-common": "^4.1", + "api-platform/doctrine-odm": "^4.1", + "api-platform/doctrine-orm": "^4.1", + "api-platform/elasticsearch": "^4.1", + "api-platform/graphql": "^4.1", + "api-platform/parameter-validator": "^3.1", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev", + "symfony/expression-language": "^6.4 || ^7.0", + "symfony/mercure-bundle": "*", + "symfony/routing": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "webonyx/graphql-php": "^15.0" + }, + "suggest": { + "api-platform/doctrine-odm": "To support MongoDB. Only versions 4.0 and later are supported.", + "api-platform/doctrine-orm": "To support Doctrine ORM.", + "api-platform/elasticsearch": "To support Elasticsearch.", + "api-platform/graphql": "To support GraphQL.", + "api-platform/ramsey-uuid": "To support Ramsey's UUID identifiers.", + "ocramius/package-versions": "To display the API Platform's version in the debug bar.", + "phpstan/phpdoc-parser": "To support extracting metadata from PHPDoc.", + "psr/cache-implementation": "To use metadata caching.", + "symfony/cache": "To have metadata caching when using Symfony integration.", + "symfony/config": "To load XML configuration files.", + "symfony/expression-language": "To use authorization and mercure advanced features.", + "symfony/http-client": "To use the HTTP cache invalidation system.", + "symfony/mercure-bundle": "To support mercure integration.", + "symfony/messenger": "To support messenger integration and asynchronous Mercure updates.", + "symfony/security": "To use authorization features.", + "symfony/twig-bundle": "To use the Swagger UI integration.", + "symfony/uid": "To support Symfony UUID/ULID identifiers.", + "symfony/web-profiler-bundle": "To use the data collector." + }, + "type": "symfony-bundle", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Symfony\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "Symfony API Platform integration", "homepage": "https://api-platform.com", "keywords": [ "Hydra", @@ -210,17 +1042,90 @@ "graphql", "hal", "jsonapi", - "laravel", "openapi", "rest", "swagger", "symfony" ], "support": { - "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v4.1.16" + "source": "https://github.com/api-platform/symfony/tree/v4.1.17" }, - "time": "2025-06-13T13:00:13+00:00" + "time": "2025-06-13T12:57:40+00:00" + }, + { + "name": "api-platform/validator", + "version": "v4.1.17", + "source": { + "type": "git", + "url": "https://github.com/api-platform/validator.git", + "reference": "0f25a9a2a4c75723a2f790177f0c6d83433b575d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/validator/zipball/0f25a9a2a4c75723a2f790177f0c6d83433b575d", + "reference": "0f25a9a2a4c75723a2f790177f0c6d83433b575d", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1.11", + "php": ">=8.2", + "symfony/type-info": "^7.2", + "symfony/web-link": "^6.4 || ^7.1" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "11.5.x-dev", + "symfony/http-kernel": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-4.1": "4.1.x-dev", + "dev-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Validator\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API Platform validator component", + "homepage": "https://api-platform.com", + "keywords": [ + "api", + "graphql", + "rest", + "validator" + ], + "support": { + "source": "https://github.com/api-platform/validator/tree/v4.1.17" + }, + "time": "2025-06-06T14:56:47+00:00" }, { "name": "composer/semver", @@ -390,17 +1295,108 @@ "time": "2025-03-22T10:17:19+00:00" }, { - "name": "doctrine/dbal", - "version": "4.2.3", + "name": "doctrine/common", + "version": "3.5.0", "source": { "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e" + "url": "https://github.com/doctrine/common.git", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e", + "url": "https://api.github.com/repos/doctrine/common/zipball/d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^2.0 || ^3.0 || ^4.0", + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9.0 || ^10.0", + "doctrine/collections": "^1", + "phpstan/phpstan": "^1.4.1", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5.20 || ^8.5 || ^9.0", + "squizlabs/php_codesniffer": "^3.0", + "symfony/phpunit-bridge": "^6.1", + "vimeo/psalm": "^4.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com" + } + ], + "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, proxies and much more.", + "homepage": "https://www.doctrine-project.org/projects/common.html", + "keywords": [ + "common", + "doctrine", + "php" + ], + "support": { + "issues": "https://github.com/doctrine/common/issues", + "source": "https://github.com/doctrine/common/tree/3.5.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcommon", + "type": "tidelift" + } + ], + "time": "2025-01-01T22:12:03+00:00" + }, + { + "name": "doctrine/dbal", + "version": "4.2.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/dbal.git", + "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/b37d160498ea91a2382a2ebe825c4ea6254fc0ec", + "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec", "shasum": "" }, "require": { @@ -410,15 +1406,15 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/coding-standard": "13.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.1", - "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan": "2.1.17", + "phpstan/phpstan-phpunit": "2.0.6", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "10.5.39", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", + "phpunit/phpunit": "10.5.46", + "slevomat/coding-standard": "8.16.2", + "squizlabs/php_codesniffer": "3.13.1", "symfony/cache": "^6.3.8|^7.0", "symfony/console": "^5.4|^6.3|^7.0" }, @@ -477,7 +1473,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.3" + "source": "https://github.com/doctrine/dbal/tree/4.2.4" }, "funding": [ { @@ -493,7 +1489,7 @@ "type": "tidelift" } ], - "time": "2025-03-07T18:29:05+00:00" + "time": "2025-06-15T23:15:01+00:00" }, { "name": "doctrine/deprecations", @@ -545,16 +1541,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.14.1", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4" + "reference": "d88294521a1bca943240adca65fa19ca8a7288c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0a118222ab21ba05bd9f17fbaa6a3800865274f4", - "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d88294521a1bca943240adca65fa19ca8a7288c6", + "reference": "d88294521a1bca943240adca65fa19ca8a7288c6", "shasum": "" }, "require": { @@ -647,7 +1643,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.14.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.0" }, "funding": [ { @@ -663,7 +1659,7 @@ "type": "tidelift" } ], - "time": "2025-06-09T20:22:28+00:00" + "time": "2025-06-16T19:53:58+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -1081,16 +2077,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.0", + "version": "3.9.1", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" + "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/0f1e0c960ac29866d648a4f50142a74fe1cb6999", + "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999", "shasum": "" }, "require": { @@ -1164,7 +2160,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.0" + "source": "https://github.com/doctrine/migrations/tree/3.9.1" }, "funding": [ { @@ -1180,20 +2176,20 @@ "type": "tidelift" } ], - "time": "2025-03-26T06:48:45+00:00" + "time": "2025-06-27T07:19:23+00:00" }, { "name": "doctrine/orm", - "version": "3.4.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8" + "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/4664373bd0668d71b40cc368b950de95e1dba2f8", - "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ef607f26c2965fe460c55733cc7c031fb7e1f2fa", + "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa", "shasum": "" }, "require": { @@ -1268,27 +2264,27 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.4.0" + "source": "https://github.com/doctrine/orm/tree/3.4.3" }, - "time": "2025-06-14T11:47:14+00:00" + "time": "2025-06-27T12:14:15+00:00" }, { "name": "doctrine/persistence", - "version": "4.0.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa" + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", "shasum": "" }, "require": { "doctrine/event-manager": "^1 || ^2", - "php": "^8.1", + "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { @@ -1296,10 +2292,11 @@ }, "require-dev": { "doctrine/coding-standard": "^12", + "doctrine/common": "^3.0", "phpstan/phpstan": "1.12.7", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^9.6", + "phpunit/phpunit": "^8.5.38 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", @@ -1349,7 +2346,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.0.0" + "source": "https://github.com/doctrine/persistence/tree/3.4.0" }, "funding": [ { @@ -1365,7 +2362,7 @@ "type": "tidelift" } ], - "time": "2024-11-01T21:49:07+00:00" + "time": "2024-10-30T19:48:12+00:00" }, { "name": "doctrine/sql-formatter", @@ -2266,16 +3263,16 @@ }, { "name": "symfony/cache", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "c4b217b578c11ec764867aa0c73e602c602965de" + "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/c4b217b578c11ec764867aa0c73e602c602965de", - "reference": "c4b217b578c11ec764867aa0c73e602c602965de", + "url": "https://api.github.com/repos/symfony/cache/zipball/a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e", + "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e", "shasum": "" }, "require": { @@ -2344,7 +3341,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.0" + "source": "https://github.com/symfony/cache/tree/v7.3.1" }, "funding": [ { @@ -2360,83 +3357,7 @@ "type": "tidelift" } ], - "time": "2025-05-06T19:00:13+00:00" - }, - { - "name": "symfony/cache-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/cache-contracts.git", - "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", - "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/cache": "^3.0" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Cache\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to caching", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-03-13T15:25:07+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/clock", @@ -2589,16 +3510,16 @@ }, { "name": "symfony/console", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44" + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44", + "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", "shasum": "" }, "require": { @@ -2663,7 +3584,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.0" + "source": "https://github.com/symfony/console/tree/v7.3.1" }, "funding": [ { @@ -2679,20 +3600,115 @@ "type": "tidelift" } ], - "time": "2025-05-24T10:34:04+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { - "name": "symfony/dependency-injection", - "version": "v7.3.0", + "name": "symfony/contracts", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732" + "url": "https://github.com/symfony/contracts.git", + "reference": "6e489617c52619f6a4f92986dfd19eb52d83de1f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", - "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", + "url": "https://api.github.com/repos/symfony/contracts/zipball/6e489617c52619f6a4f92986dfd19eb52d83de1f", + "reference": "6e489617c52619f6a4f92986dfd19eb52d83de1f", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/cache": "^3.0", + "psr/container": "^1.1|^2.0", + "psr/event-dispatcher": "^1.0" + }, + "conflict": { + "ext-psr": "<1.1|>=2" + }, + "replace": { + "symfony/cache-contracts": "self.version", + "symfony/deprecation-contracts": "self.version", + "symfony/event-dispatcher-contracts": "self.version", + "symfony/http-client-contracts": "self.version", + "symfony/service-contracts": "self.version", + "symfony/translation-contracts": "self.version" + }, + "require-dev": { + "symfony/polyfill-intl-idn": "^1.10" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "Deprecation/function.php" + ], + "psr-4": { + "Symfony\\Contracts\\": "" + }, + "exclude-from-classmap": [ + "**/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A set of abstractions extracted out of the Symfony components", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "dev", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-05-01T12:12:53+00:00" + }, + { + "name": "symfony/dependency-injection", + "version": "v7.3.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8656c4848b48784c4bb8c4ae50d2b43f832cead8", + "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8", "shasum": "" }, "require": { @@ -2743,7 +3759,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/v7.3.0" + "source": "https://github.com/symfony/dependency-injection/tree/v7.3.1" }, "funding": [ { @@ -2759,87 +3775,20 @@ "type": "tidelift" } ], - "time": "2025-05-19T13:28:56+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-06-24T04:04:43+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19" + "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/1df0cb5ce77ddfa0bdbca410009e3822567a6a19", - "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/6c0acb248c46452ae2c15752dc71e72f3335403f", + "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f", "shasum": "" }, "require": { @@ -2919,7 +3868,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.1" }, "funding": [ { @@ -2935,7 +3884,7 @@ "type": "tidelift" } ], - "time": "2025-05-25T10:32:38+00:00" + "time": "2025-06-26T13:02:59+00:00" }, { "name": "symfony/dotenv", @@ -3013,16 +3962,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83" + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235", + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235", "shasum": "" }, "require": { @@ -3070,7 +4019,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/v7.3.0" + "source": "https://github.com/symfony/error-handler/tree/v7.3.1" }, "funding": [ { @@ -3086,7 +4035,7 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-06-13T07:48:40+00:00" }, { "name": "symfony/event-dispatcher", @@ -3168,82 +4117,6 @@ ], "time": "2025-04-22T09:11:45+00:00" }, - { - "name": "symfony/event-dispatcher-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/event-dispatcher": "^1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\EventDispatcher\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to dispatching event", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, { "name": "symfony/expression-language", "version": "v7.3.0", @@ -3508,16 +4381,16 @@ }, { "name": "symfony/form", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409" + "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/9ee0a686d9256b8f780a87b5ff78d4ddee025409", - "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409", + "url": "https://api.github.com/repos/symfony/form/zipball/e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a", + "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a", "shasum": "" }, "require": { @@ -3585,7 +4458,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.0" + "source": "https://github.com/symfony/form/tree/v7.3.1" }, "funding": [ { @@ -3601,20 +4474,20 @@ "type": "tidelift" } ], - "time": "2025-05-04T12:58:53+00:00" + "time": "2025-06-13T07:48:40+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6" + "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/030646f55fe18501a43edab22a8ad250d8ec42a6", - "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/91905f22f26aa350a33b3b9690bdf94976b0d0ab", + "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab", "shasum": "" }, "require": { @@ -3739,7 +4612,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/v7.3.0" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.1" }, "funding": [ { @@ -3755,20 +4628,20 @@ "type": "tidelift" } ], - "time": "2025-05-28T06:56:42+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9" + "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/57e4fb86314015a695a750ace358d07a7e37b8a9", - "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9", + "url": "https://api.github.com/repos/symfony/http-client/zipball/4403d87a2c16f33345dca93407a8714ee8c05a64", + "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64", "shasum": "" }, "require": { @@ -3780,6 +4653,7 @@ }, "conflict": { "amphp/amp": "<2.5", + "amphp/socket": "<1.1", "php-http/discovery": "<1.15", "symfony/http-foundation": "<6.4" }, @@ -3792,7 +4666,6 @@ "require-dev": { "amphp/http-client": "^4.2.1|^5.0", "amphp/http-tunnel": "^1.0|^2.0", - "amphp/socket": "^1.1", "guzzlehttp/promises": "^1.4|^2.0", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", @@ -3834,7 +4707,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.0" + "source": "https://github.com/symfony/http-client/tree/v7.3.1" }, "funding": [ { @@ -3850,98 +4723,20 @@ "type": "tidelift" } ], - "time": "2025-05-02T08:23:16+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "75d7043853a42837e68111812f4d964b01e5101c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", - "reference": "75d7043853a42837e68111812f4d964b01e5101c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-29T11:18:49+00:00" + "time": "2025-06-28T07:58:39+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "4236baf01609667d53b20371486228231eb135fd" + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd", - "reference": "4236baf01609667d53b20371486228231eb135fd", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9", + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9", "shasum": "" }, "require": { @@ -3991,7 +4786,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.1" }, "funding": [ { @@ -4007,20 +4802,20 @@ "type": "tidelift" } ], - "time": "2025-05-12T14:48:23+00:00" + "time": "2025-06-23T15:07:14+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f" + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831", + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831", "shasum": "" }, "require": { @@ -4105,7 +4900,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/v7.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.1" }, "funding": [ { @@ -4121,7 +4916,7 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:47:32+00:00" + "time": "2025-06-28T08:24:55+00:00" }, { "name": "symfony/monolog-bridge", @@ -4826,16 +5621,16 @@ }, { "name": "symfony/property-access", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b" + "reference": "518d15c8cca726ebe665dcd7154074584cf862e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3bcf43665d6aff90547b005348e1e351f4e2174b", - "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b", + "url": "https://api.github.com/repos/symfony/property-access/zipball/518d15c8cca726ebe665dcd7154074584cf862e8", + "reference": "518d15c8cca726ebe665dcd7154074584cf862e8", "shasum": "" }, "require": { @@ -4882,7 +5677,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.0" + "source": "https://github.com/symfony/property-access/tree/v7.3.1" }, "funding": [ { @@ -4898,27 +5693,27 @@ "type": "tidelift" } ], - "time": "2025-05-10T11:59:09+00:00" + "time": "2025-06-24T04:04:43+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "200d230d8553610ada73ac557501dc4609aad31f" + "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/200d230d8553610ada73ac557501dc4609aad31f", - "reference": "200d230d8553610ada73ac557501dc4609aad31f", + "url": "https://api.github.com/repos/symfony/property-info/zipball/90586acbf2a6dd13bee4f09f09111c8bd4773970", + "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0", - "symfony/type-info": "~7.1.9|^7.2.2" + "symfony/type-info": "~7.2.8|^7.3.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -4968,7 +5763,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.0" + "source": "https://github.com/symfony/property-info/tree/v7.3.1" }, "funding": [ { @@ -4984,7 +5779,7 @@ "type": "tidelift" } ], - "time": "2025-04-04T13:12:05+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/routing", @@ -5069,16 +5864,16 @@ }, { "name": "symfony/runtime", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a" + "reference": "9516056d432f8acdac9458eb41b80097da7a05c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/fda552ee63dce9f3365f9c397efe7a80c8abac0a", - "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a", + "url": "https://api.github.com/repos/symfony/runtime/zipball/9516056d432f8acdac9458eb41b80097da7a05c9", + "reference": "9516056d432f8acdac9458eb41b80097da7a05c9", "shasum": "" }, "require": { @@ -5128,7 +5923,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.0" + "source": "https://github.com/symfony/runtime/tree/v7.3.1" }, "funding": [ { @@ -5144,20 +5939,20 @@ "type": "tidelift" } ], - "time": "2025-04-06T16:01:50+00:00" + "time": "2025-06-13T07:48:40+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb" + "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/61e74333f9ee109aefbd07eeb148d42c88faf6bb", - "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/428a281fd66c8358adc2259c8578e6d81fbb7079", + "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079", "shasum": "" }, "require": { @@ -5234,7 +6029,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/v7.3.0" + "source": "https://github.com/symfony/security-bundle/tree/v7.3.1" }, "funding": [ { @@ -5250,20 +6045,20 @@ "type": "tidelift" } ], - "time": "2025-05-15T13:29:14+00:00" + "time": "2025-06-24T04:04:43+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb" + "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", - "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/fafab1003a31e51506e1a0a83e81c072211d81ba", + "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba", "shasum": "" }, "require": { @@ -5321,7 +6116,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.0" + "source": "https://github.com/symfony/security-core/tree/v7.3.1" }, "funding": [ { @@ -5337,7 +6132,7 @@ "type": "tidelift" } ], - "time": "2025-05-26T10:15:06+00:00" + "time": "2025-06-23T07:28:50+00:00" }, { "name": "symfony/security-csrf", @@ -5411,16 +6206,16 @@ }, { "name": "symfony/security-http", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "8658634cc002096210c6227ec87a300dc647f88f" + "reference": "b7182ed0fd2359297f78ff6d407265168255ea84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/8658634cc002096210c6227ec87a300dc647f88f", - "reference": "8658634cc002096210c6227ec87a300dc647f88f", + "url": "https://api.github.com/repos/symfony/security-http/zipball/b7182ed0fd2359297f78ff6d407265168255ea84", + "reference": "b7182ed0fd2359297f78ff6d407265168255ea84", "shasum": "" }, "require": { @@ -5479,7 +6274,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.0" + "source": "https://github.com/symfony/security-http/tree/v7.3.1" }, "funding": [ { @@ -5495,20 +6290,20 @@ "type": "tidelift" } ], - "time": "2025-05-26T10:15:06+00:00" + "time": "2025-06-24T04:04:43+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb" + "reference": "feaf837cedbbc8287986602223175d3fd639922d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/2d86f81b1c506d7e1578789f93280dab4b8411bb", - "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb", + "url": "https://api.github.com/repos/symfony/serializer/zipball/feaf837cedbbc8287986602223175d3fd639922d", + "reference": "feaf837cedbbc8287986602223175d3fd639922d", "shasum": "" }, "require": { @@ -5577,7 +6372,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/v7.3.0" + "source": "https://github.com/symfony/serializer/tree/v7.3.1" }, "funding": [ { @@ -5593,90 +6388,7 @@ "type": "tidelift" } ], - "time": "2025-05-12T14:48:23+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/stopwatch", @@ -5827,84 +6539,6 @@ ], "time": "2025-04-20T20:19:01+00:00" }, - { - "name": "symfony/translation-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/translation-contracts.git", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to translation", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-27T08:32:26+00:00" - }, { "name": "symfony/twig-bridge", "version": "v7.3.0", @@ -6018,16 +6652,16 @@ }, { "name": "symfony/twig-bundle", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b" + "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/0ace7d92b92437a5ad59fad457af7dc2475db89b", - "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/bc23c11d9716fc2261ee26a32e654b0e8b1b1896", + "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896", "shasum": "" }, "require": { @@ -6082,7 +6716,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/v7.3.0" + "source": "https://github.com/symfony/twig-bundle/tree/v7.3.1" }, "funding": [ { @@ -6098,20 +6732,20 @@ "type": "tidelift" } ], - "time": "2025-05-14T11:51:37+00:00" + "time": "2025-06-24T04:04:43+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786" + "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/bc9af22e25796d98078f69c0749ab3a9d3454786", - "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786", + "url": "https://api.github.com/repos/symfony/type-info/zipball/5fa6e25e4195e73ce9e457b521ac5e61ec271150", + "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150", "shasum": "" }, "require": { @@ -6161,7 +6795,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.0" + "source": "https://github.com/symfony/type-info/tree/v7.3.1" }, "funding": [ { @@ -6177,20 +6811,20 @@ "type": "tidelift" } ], - "time": "2025-03-30T12:17:06+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/uid", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3" + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3", + "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", + "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", "shasum": "" }, "require": { @@ -6235,7 +6869,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.0" + "source": "https://github.com/symfony/uid/tree/v7.3.1" }, "funding": [ { @@ -6251,20 +6885,20 @@ "type": "tidelift" } ], - "time": "2025-05-24T14:28:13+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/validator", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b" + "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", - "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", + "url": "https://api.github.com/repos/symfony/validator/zipball/e2f2497c869fc57446f735fbf00cff4de32ae8c3", + "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3", "shasum": "" }, "require": { @@ -6333,7 +6967,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.0" + "source": "https://github.com/symfony/validator/tree/v7.3.1" }, "funding": [ { @@ -6349,20 +6983,20 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-06-26T13:22:23+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e" + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", "shasum": "" }, "require": { @@ -6417,7 +7051,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.1" }, "funding": [ { @@ -6433,7 +7067,7 @@ "type": "tidelift" } ], - "time": "2025-04-27T18:39:23+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/var-exporter", @@ -6597,16 +7231,16 @@ }, { "name": "symfony/yaml", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2" + "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/cea40a48279d58dc3efee8112634cb90141156c2", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb", + "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb", "shasum": "" }, "require": { @@ -6649,7 +7283,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.0" + "source": "https://github.com/symfony/yaml/tree/v7.3.1" }, "funding": [ { @@ -6665,7 +7299,7 @@ "type": "tidelift" } ], - "time": "2025-04-04T10:10:33+00:00" + "time": "2025-06-03T06:57:57+00:00" }, { "name": "twig/extra-bundle", @@ -7127,16 +7761,16 @@ }, { "name": "doctrine/data-fixtures", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e" + "reference": "f65b353922b7ac48f360428e19b22fcce5aba134" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f7f1e12d6bceb58c204b3e77210a103c1c57601e", - "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f65b353922b7ac48f360428e19b22fcce5aba134", + "reference": "f65b353922b7ac48f360428e19b22fcce5aba134", "shasum": "" }, "require": { @@ -7150,14 +7784,14 @@ "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^13", "doctrine/dbal": "^3.5 || ^4", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/orm": "^2.14 || ^3", "ext-sqlite3": "*", "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5.3", + "phpstan/phpstan": "2.1.17", + "phpunit/phpunit": "10.5.45", "symfony/cache": "^6.4 || ^7", "symfony/var-exporter": "^6.4 || ^7" }, @@ -7190,7 +7824,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/2.0.2" + "source": "https://github.com/doctrine/data-fixtures/tree/2.0.3" }, "funding": [ { @@ -7206,7 +7840,7 @@ "type": "tidelift" } ], - "time": "2025-01-21T13:21:31+00:00" + "time": "2025-06-27T19:59:58+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -7357,16 +7991,16 @@ }, { "name": "filp/whoops", - "version": "2.18.2", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3" + "reference": "59a123a3d459c5a23055802237cb317f609867e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/89dabca1490bc77dbcab41c2b20968c7e44bf7c3", - "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", "shasum": "" }, "require": { @@ -7416,7 +8050,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.2" + "source": "https://github.com/filp/whoops/tree/2.18.3" }, "funding": [ { @@ -7424,7 +8058,7 @@ "type": "github" } ], - "time": "2025-06-11T20:42:19+00:00" + "time": "2025-06-16T00:02:10+00:00" }, { "name": "jean85/pretty-package-versions", @@ -7488,16 +8122,16 @@ }, { "name": "liip/test-fixtures-bundle", - "version": "3.4.0", + "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6" + "reference": "3ebebefffac05ae349e42364daf80e7ce5fd7a38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/c21f1b65da157077db809bb4a9587d59a696bcd6", - "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6", + "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/3ebebefffac05ae349e42364daf80e7ce5fd7a38", + "reference": "3ebebefffac05ae349e42364daf80e7ce5fd7a38", "shasum": "" }, "require": { @@ -7521,7 +8155,7 @@ "doctrine/doctrine-fixtures-bundle": "^3.5.1 || ^4.0", "doctrine/mongodb-odm": "^2.5", "doctrine/mongodb-odm-bundle": "^4.4 || ^5.0", - "doctrine/orm": "^2.14 || ^3.0", + "doctrine/orm": "^2.14 || ^3.1.0", "monolog/monolog": "^1.25.1 || ^2.0 || ^3.0", "phpunit/phpunit": "^10.5.11 || ^11.0.4", "symfony/doctrine-bridge": "^5.4 || ^6.3 || ^7.0", @@ -7569,9 +8203,9 @@ ], "support": { "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.4.0" + "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.4.1" }, - "time": "2025-06-05T20:12:18+00:00" + "time": "2025-06-26T15:09:22+00:00" }, { "name": "lubiana/code-quality", @@ -7789,16 +8423,16 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.1", + "version": "v8.8.2", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5" + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/44ccb82e3e21efb5446748d2a3c81a030ac22bd5", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", "shasum": "" }, "require": { @@ -7884,7 +8518,7 @@ "type": "patreon" } ], - "time": "2025-06-11T01:04:21+00:00" + "time": "2025-06-25T02:12:12+00:00" }, { "name": "nunomaduro/termwind", @@ -8475,16 +9109,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.9", + "version": "11.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", - "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76", + "reference": "1a800a7446add2d79cc6b3c01c45381810367d76", "shasum": "" }, "require": { @@ -8541,15 +9175,27 @@ "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/11.0.9" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/show" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2025-02-25T13:26:39+00:00" + "time": "2025-06-18T08:56:18+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10282,16 +10928,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166" + "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0fabbc3d6a9c473b716a93fc8e7a537adb396166", - "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8b2ee2e06ab99fa5f067b6699296d4e35c156bb9", + "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9", "shasum": "" }, "require": { @@ -10329,7 +10975,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.0" + "source": "https://github.com/symfony/dom-crawler/tree/v7.3.1" }, "funding": [ { @@ -10345,7 +10991,7 @@ "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2025-06-15T10:07:06+00:00" }, { "name": "symfony/maker-bundle", @@ -10502,16 +11148,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.0", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c" + "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a22b7e4a744820a56f1bafa830f2c72a2ba0913c", - "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/47c994d8f08817122ffb48bf2ea4fb97b7e00d51", + "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51", "shasum": "" }, "require": { @@ -10567,7 +11213,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.1" }, "funding": [ { @@ -10583,7 +11229,7 @@ "type": "tidelift" } ], - "time": "2025-05-02T05:30:54+00:00" + "time": "2025-06-05T09:30:41+00:00" }, { "name": "symplify/config-transformer", diff --git a/config/bundles.php b/config/bundles.php index 2c6ab01..c0a4eeb 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -48,13 +48,13 @@ return [ 'dev' => true, 'test' => true, ], - ApiPlatformBundle::class => [ - 'all' => true, - ], TwigExtraBundle::class => [ 'all' => true, ], MonologBundle::class => [ 'all' => true, ], + ApiPlatformBundle::class => [ + 'all' => true, + ], ]; diff --git a/symfony.lock b/symfony.lock index 79a5298..b1afc0d 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,11 +1,11 @@ { - "api-platform/core": { + "api-platform/symfony": { "version": "4.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", "version": "4.0", - "ref": "cb9e6b8ceb9b62f32d41fc8ad72a25d5bd674c6d" + "ref": "e9952e9f393c2d048f10a78f272cd35e807d972b" }, "files": [ "config/packages/api_platform.yaml",