diff --git a/composer.json b/composer.json index 9daaf2d..186955e 100644 --- a/composer.json +++ b/composer.json @@ -15,6 +15,7 @@ "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.*", @@ -41,7 +42,7 @@ "require-dev": { "doctrine/doctrine-fixtures-bundle": "^4.1", "liip/test-fixtures-bundle": "^3.4", - "lubiana/code-quality": "1.7.3", + "lubiana/code-quality": "^1.7.2", "pestphp/pest": "^3.8.2", "symfony/browser-kit": "7.3.*", "symfony/css-selector": "7.3.*", diff --git a/composer.lock b/composer.lock index fd45297..46aa9a3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,516 +4,177 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "bc8674fb48687aeee3da991cd7c8d0ad", + "content-hash": "923bae46e3b7f783b6c25f8f68f97991", "packages": [ { - "name": "api-platform/doctrine-common", - "version": "v4.1.17", + "name": "api-platform/core", + "version": "v4.1.16", "source": { "type": "git", - "url": "https://github.com/api-platform/doctrine-common.git", - "reference": "3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f" + "url": "https://github.com/api-platform/core.git", + "reference": "64ff50f9b7206e7ac324ea221537f753194889b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f", - "reference": "3e1a2f3244ac5dba44a894bbb27d5c1705fccb0f", + "url": "https://api.github.com/repos/api-platform/core/zipball/64ff50f9b7206e7ac324ea221537f753194889b3", + "reference": "64ff50f9b7206e7ac324ea221537f753194889b3", "shasum": "" }, "require": { - "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/persistence": "<1.3" - }, - "require-dev": { - "doctrine/mongodb-odm": "^2.10", - "doctrine/orm": "^2.17 || ^3.0", - "phpspec/prophecy-phpunit": "^2.2", - "phpunit/phpunit": "11.5.x-dev" - }, - "suggest": { - "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": { - "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\\Common\\": "" - } - }, - "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": "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", + "doctrine/inflector": "^2.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", + "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/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" + "symfony/translation-contracts": "^3.3", + "symfony/type-info": "^7.2", + "symfony/web-link": "^6.4 || ^7.1", + "willdurand/negotiation": "^3.1" + }, + "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" }, "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", - "phpunit/phpunit": "11.5.x-dev" + "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" + }, + "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." }, "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.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" + "require": "^6.4 || ^7.1" }, "branch-alias": { "dev-3.4": "3.4.x-dev", @@ -523,14 +184,11 @@ }, "autoload": { "files": [ - "./HydraContext.php" + "src/JsonLd/HydraContext.php" ], "psr-4": { - "ApiPlatform\\JsonLd\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "ApiPlatform\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -541,499 +199,9 @@ "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", + "description": "Build a fully-featured hypermedia or GraphQL API in minutes!", "homepage": "https://api-platform.com", "keywords": [ "Hydra", @@ -1042,90 +210,17 @@ "graphql", "hal", "jsonapi", + "laravel", "openapi", "rest", "swagger", "symfony" ], "support": { - "source": "https://github.com/api-platform/symfony/tree/v4.1.17" + "issues": "https://github.com/api-platform/core/issues", + "source": "https://github.com/api-platform/core/tree/v4.1.16" }, - "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" + "time": "2025-06-13T13:00:13+00:00" }, { "name": "composer/semver", @@ -1294,109 +389,18 @@ ], "time": "2025-03-22T10:17:19+00:00" }, - { - "name": "doctrine/common", - "version": "3.5.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/common.git", - "reference": "d9ea4a54ca2586db781f0265d36bea731ac66ec5" - }, - "dist": { - "type": "zip", - "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", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec" + "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/b37d160498ea91a2382a2ebe825c4ea6254fc0ec", - "reference": "b37d160498ea91a2382a2ebe825c4ea6254fc0ec", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e", + "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e", "shasum": "" }, "require": { @@ -1406,15 +410,15 @@ "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "13.0.0", + "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.17", - "phpstan/phpstan-phpunit": "2.0.6", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "10.5.46", - "slevomat/coding-standard": "8.16.2", - "squizlabs/php_codesniffer": "3.13.1", + "phpunit/phpunit": "10.5.39", + "slevomat/coding-standard": "8.13.1", + "squizlabs/php_codesniffer": "3.10.2", "symfony/cache": "^6.3.8|^7.0", "symfony/console": "^5.4|^6.3|^7.0" }, @@ -1473,7 +477,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.4" + "source": "https://github.com/doctrine/dbal/tree/4.2.3" }, "funding": [ { @@ -1489,7 +493,7 @@ "type": "tidelift" } ], - "time": "2025-06-15T23:15:01+00:00" + "time": "2025-03-07T18:29:05+00:00" }, { "name": "doctrine/deprecations", @@ -1541,16 +545,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.15.0", + "version": "2.14.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "d88294521a1bca943240adca65fa19ca8a7288c6" + "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/d88294521a1bca943240adca65fa19ca8a7288c6", - "reference": "d88294521a1bca943240adca65fa19ca8a7288c6", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0a118222ab21ba05bd9f17fbaa6a3800865274f4", + "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4", "shasum": "" }, "require": { @@ -1643,7 +647,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.15.0" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.14.1" }, "funding": [ { @@ -1659,7 +663,7 @@ "type": "tidelift" } ], - "time": "2025-06-16T19:53:58+00:00" + "time": "2025-06-09T20:22:28+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", @@ -2077,16 +1081,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.1", + "version": "3.9.0", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999" + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/0f1e0c960ac29866d648a4f50142a74fe1cb6999", - "reference": "0f1e0c960ac29866d648a4f50142a74fe1cb6999", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", + "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", "shasum": "" }, "require": { @@ -2160,7 +1164,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.1" + "source": "https://github.com/doctrine/migrations/tree/3.9.0" }, "funding": [ { @@ -2176,20 +1180,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T07:19:23+00:00" + "time": "2025-03-26T06:48:45+00:00" }, { "name": "doctrine/orm", - "version": "3.4.3", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa" + "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/ef607f26c2965fe460c55733cc7c031fb7e1f2fa", - "reference": "ef607f26c2965fe460c55733cc7c031fb7e1f2fa", + "url": "https://api.github.com/repos/doctrine/orm/zipball/4664373bd0668d71b40cc368b950de95e1dba2f8", + "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8", "shasum": "" }, "require": { @@ -2264,27 +1268,27 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.4.3" + "source": "https://github.com/doctrine/orm/tree/3.4.0" }, - "time": "2025-06-27T12:14:15+00:00" + "time": "2025-06-14T11:47:14+00:00" }, { "name": "doctrine/persistence", - "version": "3.4.0", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" + "reference": "45004aca79189474f113cbe3a53847c2115a55fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa", + "reference": "45004aca79189474f113cbe3a53847c2115a55fa", "shasum": "" }, "require": { "doctrine/event-manager": "^1 || ^2", - "php": "^7.2 || ^8.0", + "php": "^8.1", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { @@ -2292,11 +1296,10 @@ }, "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": "^8.5.38 || ^9.5", + "phpunit/phpunit": "^9.6", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", @@ -2346,7 +1349,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.4.0" + "source": "https://github.com/doctrine/persistence/tree/4.0.0" }, "funding": [ { @@ -2362,7 +1365,7 @@ "type": "tidelift" } ], - "time": "2024-10-30T19:48:12+00:00" + "time": "2024-11-01T21:49:07+00:00" }, { "name": "doctrine/sql-formatter", @@ -2761,30 +1764,30 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "2.1.0", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", - "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/annotations": "^2.0", - "nikic/php-parser": "^5.3.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6", + "phpstan/phpstan": "^1.5", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.0", + "phpunit/phpunit": "^9.5", "symfony/process": "^5.2" }, "type": "library", @@ -2802,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/2.1.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" }, - "time": "2025-02-19T13:28:12+00:00" + "time": "2024-10-13T11:25:22+00:00" }, { "name": "psr/cache", @@ -3263,16 +2266,16 @@ }, { "name": "symfony/cache", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e" + "reference": "c4b217b578c11ec764867aa0c73e602c602965de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e", - "reference": "a7c6caa9d6113cebfb3020b427bcb021ebfdfc9e", + "url": "https://api.github.com/repos/symfony/cache/zipball/c4b217b578c11ec764867aa0c73e602c602965de", + "reference": "c4b217b578c11ec764867aa0c73e602c602965de", "shasum": "" }, "require": { @@ -3341,7 +2344,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.1" + "source": "https://github.com/symfony/cache/tree/v7.3.0" }, "funding": [ { @@ -3357,7 +2360,83 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "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" }, { "name": "symfony/clock", @@ -3510,16 +2589,16 @@ }, { "name": "symfony/console", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" + "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", - "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", + "url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44", + "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44", "shasum": "" }, "require": { @@ -3584,7 +2663,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.1" + "source": "https://github.com/symfony/console/tree/v7.3.0" }, "funding": [ { @@ -3600,115 +2679,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" - }, - { - "name": "symfony/contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "6e489617c52619f6a4f92986dfd19eb52d83de1f" - }, - "dist": { - "type": "zip", - "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" + "time": "2025-05-24T10:34:04+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8" + "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/8656c4848b48784c4bb8c4ae50d2b43f832cead8", - "reference": "8656c4848b48784c4bb8c4ae50d2b43f832cead8", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", + "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", "shasum": "" }, "require": { @@ -3759,7 +2743,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.1" + "source": "https://github.com/symfony/dependency-injection/tree/v7.3.0" }, "funding": [ { @@ -3775,20 +2759,87 @@ "type": "tidelift" } ], - "time": "2025-06-24T04:04:43+00:00" + "time": "2025-05-19T13:28:56+00:00" }, { - "name": "symfony/doctrine-bridge", - "version": "v7.3.1", + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/6c0acb248c46452ae2c15752dc71e72f3335403f", - "reference": "6c0acb248c46452ae2c15752dc71e72f3335403f", + "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" + }, + { + "name": "symfony/doctrine-bridge", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/doctrine-bridge.git", + "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/1df0cb5ce77ddfa0bdbca410009e3822567a6a19", + "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19", "shasum": "" }, "require": { @@ -3868,7 +2919,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.1" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.0" }, "funding": [ { @@ -3884,7 +2935,7 @@ "type": "tidelift" } ], - "time": "2025-06-26T13:02:59+00:00" + "time": "2025-05-25T10:32:38+00:00" }, { "name": "symfony/dotenv", @@ -3962,16 +3013,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235" + "reference": "cf68d225bc43629de4ff54778029aee6dc191b83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235", - "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83", + "reference": "cf68d225bc43629de4ff54778029aee6dc191b83", "shasum": "" }, "require": { @@ -4019,7 +3070,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.1" + "source": "https://github.com/symfony/error-handler/tree/v7.3.0" }, "funding": [ { @@ -4035,7 +3086,7 @@ "type": "tidelift" } ], - "time": "2025-06-13T07:48:40+00:00" + "time": "2025-05-29T07:19:49+00:00" }, { "name": "symfony/event-dispatcher", @@ -4117,6 +3168,82 @@ ], "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", @@ -4381,16 +3508,16 @@ }, { "name": "symfony/form", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a" + "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a", - "reference": "e06b02dd21b33b0cd7bb942c7e446ef7b22a2a5a", + "url": "https://api.github.com/repos/symfony/form/zipball/9ee0a686d9256b8f780a87b5ff78d4ddee025409", + "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409", "shasum": "" }, "require": { @@ -4458,7 +3585,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.1" + "source": "https://github.com/symfony/form/tree/v7.3.0" }, "funding": [ { @@ -4474,20 +3601,20 @@ "type": "tidelift" } ], - "time": "2025-06-13T07:48:40+00:00" + "time": "2025-05-04T12:58:53+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab" + "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/91905f22f26aa350a33b3b9690bdf94976b0d0ab", - "reference": "91905f22f26aa350a33b3b9690bdf94976b0d0ab", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/030646f55fe18501a43edab22a8ad250d8ec42a6", + "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6", "shasum": "" }, "require": { @@ -4612,7 +3739,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.1" + "source": "https://github.com/symfony/framework-bundle/tree/v7.3.0" }, "funding": [ { @@ -4628,20 +3755,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-05-28T06:56:42+00:00" }, { "name": "symfony/http-client", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64" + "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/4403d87a2c16f33345dca93407a8714ee8c05a64", - "reference": "4403d87a2c16f33345dca93407a8714ee8c05a64", + "url": "https://api.github.com/repos/symfony/http-client/zipball/57e4fb86314015a695a750ace358d07a7e37b8a9", + "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9", "shasum": "" }, "require": { @@ -4653,7 +3780,6 @@ }, "conflict": { "amphp/amp": "<2.5", - "amphp/socket": "<1.1", "php-http/discovery": "<1.15", "symfony/http-foundation": "<6.4" }, @@ -4666,6 +3792,7 @@ "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", @@ -4707,7 +3834,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.1" + "source": "https://github.com/symfony/http-client/tree/v7.3.0" }, "funding": [ { @@ -4723,20 +3850,98 @@ "type": "tidelift" } ], - "time": "2025-06-28T07:58:39+00:00" + "time": "2025-05-02T08:23:16+00:00" }, { - "name": "symfony/http-foundation", - "version": "v7.3.1", + "name": "symfony/http-client-contracts", + "version": "v3.6.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "23dd60256610c86a3414575b70c596e5deff6ed9" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "75d7043853a42837e68111812f4d964b01e5101c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9", - "reference": "23dd60256610c86a3414575b70c596e5deff6ed9", + "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" + }, + { + "name": "symfony/http-foundation", + "version": "v7.3.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "4236baf01609667d53b20371486228231eb135fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd", + "reference": "4236baf01609667d53b20371486228231eb135fd", "shasum": "" }, "require": { @@ -4786,7 +3991,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.1" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.0" }, "funding": [ { @@ -4802,20 +4007,20 @@ "type": "tidelift" } ], - "time": "2025-06-23T15:07:14+00:00" + "time": "2025-05-12T14:48:23+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831" + "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831", - "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f", + "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f", "shasum": "" }, "require": { @@ -4900,7 +4105,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.1" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.0" }, "funding": [ { @@ -4916,7 +4121,7 @@ "type": "tidelift" } ], - "time": "2025-06-28T08:24:55+00:00" + "time": "2025-05-29T07:47:32+00:00" }, { "name": "symfony/monolog-bridge", @@ -5621,16 +4826,16 @@ }, { "name": "symfony/property-access", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "518d15c8cca726ebe665dcd7154074584cf862e8" + "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/518d15c8cca726ebe665dcd7154074584cf862e8", - "reference": "518d15c8cca726ebe665dcd7154074584cf862e8", + "url": "https://api.github.com/repos/symfony/property-access/zipball/3bcf43665d6aff90547b005348e1e351f4e2174b", + "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b", "shasum": "" }, "require": { @@ -5677,7 +4882,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.1" + "source": "https://github.com/symfony/property-access/tree/v7.3.0" }, "funding": [ { @@ -5693,27 +4898,27 @@ "type": "tidelift" } ], - "time": "2025-06-24T04:04:43+00:00" + "time": "2025-05-10T11:59:09+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970" + "reference": "200d230d8553610ada73ac557501dc4609aad31f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/90586acbf2a6dd13bee4f09f09111c8bd4773970", - "reference": "90586acbf2a6dd13bee4f09f09111c8bd4773970", + "url": "https://api.github.com/repos/symfony/property-info/zipball/200d230d8553610ada73ac557501dc4609aad31f", + "reference": "200d230d8553610ada73ac557501dc4609aad31f", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0", - "symfony/type-info": "~7.2.8|^7.3.1" + "symfony/type-info": "~7.1.9|^7.2.2" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -5763,7 +4968,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.1" + "source": "https://github.com/symfony/property-info/tree/v7.3.0" }, "funding": [ { @@ -5779,7 +4984,7 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-04-04T13:12:05+00:00" }, { "name": "symfony/routing", @@ -5864,16 +5069,16 @@ }, { "name": "symfony/runtime", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "9516056d432f8acdac9458eb41b80097da7a05c9" + "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/9516056d432f8acdac9458eb41b80097da7a05c9", - "reference": "9516056d432f8acdac9458eb41b80097da7a05c9", + "url": "https://api.github.com/repos/symfony/runtime/zipball/fda552ee63dce9f3365f9c397efe7a80c8abac0a", + "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a", "shasum": "" }, "require": { @@ -5923,7 +5128,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.1" + "source": "https://github.com/symfony/runtime/tree/v7.3.0" }, "funding": [ { @@ -5939,20 +5144,20 @@ "type": "tidelift" } ], - "time": "2025-06-13T07:48:40+00:00" + "time": "2025-04-06T16:01:50+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079" + "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/428a281fd66c8358adc2259c8578e6d81fbb7079", - "reference": "428a281fd66c8358adc2259c8578e6d81fbb7079", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/61e74333f9ee109aefbd07eeb148d42c88faf6bb", + "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb", "shasum": "" }, "require": { @@ -6029,7 +5234,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.1" + "source": "https://github.com/symfony/security-bundle/tree/v7.3.0" }, "funding": [ { @@ -6045,20 +5250,20 @@ "type": "tidelift" } ], - "time": "2025-06-24T04:04:43+00:00" + "time": "2025-05-15T13:29:14+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba" + "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/fafab1003a31e51506e1a0a83e81c072211d81ba", - "reference": "fafab1003a31e51506e1a0a83e81c072211d81ba", + "url": "https://api.github.com/repos/symfony/security-core/zipball/ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", + "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", "shasum": "" }, "require": { @@ -6116,7 +5321,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.1" + "source": "https://github.com/symfony/security-core/tree/v7.3.0" }, "funding": [ { @@ -6132,7 +5337,7 @@ "type": "tidelift" } ], - "time": "2025-06-23T07:28:50+00:00" + "time": "2025-05-26T10:15:06+00:00" }, { "name": "symfony/security-csrf", @@ -6206,16 +5411,16 @@ }, { "name": "symfony/security-http", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "b7182ed0fd2359297f78ff6d407265168255ea84" + "reference": "8658634cc002096210c6227ec87a300dc647f88f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/b7182ed0fd2359297f78ff6d407265168255ea84", - "reference": "b7182ed0fd2359297f78ff6d407265168255ea84", + "url": "https://api.github.com/repos/symfony/security-http/zipball/8658634cc002096210c6227ec87a300dc647f88f", + "reference": "8658634cc002096210c6227ec87a300dc647f88f", "shasum": "" }, "require": { @@ -6274,7 +5479,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.1" + "source": "https://github.com/symfony/security-http/tree/v7.3.0" }, "funding": [ { @@ -6290,20 +5495,20 @@ "type": "tidelift" } ], - "time": "2025-06-24T04:04:43+00:00" + "time": "2025-05-26T10:15:06+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "feaf837cedbbc8287986602223175d3fd639922d" + "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/feaf837cedbbc8287986602223175d3fd639922d", - "reference": "feaf837cedbbc8287986602223175d3fd639922d", + "url": "https://api.github.com/repos/symfony/serializer/zipball/2d86f81b1c506d7e1578789f93280dab4b8411bb", + "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb", "shasum": "" }, "require": { @@ -6372,7 +5577,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.1" + "source": "https://github.com/symfony/serializer/tree/v7.3.0" }, "funding": [ { @@ -6388,7 +5593,90 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "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" }, { "name": "symfony/stopwatch", @@ -6539,6 +5827,84 @@ ], "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", @@ -6652,16 +6018,16 @@ }, { "name": "symfony/twig-bundle", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896" + "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/bc23c11d9716fc2261ee26a32e654b0e8b1b1896", - "reference": "bc23c11d9716fc2261ee26a32e654b0e8b1b1896", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/0ace7d92b92437a5ad59fad457af7dc2475db89b", + "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b", "shasum": "" }, "require": { @@ -6716,7 +6082,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.1" + "source": "https://github.com/symfony/twig-bundle/tree/v7.3.0" }, "funding": [ { @@ -6732,20 +6098,20 @@ "type": "tidelift" } ], - "time": "2025-06-24T04:04:43+00:00" + "time": "2025-05-14T11:51:37+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150" + "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/5fa6e25e4195e73ce9e457b521ac5e61ec271150", - "reference": "5fa6e25e4195e73ce9e457b521ac5e61ec271150", + "url": "https://api.github.com/repos/symfony/type-info/zipball/bc9af22e25796d98078f69c0749ab3a9d3454786", + "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786", "shasum": "" }, "require": { @@ -6795,7 +6161,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.1" + "source": "https://github.com/symfony/type-info/tree/v7.3.0" }, "funding": [ { @@ -6811,20 +6177,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-03-30T12:17:06+00:00" }, { "name": "symfony/uid", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb" + "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/a69f69f3159b852651a6bf45a9fdd149520525bb", - "reference": "a69f69f3159b852651a6bf45a9fdd149520525bb", + "url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3", + "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3", "shasum": "" }, "require": { @@ -6869,7 +6235,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.1" + "source": "https://github.com/symfony/uid/tree/v7.3.0" }, "funding": [ { @@ -6885,20 +6251,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-05-24T14:28:13+00:00" }, { "name": "symfony/validator", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3" + "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/e2f2497c869fc57446f735fbf00cff4de32ae8c3", - "reference": "e2f2497c869fc57446f735fbf00cff4de32ae8c3", + "url": "https://api.github.com/repos/symfony/validator/zipball/dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", + "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", "shasum": "" }, "require": { @@ -6967,7 +6333,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.1" + "source": "https://github.com/symfony/validator/tree/v7.3.0" }, "funding": [ { @@ -6983,20 +6349,20 @@ "type": "tidelift" } ], - "time": "2025-06-26T13:22:23+00:00" + "time": "2025-05-29T07:19:49+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42" + "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", - "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e", + "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e", "shasum": "" }, "require": { @@ -7051,7 +6417,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.1" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.0" }, "funding": [ { @@ -7067,7 +6433,7 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-04-27T18:39:23+00:00" }, { "name": "symfony/var-exporter", @@ -7231,16 +6597,16 @@ }, { "name": "symfony/yaml", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb" + "reference": "cea40a48279d58dc3efee8112634cb90141156c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0c3555045a46ab3cd4cc5a69d161225195230edb", - "reference": "0c3555045a46ab3cd4cc5a69d161225195230edb", + "url": "https://api.github.com/repos/symfony/yaml/zipball/cea40a48279d58dc3efee8112634cb90141156c2", + "reference": "cea40a48279d58dc3efee8112634cb90141156c2", "shasum": "" }, "require": { @@ -7283,7 +6649,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.1" + "source": "https://github.com/symfony/yaml/tree/v7.3.0" }, "funding": [ { @@ -7299,7 +6665,7 @@ "type": "tidelift" } ], - "time": "2025-06-03T06:57:57+00:00" + "time": "2025-04-04T10:10:33+00:00" }, { "name": "twig/extra-bundle", @@ -7665,28 +7031,28 @@ }, { "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v1.1.1", + "version": "v1.0.0", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/composer-installer.git", - "reference": "6e0fa428497bf560152ee73ffbb8af5c6a56b0dd" + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/6e0fa428497bf560152ee73ffbb8af5c6a56b0dd", - "reference": "6e0fa428497bf560152ee73ffbb8af5c6a56b0dd", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { - "composer-plugin-api": "^2.2", + "composer-plugin-api": "^1.0 || ^2.0", "php": ">=5.4", "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { - "composer/composer": "^2.2", + "composer/composer": "*", "ext-json": "*", "ext-zip": "*", - "php-parallel-lint/php-parallel-lint": "^1.4.0", + "php-parallel-lint/php-parallel-lint": "^1.3.1", "phpcompatibility/php-compatibility": "^9.0", "yoast/phpunit-polyfills": "^1.0" }, @@ -7706,9 +7072,9 @@ "authors": [ { "name": "Franck Nijhof", - "email": "opensource@frenck.dev", - "homepage": "https://frenck.dev", - "role": "Open source developer" + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" }, { "name": "Contributors", @@ -7716,6 +7082,7 @@ } ], "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", "keywords": [ "PHPCodeSniffer", "PHP_CodeSniffer", @@ -7736,41 +7103,22 @@ ], "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" }, - "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" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "doctrine/data-fixtures", - "version": "2.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/data-fixtures.git", - "reference": "f65b353922b7ac48f360428e19b22fcce5aba134" + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f65b353922b7ac48f360428e19b22fcce5aba134", - "reference": "f65b353922b7ac48f360428e19b22fcce5aba134", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e", "shasum": "" }, "require": { @@ -7784,14 +7132,14 @@ "doctrine/phpcr-odm": "<1.3.0" }, "require-dev": { - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^12", "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": "2.1.17", - "phpunit/phpunit": "10.5.45", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5.3", "symfony/cache": "^6.4 || ^7", "symfony/var-exporter": "^6.4 || ^7" }, @@ -7824,7 +7172,7 @@ ], "support": { "issues": "https://github.com/doctrine/data-fixtures/issues", - "source": "https://github.com/doctrine/data-fixtures/tree/2.0.3" + "source": "https://github.com/doctrine/data-fixtures/tree/2.0.2" }, "funding": [ { @@ -7840,7 +7188,7 @@ "type": "tidelift" } ], - "time": "2025-06-27T19:59:58+00:00" + "time": "2025-01-21T13:21:31+00:00" }, { "name": "doctrine/doctrine-fixtures-bundle", @@ -7991,16 +7339,16 @@ }, { "name": "filp/whoops", - "version": "2.18.3", + "version": "2.18.2", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "59a123a3d459c5a23055802237cb317f609867e5" + "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", - "reference": "59a123a3d459c5a23055802237cb317f609867e5", + "url": "https://api.github.com/repos/filp/whoops/zipball/89dabca1490bc77dbcab41c2b20968c7e44bf7c3", + "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3", "shasum": "" }, "require": { @@ -8050,7 +7398,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.3" + "source": "https://github.com/filp/whoops/tree/2.18.2" }, "funding": [ { @@ -8058,7 +7406,7 @@ "type": "github" } ], - "time": "2025-06-16T00:02:10+00:00" + "time": "2025-06-11T20:42:19+00:00" }, { "name": "jean85/pretty-package-versions", @@ -8122,16 +7470,16 @@ }, { "name": "liip/test-fixtures-bundle", - "version": "3.4.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "3ebebefffac05ae349e42364daf80e7ce5fd7a38" + "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/3ebebefffac05ae349e42364daf80e7ce5fd7a38", - "reference": "3ebebefffac05ae349e42364daf80e7ce5fd7a38", + "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/c21f1b65da157077db809bb4a9587d59a696bcd6", + "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6", "shasum": "" }, "require": { @@ -8155,7 +7503,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.1.0", + "doctrine/orm": "^2.14 || ^3.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", @@ -8203,23 +7551,23 @@ ], "support": { "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.4.1" + "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.4.0" }, - "time": "2025-06-26T15:09:22+00:00" + "time": "2025-06-05T20:12:18+00:00" }, { "name": "lubiana/code-quality", - "version": "1.7.3", + "version": "1.7.2", "source": { "type": "git", "url": "https://git.php.fail/lubiana/code-quality.git", - "reference": "85f220919f8b478eb25ca0ca1028f045b8f0c4c4" + "reference": "b7e3418f0fa3225d2cdab9cfdcba266bc74775a4" }, "require": { "php": "^8.3", - "rector/rector": "^2.1.0", - "slevomat/coding-standard": "^8.19.1", - "symplify/easy-coding-standard": "^12.5.20" + "rector/rector": "^1.0.5", + "slevomat/coding-standard": "^8.15", + "symplify/easy-coding-standard": "^12.3.5" }, "type": "library", "autoload": { @@ -8234,7 +7582,7 @@ "keywords": [ "dev" ], - "time": "2025-06-29T17:02:17+00:00" + "time": "2024-08-18T07:17:23+00:00" }, { "name": "masterminds/html5", @@ -8423,16 +7771,16 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.2", + "version": "v8.8.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb" + "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", - "reference": "60207965f9b7b7a4ce15a0f75d57f9dadb105bdb", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/44ccb82e3e21efb5446748d2a3c81a030ac22bd5", + "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5", "shasum": "" }, "require": { @@ -8518,7 +7866,7 @@ "type": "patreon" } ], - "time": "2025-06-25T02:12:12+00:00" + "time": "2025-06-11T01:04:21+00:00" }, { "name": "nunomaduro/termwind", @@ -9051,20 +8399,20 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.17", + "version": "1.12.27", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" + "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", - "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162", + "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162", "shasum": "" }, "require": { - "php": "^7.4|^8.0" + "php": "^7.2|^8.0" }, "conflict": { "phpstan/phpstan-shim": "*" @@ -9105,20 +8453,20 @@ "type": "github" } ], - "time": "2025-05-21T20:55:28+00:00" + "time": "2025-05-21T20:51:45+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "11.0.10", + "version": "11.0.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "1a800a7446add2d79cc6b3c01c45381810367d76" + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/1a800a7446add2d79cc6b3c01c45381810367d76", - "reference": "1a800a7446add2d79cc6b3c01c45381810367d76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/14d63fbcca18457e49c6f8bebaa91a87e8e188d7", + "reference": "14d63fbcca18457e49c6f8bebaa91a87e8e188d7", "shasum": "" }, "require": { @@ -9175,27 +8523,15 @@ "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/show" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.9" }, "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-06-18T08:56:18+00:00" + "time": "2025-02-25T13:26:39+00:00" }, { "name": "phpunit/php-file-iterator", @@ -9596,21 +8932,21 @@ }, { "name": "rector/rector", - "version": "2.1.0", + "version": "1.2.10", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "d513dea45a94394b660e15c155d1fa27826f8e30" + "reference": "40f9cf38c05296bd32f444121336a521a293fa61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/d513dea45a94394b660e15c155d1fa27826f8e30", - "reference": "d513dea45a94394b660e15c155d1fa27826f8e30", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/40f9cf38c05296bd32f444121336a521a293fa61", + "reference": "40f9cf38c05296bd32f444121336a521a293fa61", "shasum": "" }, "require": { - "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.17" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.12.5" }, "conflict": { "rector/rector-doctrine": "*", @@ -9635,7 +8971,6 @@ "MIT" ], "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "homepage": "https://getrector.com/", "keywords": [ "automation", "dev", @@ -9644,7 +8979,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.1.0" + "source": "https://github.com/rectorphp/rector/tree/1.2.10" }, "funding": [ { @@ -9652,7 +8987,7 @@ "type": "github" } ], - "time": "2025-06-24T20:26:57+00:00" + "time": "2024-11-08T13:59:10+00:00" }, { "name": "sebastian/cli-parser", @@ -10594,32 +9929,32 @@ }, { "name": "slevomat/coding-standard", - "version": "8.19.1", + "version": "8.15.0", "source": { "type": "git", "url": "https://github.com/slevomat/coding-standard.git", - "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220" + "reference": "7d1d957421618a3803b593ec31ace470177d7817" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/458d665acd49009efebd7e0cb385d71ae9ac3220", - "reference": "458d665acd49009efebd7e0cb385d71ae9ac3220", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/7d1d957421618a3803b593ec31ace470177d7817", + "reference": "7d1d957421618a3803b593ec31ace470177d7817", "shasum": "" }, "require": { "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", - "php": "^7.4 || ^8.0", - "phpstan/phpdoc-parser": "^2.1.0", - "squizlabs/php_codesniffer": "^3.13.0" + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.9.0" }, "require-dev": { - "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" + "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" }, "type": "phpcodesniffer-standard", "extra": { @@ -10643,7 +9978,7 @@ ], "support": { "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/8.19.1" + "source": "https://github.com/slevomat/coding-standard/tree/8.15.0" }, "funding": [ { @@ -10655,20 +9990,20 @@ "type": "tidelift" } ], - "time": "2025-06-09T17:53:57+00:00" + "time": "2024-03-09T15:20:58+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.13.2", + "version": "3.13.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5b5e3821314f947dd040c70f7992a64eac89025c" + "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c", - "reference": "5b5e3821314f947dd040c70f7992a64eac89025c", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", + "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", "shasum": "" }, "require": { @@ -10739,7 +10074,7 @@ "type": "thanks_dev" } ], - "time": "2025-06-17T22:17:01+00:00" + "time": "2025-06-12T15:04:34+00:00" }, { "name": "staabm/side-effects-detector", @@ -10928,16 +10263,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9" + "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/8b2ee2e06ab99fa5f067b6699296d4e35c156bb9", - "reference": "8b2ee2e06ab99fa5f067b6699296d4e35c156bb9", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0fabbc3d6a9c473b716a93fc8e7a537adb396166", + "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166", "shasum": "" }, "require": { @@ -10975,7 +10310,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.1" + "source": "https://github.com/symfony/dom-crawler/tree/v7.3.0" }, "funding": [ { @@ -10991,7 +10326,7 @@ "type": "tidelift" } ], - "time": "2025-06-15T10:07:06+00:00" + "time": "2025-03-05T10:15:41+00:00" }, { "name": "symfony/maker-bundle", @@ -11148,16 +10483,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.1", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51" + "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/47c994d8f08817122ffb48bf2ea4fb97b7e00d51", - "reference": "47c994d8f08817122ffb48bf2ea4fb97b7e00d51", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a22b7e4a744820a56f1bafa830f2c72a2ba0913c", + "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c", "shasum": "" }, "require": { @@ -11213,7 +10548,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.1" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.0" }, "funding": [ { @@ -11229,7 +10564,7 @@ "type": "tidelift" } ], - "time": "2025-06-05T09:30:41+00:00" + "time": "2025-05-02T05:30:54+00:00" }, { "name": "symplify/config-transformer", diff --git a/config/bundles.php b/config/bundles.php index c0a4eeb..2c6ab01 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/src/Controller/FoodOrderController.php b/src/Controller/FoodOrderController.php index 626d20a..81b72d5 100644 --- a/src/Controller/FoodOrderController.php +++ b/src/Controller/FoodOrderController.php @@ -14,6 +14,22 @@ 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', @@ -44,32 +60,6 @@ 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 { @@ -94,6 +84,24 @@ 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 { @@ -103,12 +111,4 @@ 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 cb7c02c..283eae9 100644 --- a/src/Controller/FoodVendorController.php +++ b/src/Controller/FoodVendorController.php @@ -14,23 +14,6 @@ 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 { @@ -68,4 +51,21 @@ 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 0686062..ecf6103 100644 --- a/src/Controller/MenuItemController.php +++ b/src/Controller/MenuItemController.php @@ -13,18 +13,12 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/menu/item')] 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, + ]); } #[Route('/{id}/edit', name: 'app_menu_item_edit', methods: ['GET', 'POST'])] @@ -58,11 +52,17 @@ 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); } } diff --git a/src/Controller/OrderItemController.php b/src/Controller/OrderItemController.php index f52d202..6cdffda 100644 --- a/src/Controller/OrderItemController.php +++ b/src/Controller/OrderItemController.php @@ -16,94 +16,6 @@ use Symfony\Component\Routing\Attribute\Route; #[Route('/order/item')] final class OrderItemController extends AbstractController { - #[Route('/{id}/copy', name: 'app_order_item_copy', methods: ['GET'])] - public function copy(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); - } - $newOrderItem = new OrderItem; - $newOrderItem->setFoodOrder($orderItem->getFoodOrder()); - $newOrderItem->setName($orderItem->getName()); - $newOrderItem->setExtras($orderItem->getExtras()); - $newOrderItem->setMenuItem($orderItem->getMenuItem()); - - $entityManager->persist($newOrderItem); - $entityManager->flush(); - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $orderItem->getFoodOrder() - ->getId(), - ], 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, - OrderItem $orderItem, - 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); - } - $orderItem->setName($orderItem->getMenuItem()->getName()); - $form = $this->createForm(OrderItemType::class, $orderItem); - $form->setData($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); - } - - $orderItem->setMenuItem($menuItem); - $orderItem->setFoodOrder($foodOrder); - $entityManager->persist($orderItem); - $entityManager->flush(); - - return $this->redirectToRoute('app_food_order_show', [ - 'id' => $orderItem->getFoodOrder() - ->getId(), - ], Response::HTTP_SEE_OTHER); - } - - return $this->render('order_item/edit.html.twig', [ - 'order_item' => $orderItem, - 'form' => $form, - ]); - } - #[Route('/new/{foodOrder}', name: 'app_order_item_new', methods: ['GET', 'POST'])] public function new(Request $request, FoodOrder $foodOrder, EntityManagerInterface $entityManager, MenuItemRepository $menuItemRepository): Response { @@ -159,4 +71,92 @@ final class OrderItemController extends AbstractController 'menuItems' => $menuItems, ]); } + + #[Route('/{id}/copy', name: 'app_order_item_copy', methods: ['GET'])] + public function copy(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); + } + $newOrderItem = new OrderItem; + $newOrderItem->setFoodOrder($orderItem->getFoodOrder()); + $newOrderItem->setName($orderItem->getName()); + $newOrderItem->setExtras($orderItem->getExtras()); + $newOrderItem->setMenuItem($orderItem->getMenuItem()); + + $entityManager->persist($newOrderItem); + $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, + OrderItem $orderItem, + 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); + } + $orderItem->setName($orderItem->getMenuItem()->getName()); + $form = $this->createForm(OrderItemType::class, $orderItem); + $form->setData($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); + } + + $orderItem->setMenuItem($menuItem); + $orderItem->setFoodOrder($foodOrder); + $entityManager->persist($orderItem); + $entityManager->flush(); + + return $this->redirectToRoute('app_food_order_show', [ + 'id' => $orderItem->getFoodOrder() + ->getId(), + ], Response::HTTP_SEE_OTHER); + } + + return $this->render('order_item/edit.html.twig', [ + 'order_item' => $orderItem, + 'form' => $form, + ]); + } + + #[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); + } } diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php index b8a30b3..327df22 100644 --- a/src/DataFixtures/AppFixtures.php +++ b/src/DataFixtures/AppFixtures.php @@ -16,6 +16,29 @@ 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 = []; @@ -40,27 +63,4 @@ 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 2ca9e80..52c0d85 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 { - #[Groups(['food_order:read'])] #[ORM\Column(nullable: true)] + #[Groups(['food_order:read'])] private DateTimeImmutable|null $closedAt = null; - #[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')] + #[ORM\JoinColumn(nullable: false)] + #[Groups(['food_order:read', 'food_order:latest'])] private FoodVendor|null $foodVendor = null; /** * @var Collection */ - #[Groups(['food_order:read', 'food_order:latest'])] #[ORM\OneToMany(targetEntity: OrderItem::class, mappedBy: 'foodOrder', orphanRemoval: true)] + #[Groups(['food_order:read', 'food_order:latest'])] private Collection $orderItems; + #[ORM\Column(length: 255, options: [ + 'default' => 'nobody', + ])] + #[Groups(['food_order:read'])] + private string|null $createdBy = 'nobody'; + public function __construct( - #[Groups(['food_order:read'])] - #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\Id] + #[ORM\Column(type: UlidType::NAME, unique: true)] + #[Groups(['food_order:read'])] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; @@ -80,24 +80,9 @@ class FoodOrder $this->open(); } - public function addOrderItem(OrderItem $orderItem): static + public function getId(): Ulid|null { - 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; + return $this->id; } #[Groups(['food_order:read'])] @@ -106,9 +91,35 @@ class FoodOrder return $this->id->getDateTime(); } - public function getCreatedBy(): string|null + public function getClosedAt(): DateTimeImmutable|null { - return $this->createdBy; + 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; } public function getFoodVendor(): FoodVendor|null @@ -116,9 +127,11 @@ class FoodOrder return $this->foodVendor; } - public function getId(): Ulid|null + public function setFoodVendor(FoodVendor|null $foodVendor): static { - return $this->id; + $this->foodVendor = $foodVendor; + + return $this; } /** @@ -146,17 +159,13 @@ class FoodOrder ); } - public function isClosed(): bool + public function addOrderItem(OrderItem $orderItem): static { - if (! $this->closedAt instanceof DateTimeImmutable) { - return false; + if (! $this->orderItems->contains($orderItem)) { + $this->orderItems->add($orderItem); + $orderItem->setFoodOrder($this); } - return $this->closedAt < new DateTimeImmutable; - } - public function open(): static - { - $this->closedAt = (new DateTimeImmutable)->add(new DateInterval('PT1H')); return $this; } @@ -170,11 +179,9 @@ class FoodOrder return $this; } - public function setClosedAt(DateTimeImmutable|null $closedAt = null): static + public function getCreatedBy(): string|null { - $this->closedAt = $closedAt; - - return $this; + return $this->createdBy; } public function setCreatedBy(string $createdBy): static @@ -183,11 +190,4 @@ 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 123be49..83bef71 100644 --- a/src/Entity/FoodVendor.php +++ b/src/Entity/FoodVendor.php @@ -16,17 +16,19 @@ use Symfony\Component\Validator\Constraints\Length; use function mb_strlen; -#[ApiResource] #[ORM\Entity(repositoryClass: FoodVendorRepository::class)] +#[ApiResource] class FoodVendor { - /** - * String of emojis (max 30 characters) - */ + #[ORM\Column(length: 50)] #[Groups(['food_order:latest', 'food_vendor:read'])] - #[Length(max: 10)] - #[ORM\Column(length: 30, nullable: true)] - private string|null $emojis = null; + 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; /** * @var Collection @@ -40,26 +42,24 @@ class FoodVendor #[ORM\OneToMany(targetEntity: MenuItem::class, mappedBy: 'foodVendor', orphanRemoval: true)] private Collection $menuItems; - #[Groups(['food_order:latest'])] #[ORM\Column(length: 255, nullable: true)] + #[Groups(['food_order:latest'])] private string|null $menuLink = null; + /** + * String of emojis (max 30 characters) + */ + #[ORM\Column(length: 30, nullable: true)] #[Groups(['food_order:latest', 'food_vendor:read'])] - #[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; + #[Length(max: 10)] + private string|null $emojis = null; public function __construct( - #[Groups(['food_order:latest'])] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] - #[ORM\GeneratedValue(strategy: 'CUSTOM')] - #[ORM\Id] + #[Groups(['food_order:latest'])] private Ulid|null $id = new Ulid ) { $this->id ??= new Ulid; @@ -67,6 +67,31 @@ 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)) { @@ -77,34 +102,16 @@ class FoodVendor return $this; } - public function addMenuItem(MenuItem $menuItem): static + public function removeFoodOrder(FoodOrder $foodOrder): static { - if (! $this->menuItems->contains($menuItem)) { - $this->menuItems->add($menuItem); - $menuItem->setFoodVendor($this); + // set the owning side to null (unless already changed) + if ($this->foodOrders->removeElement($foodOrder)) { + $foodOrder->setFoodVendor(null); } 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 */ @@ -118,26 +125,11 @@ class FoodVendor ); } - public function getMenuLink(): string|null + public function addMenuItem(MenuItem $menuItem): static { - 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); + if (! $this->menuItems->contains($menuItem)) { + $this->menuItems->add($menuItem); + $menuItem->setFoodVendor($this); } return $this; @@ -153,14 +145,9 @@ class FoodVendor return $this; } - public function setEmojis(string|null $emojis): static + public function getMenuLink(): string|null { - if ($emojis !== null && mb_strlen($emojis) > 30) { - throw new InvalidArgumentException('A maximum of 30 characters is allowed for emojis'); - } - - $this->emojis = $emojis; - return $this; + return $this->menuLink; } public function setMenuLink(string|null $menuLink): static @@ -170,11 +157,9 @@ class FoodVendor return $this; } - public function setName(string $name): static + public function getPhone(): string|null { - $this->name = $name; - - return $this; + return $this->phone; } public function setPhone(string|null $phone): static @@ -182,4 +167,19 @@ class FoodVendor $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) { + throw new InvalidArgumentException('A maximum of 30 characters is allowed for emojis'); + } + + $this->emojis = $emojis; + return $this; + } } diff --git a/src/Entity/MenuItem.php b/src/Entity/MenuItem.php index 21beed9..71021a5 100644 --- a/src/Entity/MenuItem.php +++ b/src/Entity/MenuItem.php @@ -16,75 +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 addAlias(self $alias): static - { - if (! $this->aliases->contains($alias)) { - $this->aliases->add($alias); - $alias->setAliasOf($this); - } - - 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; @@ -95,11 +56,78 @@ class MenuItem 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)) { + $this->aliases->add($alias); + $alias->setAliasOf($this); + } + + return $this; + } + public function removeAlias(self $alias): static { // set the owning side to null (unless already changed) @@ -109,32 +137,4 @@ 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 5b2c045..a25bb07 100644 --- a/src/Entity/OrderItem.php +++ b/src/Entity/OrderItem.php @@ -14,77 +14,62 @@ 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( - #[Groups(['food_order:latest'])] + #[ORM\Id] + #[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] - #[ORM\GeneratedValue(strategy: 'CUSTOM')] - #[ORM\Id] + #[Groups(['food_order:latest'])] 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 setCreatedBy(string $createdBy): static + public function setName(string $name): static { - $this->createdBy = $createdBy; + $this->name = $name; return $this; } + public function getExtras(): string|null + { + return $this->extras; + } + public function setExtras(string|null $extras): static { $this->extras = $extras; @@ -92,6 +77,11 @@ class OrderItem return $this; } + public function getFoodOrder(): FoodOrder|null + { + return $this->foodOrder; + } + public function setFoodOrder(FoodOrder|null $foodOrder): static { $this->foodOrder = $foodOrder; @@ -99,6 +89,11 @@ class OrderItem return $this; } + public function getMenuItem(): MenuItem|null + { + return $this->menuItem; + } + public function setMenuItem(MenuItem|null $menuItem): static { $this->menuItem = $menuItem; @@ -107,9 +102,14 @@ class OrderItem return $this; } - public function setName(string $name): static + public function getCreatedBy(): string|null { - $this->name = $name; + return $this->createdBy; + } + + public function setCreatedBy(string $createdBy): static + { + $this->createdBy = $createdBy; return $this; } diff --git a/src/Repository/FoodOrderRepository.php b/src/Repository/FoodOrderRepository.php index a781506..a48d123 100644 --- a/src/Repository/FoodOrderRepository.php +++ b/src/Repository/FoodOrderRepository.php @@ -19,6 +19,12 @@ final class FoodOrderRepository extends ServiceEntityRepository parent::__construct($registry, FoodOrder::class); } + public function save(): void + { + $this->getEntityManager() + ->flush(); + } + /** * @return FoodOrder[] */ @@ -42,15 +48,6 @@ 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[] */ @@ -66,9 +63,12 @@ final class FoodOrderRepository extends ServiceEntityRepository ->getResult(); } - public function save(): void + public function findLatestOrder(): FoodOrder|null { - $this->getEntityManager() - ->flush(); + return $this->createQueryBuilder('alias') + ->orderBy('alias.id', 'DESC') + ->setMaxResults(1) + ->getQuery() + ->getOneOrNullResult(); } } diff --git a/symfony.lock b/symfony.lock index b1afc0d..79a5298 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,11 +1,11 @@ { - "api-platform/symfony": { + "api-platform/core": { "version": "4.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", "version": "4.0", - "ref": "e9952e9f393c2d048f10a78f272cd35e807d972b" + "ref": "cb9e6b8ceb9b62f32d41fc8ad72a25d5bd674c6d" }, "files": [ "config/packages/api_platform.yaml", diff --git a/tests/DbWebTest.php b/tests/DbWebTest.php index 6751c3d..181dce1 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 string $entityClass = ''; protected EntityManagerInterface $manager; - protected string $path = ''; protected EntityRepository $repository; + protected string $entityClass = ''; + protected string $path = ''; #[Override] protected function setUp(): void @@ -35,6 +35,13 @@ 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( @@ -46,13 +53,6 @@ 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;