diff --git a/.env.dev b/.env.dev deleted file mode 100644 index f3f3304..0000000 --- a/.env.dev +++ /dev/null @@ -1,4 +0,0 @@ - -###> symfony/framework-bundle ### -APP_SECRET=11c8937d48993fb3aee1a476413161f5 -###< symfony/framework-bundle ### diff --git a/.forgejo/workflows/pull_request.yml b/.forgejo/workflows/pull_request.yml index a457e2a..55d54ce 100644 --- a/.forgejo/workflows/pull_request.yml +++ b/.forgejo/workflows/pull_request.yml @@ -3,7 +3,7 @@ jobs: ls: runs-on: docker container: - image: git.php.fail/lubiana/container/php:8.4.8-ci + image: git.php.fail/lubiana/container/php:8.4.3-ci steps: - name: Manually checkout env: diff --git a/.forgejo/workflows/push.yml b/.forgejo/workflows/push.yml index 8f046fa..f5ba7cf 100644 --- a/.forgejo/workflows/push.yml +++ b/.forgejo/workflows/push.yml @@ -6,7 +6,7 @@ jobs: ls: runs-on: docker container: - image: git.php.fail/lubiana/container/php:8.4.8-ci + image: git.php.fail/lubiana/container/php:8.4.3-ci steps: - name: Manually checkout env: diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index f057351..056399a 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -4,7 +4,7 @@ jobs: ls: runs-on: docker container: - image: git.php.fail/lubiana/container/php:8.4.8-ci + image: git.php.fail/lubiana/container/php:8.4.3-ci steps: - name: Manually checkout env: diff --git a/.gitignore b/.gitignore index fc6822e..c166fee 100644 --- a/.gitignore +++ b/.gitignore @@ -18,11 +18,7 @@ .DS_Store -###> squizlabs/php_codesniffer ### -/.phpcs-cache -/phpcs.xml -###< squizlabs/php_codesniffer ### - -###> phpstan/phpstan ### -phpstan.neon -###< phpstan/phpstan ### +###> symfony/asset-mapper ### +/public/assets/ +/assets/vendor/ +###< symfony/asset-mapper ### diff --git a/.junie/guidelines.md b/.junie/guidelines.md new file mode 100644 index 0000000..9e6e07c --- /dev/null +++ b/.junie/guidelines.md @@ -0,0 +1,156 @@ +# Development Guidelines + +This document provides guidelines and instructions for developing and maintaining the Futtern project. + +## Build/Configuration Instructions + +### Environment Setup + +1. **PHP Requirements**: The project requires PHP 8.4 or higher with the following extensions: + - ctype + - iconv + +2. **Composer**: Install dependencies using Composer: + ```bash + composer install + ``` + +3. **Environment Configuration**: Copy `.env` to `.env.local` and adjust the settings as needed for your local environment. + +### Development Server + +Start the Symfony development server: +```bash +symfony server:start +``` + +### Building Assets + +The project uses Tailwind CSS via the symfonycasts/tailwind-bundle: +```bash +# Install importmap assets +symfony console importmap:install +``` + +## Deployment + +The project includes several deployment scripts: + +1. **Prepare for Deployment**: + ```bash + ./deploy/prepare-deploy.sh + ``` + This script creates a clean copy of the application with only production dependencies. + +2. **Local Deployment**: + ```bash + ./deploy/local-deploy.sh + ``` + This script deploys the application to a remote server, backing up the database and restarting the service. + +3. **Update After Deployment**: + ```bash + ./deploy/update.sh + ``` + This script is run on the remote server to clear cache, warm up cache, and run database migrations. + +## Testing Information + +### Testing Framework + +The project uses Pest PHP, a testing framework built on top of PHPUnit, for testing. Tests are organized into: +- **Feature Tests**: For testing controllers and API endpoints +- **Unit Tests**: For testing individual components + +### Running Tests + +Run all tests: +```bash +composer test +# or +./vendor/bin/pest +``` + +Run specific tests: +```bash +./vendor/bin/pest tests/Unit/ExampleTest.php +``` + +Run tests in parallel: +```bash +./vendor/bin/pest --parallel +``` + +### Creating Tests + +1. **Unit Tests**: Create files in the `tests/Unit` directory. +2. **Feature Tests**: + - Controller tests: Create files in `tests/Feature/Controller` + - API tests: Create files in `tests/Feature/Api` + +### Example Test + +Here's a simple example of a Pest PHP test: + +```php +toBeTrue(); + expect(1 + 1)->toBe(2); + expect('hello world')->toContain('world'); +}); + +test('array operations', function (): void { + $array = [1, 2, 3]; + + expect($array)->toHaveCount(3); + expect($array)->toContain(2); + expect($array[0])->toBe(1); +}); +``` + +### Test Base Classes + +- `DbWebTest`: Base class for controller tests +- `DbApiTestCase`: Base class for API tests + +## Code Quality and Style + +### Code Style + +The project uses Easy Coding Standard (ECS) for code style checking: +```bash +composer lint +# or +./vendor/bin/ecs --fix +``` + +The code style is defined in `ecs.php` and includes: +- Custom rules from `Lubiana\CodeQuality\LubiSetList::ECS` +- All classes should be declared as final + +### Code Refactoring + +The project uses Rector for automated code refactoring: +```bash +./vendor/bin/rector +``` + +The refactoring rules are defined in `rector.php` and include: +- Custom rules from `Lubiana\CodeQuality\LubiSetList::RECTOR` +- StaticClosureRector is skipped in the tests directory + +### Development Workflow + +1. Make changes to the code +2. Run tests to ensure functionality: `composer test` +3. Fix code style issues: `composer lint` +4. Commit and push changes +5. Deploy using the deployment scripts + +## Debugging + +- Use the Symfony Web Profiler in development mode +- Check logs in `var/log/` +- For API debugging, use the API Platform documentation at `/api` \ No newline at end of file diff --git a/.symfony.local.yaml b/.symfony.local.yaml new file mode 100644 index 0000000..1198458 --- /dev/null +++ b/.symfony.local.yaml @@ -0,0 +1,3 @@ +workers: + tailwind: + cmd: ['symfony', 'console', 'tailwind:build', '--watch'] \ No newline at end of file diff --git a/assets/app.js b/assets/app.js new file mode 100644 index 0000000..05ff425 --- /dev/null +++ b/assets/app.js @@ -0,0 +1,8 @@ +/* + * Welcome to your app's main JavaScript file! + * + * This file will be included onto the page via the importmap() Twig function, + * which should already be in your base.html.twig. + */ +import './styles/app.css'; + diff --git a/assets/styles/app.css b/assets/styles/app.css new file mode 100644 index 0000000..f52a8ac --- /dev/null +++ b/assets/styles/app.css @@ -0,0 +1,7 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +body { + background-color: skyblue; +} diff --git a/composer.json b/composer.json index 43c32cd..a69fb84 100644 --- a/composer.json +++ b/composer.json @@ -7,46 +7,47 @@ "php": ">=8.4", "ext-ctype": "*", "ext-iconv": "*", - "api-platform/doctrine-orm": "*", - "api-platform/symfony": "*", - "doctrine/dbal": "^4.2.3", - "doctrine/doctrine-bundle": "^2.14.1", - "doctrine/doctrine-migrations-bundle": "^3.4.2", - "doctrine/orm": "^3.4.0", + "api-platform/doctrine-orm": "^4.0.0", + "api-platform/symfony": "4.1.4", + "doctrine/dbal": "^4.1", + "doctrine/doctrine-bundle": "^2.12", + "doctrine/doctrine-migrations-bundle": "^3.3.1", + "doctrine/orm": "^3.2.1", "nelmio/cors-bundle": "^2.5", - "phpdocumentor/reflection-docblock": "^5.6.2", + "phpdocumentor/reflection-docblock": "^5.6", "phpstan/phpdoc-parser": "^1.33", "psr/clock": "^1.0", - "symfony/asset": "7.3.*", - "symfony/console": "7.3.*", - "symfony/dotenv": "7.3.*", - "symfony/expression-language": "7.3.*", - "symfony/flex": "^2.7.1", - "symfony/form": "7.3.*", - "symfony/framework-bundle": "7.3.*", - "symfony/property-access": "7.3.*", - "symfony/property-info": "7.3.*", - "symfony/runtime": "7.3.*", - "symfony/security-bundle": "7.3.*", - "symfony/security-csrf": "7.3.*", - "symfony/serializer": "7.3.*", - "symfony/twig-bundle": "7.3.*", - "symfony/uid": "7.3.*", - "symfony/validator": "7.3.*", - "symfony/yaml": "7.3.*" + "symfony/asset": "7.2.*", + "symfony/console": "7.1.*", + "symfony/dotenv": "7.1.*", + "symfony/expression-language": "7.2.*", + "symfony/flex": "^2.4.6", + "symfony/form": "7.1.*", + "symfony/framework-bundle": "7.1.*", + "symfony/property-access": "7.2.*", + "symfony/property-info": "7.2.*", + "symfony/runtime": "7.1.*", + "symfony/security-bundle": "7.2.*", + "symfony/security-csrf": "7.1.*", + "symfony/serializer": "7.2.*", + "symfony/twig-bundle": "7.1.*", + "symfony/uid": "7.1.*", + "symfony/validator": "7.1.*", + "symfony/yaml": "7.1.*", + "symfonycasts/tailwind-bundle": "^0.10.0" }, "require-dev": { - "doctrine/doctrine-fixtures-bundle": "^4.1", - "liip/test-fixtures-bundle": "^3.4", + "doctrine/doctrine-fixtures-bundle": "^4.0", + "liip/test-fixtures-bundle": "^3.2", "lubiana/code-quality": "^1.7.2", - "pestphp/pest": "^3.8.2", - "symfony/browser-kit": "7.3.*", - "symfony/css-selector": "7.3.*", - "symfony/http-client": "7.3.*", - "symfony/maker-bundle": "^1.63", - "symfony/stopwatch": "7.3.*", - "symfony/web-profiler-bundle": "7.3.*", - "symplify/config-transformer": "^12.4.0" + "pestphp/pest": "^3.6", + "symfony/browser-kit": "7.2.*", + "symfony/css-selector": "7.2.*", + "symfony/http-client": "7.2.*", + "symfony/maker-bundle": "^1.60", + "symfony/stopwatch": "7.2.*", + "symfony/web-profiler-bundle": "7.2.*", + "symplify/config-transformer": "^12.3.4" }, "config": { "allow-plugins": { @@ -80,13 +81,13 @@ "symfony/polyfill-php80": "*", "symfony/polyfill-php81": "*", "symfony/polyfill-php82": "*", - "symfony/polyfill-php83": "*", - "symfony/polyfill-php84": "*" + "symfony/polyfill-php83": "*" }, "scripts": { "auto-scripts": { "cache:clear": "symfony-cmd", - "assets:install %PUBLIC_DIR%": "symfony-cmd" + "assets:install %PUBLIC_DIR%": "symfony-cmd", + "importmap:install": "symfony-cmd" }, "post-install-cmd": [ "@auto-scripts" @@ -107,7 +108,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "7.3.*" + "require": "7.2.*" } } } diff --git a/composer.lock b/composer.lock index 9c27807..e06da3f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,190 +4,64 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c21233664fb5c4d25afb8a8cdc29213a", + "content-hash": "1c86a4bdee669d314840de214b23cf19", "packages": [ { - "name": "api-platform/core", - "version": "v4.1.16", + "name": "api-platform/doctrine-common", + "version": "v4.1.7", "source": { "type": "git", - "url": "https://github.com/api-platform/core.git", - "reference": "64ff50f9b7206e7ac324ea221537f753194889b3" + "url": "https://github.com/api-platform/doctrine-common.git", + "reference": "c706b23d51936ff45b45f549b81861391f967f90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/api-platform/core/zipball/64ff50f9b7206e7ac324ea221537f753194889b3", - "reference": "64ff50f9b7206e7ac324ea221537f753194889b3", + "url": "https://api.github.com/repos/api-platform/doctrine-common/zipball/c706b23d51936ff45b45f549b81861391f967f90", + "reference": "c706b23d51936ff45b45f549b81861391f967f90", "shasum": "" }, "require": { - "doctrine/inflector": "^2.0", - "php": ">=8.2", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^3.1", - "symfony/http-foundation": "^6.4 || ^7.0", - "symfony/http-kernel": "^6.4 || ^7.0", - "symfony/property-access": "^6.4 || ^7.0", - "symfony/property-info": "^6.4 || ^7.1", - "symfony/serializer": "^6.4 || ^7.0", - "symfony/translation-contracts": "^3.3", - "symfony/type-info": "^7.2", - "symfony/web-link": "^6.4 || ^7.1", - "willdurand/negotiation": "^3.1" + "api-platform/metadata": "^4.1", + "api-platform/state": "^4.1", + "doctrine/collections": "^2.1", + "doctrine/common": "^3.2.2", + "doctrine/persistence": "^3.2", + "php": ">=8.2" }, "conflict": { - "doctrine/common": "<3.2.2", - "doctrine/dbal": "<2.10", - "doctrine/mongodb-odm": "<2.4", - "doctrine/orm": "<2.14.0", - "doctrine/persistence": "<1.3", - "phpspec/prophecy": "<1.15", - "phpunit/phpunit": "<9.5", - "symfony/framework-bundle": "6.4.6 || 7.0.6", - "symfony/var-exporter": "<6.1.1" - }, - "replace": { - "api-platform/doctrine-common": "self.version", - "api-platform/doctrine-odm": "self.version", - "api-platform/doctrine-orm": "self.version", - "api-platform/documentation": "self.version", - "api-platform/elasticsearch": "self.version", - "api-platform/graphql": "self.version", - "api-platform/http-cache": "self.version", - "api-platform/hydra": "self.version", - "api-platform/json-api": "self.version", - "api-platform/json-hal": "self.version", - "api-platform/json-schema": "self.version", - "api-platform/jsonld": "self.version", - "api-platform/laravel": "self.version", - "api-platform/metadata": "self.version", - "api-platform/openapi": "self.version", - "api-platform/parameter-validator": "self.version", - "api-platform/ramsey-uuid": "self.version", - "api-platform/serializer": "self.version", - "api-platform/state": "self.version", - "api-platform/symfony": "self.version", - "api-platform/validator": "self.version" + "doctrine/persistence": "<1.3" }, "require-dev": { - "behat/behat": "^3.11", - "behat/mink": "^1.9", - "doctrine/cache": "^1.11 || ^2.1", - "doctrine/common": "^3.2.2", - "doctrine/dbal": "^4.0", - "doctrine/doctrine-bundle": "^2.11", "doctrine/mongodb-odm": "^2.10", - "doctrine/mongodb-odm-bundle": "^5.0", "doctrine/orm": "^2.17 || ^3.0", - "elasticsearch/elasticsearch": "^7.17 || ^8.4 || ^9.0", - "friends-of-behat/mink-browserkit-driver": "^1.3.1", - "friends-of-behat/mink-extension": "^2.2", - "friends-of-behat/symfony-extension": "^2.1", - "guzzlehttp/guzzle": "^6.0 || ^7.0", - "illuminate/config": "^11.0 || ^12.0", - "illuminate/contracts": "^11.0 || ^12.0", - "illuminate/database": "^11.0 || ^12.0", - "illuminate/http": "^11.0 || ^12.0", - "illuminate/pagination": "^11.0 || ^12.0", - "illuminate/routing": "^11.0 || ^12.0", - "illuminate/support": "^11.0 || ^12.0", - "jangregor/phpstan-prophecy": "^1.0", - "justinrainbow/json-schema": "^5.2.11", - "laravel/framework": "^11.0 || ^12.0", - "orchestra/testbench": "^9.1", "phpspec/prophecy-phpunit": "^2.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpdoc-parser": "^1.29 || ^2.0", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-doctrine": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "11.5.x-dev", - "psr/log": "^1.0 || ^2.0 || ^3.0", - "ramsey/uuid": "^4.7", - "ramsey/uuid-doctrine": "^2.0", - "soyuka/contexts": "^3.3.10", - "soyuka/pmu": "^0.2.0", - "soyuka/stubs-mongodb": "^1.0", - "symfony/asset": "^6.4 || ^7.0", - "symfony/browser-kit": "^6.4 || ^7.0", - "symfony/cache": "^6.4 || ^7.0", - "symfony/config": "^6.4 || ^7.0", - "symfony/console": "^6.4 || ^7.0", - "symfony/css-selector": "^6.4 || ^7.0", - "symfony/dependency-injection": "^6.4 || ^7.0", - "symfony/doctrine-bridge": "^6.4.2 || ^7.0.2", - "symfony/dom-crawler": "^6.4 || ^7.0", - "symfony/error-handler": "^6.4 || ^7.0", - "symfony/event-dispatcher": "^6.4 || ^7.0", - "symfony/expression-language": "^6.4 || ^7.0", - "symfony/finder": "^6.4 || ^7.0", - "symfony/form": "^6.4 || ^7.0", - "symfony/framework-bundle": "^6.4 || ^7.0", - "symfony/http-client": "^6.4 || ^7.0", - "symfony/intl": "^6.4 || ^7.0", - "symfony/maker-bundle": "^1.24", - "symfony/mercure-bundle": "*", - "symfony/messenger": "^6.4 || ^7.0", - "symfony/routing": "^6.4 || ^7.0", - "symfony/security-bundle": "^6.4 || ^7.0", - "symfony/security-core": "^6.4 || ^7.0", - "symfony/stopwatch": "^6.4 || ^7.0", - "symfony/string": "^6.4 || ^7.0", - "symfony/twig-bundle": "^6.4 || ^7.0", - "symfony/uid": "^6.4 || ^7.0", - "symfony/validator": "^6.4 || ^7.0", - "symfony/web-profiler-bundle": "^6.4 || ^7.0", - "symfony/yaml": "^6.4 || ^7.0", - "twig/twig": "^1.42.3 || ^2.12 || ^3.0", - "webonyx/graphql-php": "^15.0" + "phpunit/phpunit": "^11.2" }, "suggest": { - "doctrine/mongodb-odm-bundle": "To support MongoDB. Only versions 4.0 and later are supported.", - "elasticsearch/elasticsearch": "To support Elasticsearch.", - "ocramius/package-versions": "To display the API Platform's version in the debug bar.", - "phpstan/phpdoc-parser": "To support extracting metadata from PHPDoc.", - "psr/cache-implementation": "To use metadata caching.", - "ramsey/uuid": "To support Ramsey's UUID identifiers.", - "symfony/cache": "To have metadata caching when using Symfony integration.", - "symfony/config": "To load XML configuration files.", - "symfony/expression-language": "To use authorization features.", - "symfony/http-client": "To use the HTTP cache invalidation system.", - "symfony/messenger": "To support messenger integration.", - "symfony/security": "To use authorization features.", - "symfony/twig-bundle": "To use the Swagger UI integration.", - "symfony/uid": "To support Symfony UUID/ULID identifiers.", - "symfony/web-profiler-bundle": "To use the data collector.", - "webonyx/graphql-php": "To support GraphQL." + "api-platform/graphql": "For GraphQl mercure subscriptions.", + "api-platform/http-cache": "For HTTP cache invalidation.", + "phpstan/phpdoc-parser": "For PHP documentation support.", + "symfony/config": "For XML resource configuration.", + "symfony/mercure-bundle": "For mercure updates publisher.", + "symfony/yaml": "For YAML resource configuration." }, "type": "library", "extra": { - "pmu": { - "projects": [ - "./src/*/composer.json", - "src/Doctrine/*/composer.json" - ] - }, "thanks": { "url": "https://github.com/api-platform/api-platform", "name": "api-platform/api-platform" }, "symfony": { - "require": "^6.4 || ^7.1" + "require": "^6.4 || ^7.0" }, "branch-alias": { "dev-3.4": "3.4.x-dev", - "dev-4.1": "4.1.x-dev", "dev-main": "4.2.x-dev" } }, "autoload": { - "files": [ - "src/JsonLd/HydraContext.php" - ], "psr-4": { - "ApiPlatform\\": "src/" + "ApiPlatform\\Doctrine\\Common\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -199,9 +73,954 @@ "name": "Kévin Dunglas", "email": "kevin@dunglas.fr", "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" } ], - "description": "Build a fully-featured hypermedia or GraphQL API in minutes!", + "description": "Common files used by api-platform/doctrine-orm and api-platform/doctrine-odm", + "homepage": "https://api-platform.com", + "keywords": [ + "doctrine", + "graphql", + "odm", + "orm", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/doctrine-common/tree/v4.1.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/doctrine-orm", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/doctrine-orm.git", + "reference": "4cfd9b739e82c6fb2c6f9e9c7ac2c42a1bc589d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/doctrine-orm/zipball/4cfd9b739e82c6fb2c6f9e9c7ac2c42a1bc589d2", + "reference": "4cfd9b739e82c6fb2c6f9e9c7ac2c42a1bc589d2", + "shasum": "" + }, + "require": { + "api-platform/doctrine-common": "^4.1", + "api-platform/metadata": "^4.1", + "api-platform/state": "^4.1", + "doctrine/orm": "^2.17 || ^3.0", + "php": ">=8.2", + "symfony/property-info": "^6.4 || ^7.1" + }, + "require-dev": { + "doctrine/doctrine-bundle": "^2.11", + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^11.2", + "ramsey/uuid": "^4.7", + "ramsey/uuid-doctrine": "^2.0", + "symfony/cache": "^6.4 || ^7.0", + "symfony/framework-bundle": "^6.4 || ^7.0", + "symfony/property-access": "^6.4 || ^7.0", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/uid": "^6.4 || ^7.0", + "symfony/validator": "^6.4 || ^7.0", + "symfony/yaml": "^6.4 || ^7.0" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/api-platform/api-platform", + "name": "api-platform/api-platform" + }, + "symfony": { + "require": "^6.4 || ^7.0" + }, + "branch-alias": { + "dev-3.4": "3.4.x-dev", + "dev-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/documentation", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/documentation.git", + "reference": "20334b3b29dca992e3520685f33f75f7fcba8da6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/documentation/zipball/20334b3b29dca992e3520685f33f75f7fcba8da6", + "reference": "20334b3b29dca992e3520685f33f75f7fcba8da6", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.2" + }, + "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-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.7" + }, + "time": "2025-02-28T10:08:08+00:00" + }, + { + "name": "api-platform/http-cache", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/http-cache.git", + "reference": "2eff0c4ae6320426586db4ce5dcd730f51665ea5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/http-cache/zipball/2eff0c4ae6320426586db4ce5dcd730f51665ea5", + "reference": "2eff0c4ae6320426586db4ce5dcd730f51665ea5", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "api-platform/state": "^4.1", + "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.2", + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/hydra", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/hydra.git", + "reference": "f05dbc5ed805859ef4335fd844493b10fd857046" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/hydra/zipball/f05dbc5ed805859ef4335fd844493b10fd857046", + "reference": "f05dbc5ed805859ef4335fd844493b10fd857046", + "shasum": "" + }, + "require": { + "api-platform/documentation": "^4.1", + "api-platform/json-schema": "^4.1", + "api-platform/jsonld": "^4.1", + "api-platform/metadata": "^4.1", + "api-platform/serializer": "^4.1", + "api-platform/state": "^4.1", + "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.2" + }, + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/json-schema", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/json-schema.git", + "reference": "32bf153319c1d4778f6daafe00d636508ee2c4d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/json-schema/zipball/32bf153319c1d4778f6daafe00d636508ee2c4d9", + "reference": "32bf153319c1d4778f6daafe00d636508ee2c4d9", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "php": ">=8.2", + "symfony/console": "^6.4 || ^7.0", + "symfony/property-info": "^6.4 || ^7.1", + "symfony/serializer": "^6.4 || ^7.0", + "symfony/uid": "^6.4 || ^7.0" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^11.2" + }, + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/jsonld", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/jsonld.git", + "reference": "ef2112bd65a49761efe4253bbf1ba5328e307e00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/jsonld/zipball/ef2112bd65a49761efe4253bbf1ba5328e307e00", + "reference": "ef2112bd65a49761efe4253bbf1ba5328e307e00", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "api-platform/serializer": "^4.1", + "api-platform/state": "^4.1", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.2" + }, + "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-main": "4.2.x-dev" + } + }, + "autoload": { + "files": [ + "./HydraContext.php" + ], + "psr-4": { + "ApiPlatform\\JsonLd\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "API JSON-LD support", + "homepage": "https://api-platform.com", + "keywords": [ + "Hydra", + "JSON-LD", + "api", + "graphql", + "rest" + ], + "support": { + "source": "https://github.com/api-platform/jsonld/tree/v4.1.7" + }, + "time": "2025-04-10T12:08:09+00:00" + }, + { + "name": "api-platform/metadata", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/metadata.git", + "reference": "8adff3619c680ff4cb69b77228ac62dd4e4e1cc3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/metadata/zipball/8adff3619c680ff4cb69b77228ac62dd4e4e1cc3", + "reference": "8adff3619c680ff4cb69b77228ac62dd4e4e1cc3", + "shasum": "" + }, + "require": { + "doctrine/inflector": "^1.0 || ^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.1" + }, + "require-dev": { + "api-platform/json-schema": "^4.1", + "api-platform/openapi": "^4.1", + "api-platform/state": "^4.1", + "phpspec/prophecy-phpunit": "^2.2", + "phpstan/phpdoc-parser": "^1.29 || ^2.0", + "phpunit/phpunit": "^11.2", + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/openapi", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/openapi.git", + "reference": "32e4591d18b19401f9c0aeb0965ffb178938b978" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/openapi/zipball/32e4591d18b19401f9c0aeb0965ffb178938b978", + "reference": "32e4591d18b19401f9c0aeb0965ffb178938b978", + "shasum": "" + }, + "require": { + "api-platform/json-schema": "^4.1", + "api-platform/metadata": "^4.1", + "api-platform/state": "^4.1", + "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.2" + }, + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/serializer", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/serializer.git", + "reference": "132bca30db7f0074e93e36c48af2f13f33d91958" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/serializer/zipball/132bca30db7f0074e93e36c48af2f13f33d91958", + "reference": "132bca30db7f0074e93e36c48af2f13f33d91958", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "api-platform/state": "^4.1", + "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.2", + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/state", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/state.git", + "reference": "ddae2e24bdfc83b69460662581aaa9f095523a0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/state/zipball/ddae2e24bdfc83b69460662581aaa9f095523a0d", + "reference": "ddae2e24bdfc83b69460662581aaa9f095523a0d", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "php": ">=8.2", + "psr/container": "^1.0 || ^2.0", + "symfony/http-kernel": "^6.4 || ^7.0" + }, + "require-dev": { + "api-platform/serializer": "^4.1", + "api-platform/validator": "^4.1", + "phpunit/phpunit": "^11.2", + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "api-platform/symfony", + "version": "v4.1.4", + "source": { + "type": "git", + "url": "https://github.com/api-platform/symfony.git", + "reference": "6dbe0f4bd53c9868de7171acc0a506dbdd07d429" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/symfony/zipball/6dbe0f4bd53c9868de7171acc0a506dbdd07d429", + "reference": "6dbe0f4bd53c9868de7171acc0a506dbdd07d429", + "shasum": "" + }, + "require": { + "api-platform/documentation": "^4.1", + "api-platform/http-cache": "^4.1", + "api-platform/hydra": "^4.1", + "api-platform/json-schema": "^4.1", + "api-platform/jsonld": "^4.1", + "api-platform/metadata": "^4.1", + "api-platform/openapi": "^4.1", + "api-platform/serializer": "^4.1", + "api-platform/state": "^4.1", + "api-platform/validator": "^4.1", + "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.2", + "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-main": "4.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "ApiPlatform\\Symfony\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kévin Dunglas", + "email": "kevin@dunglas.fr", + "homepage": "https://dunglas.fr" + }, + { + "name": "API Platform Community", + "homepage": "https://api-platform.com/community/contributors" + } + ], + "description": "Symfony API Platform integration", "homepage": "https://api-platform.com", "keywords": [ "Hydra", @@ -210,17 +1029,169 @@ "graphql", "hal", "jsonapi", - "laravel", "openapi", "rest", "swagger", "symfony" ], "support": { - "issues": "https://github.com/api-platform/core/issues", - "source": "https://github.com/api-platform/core/tree/v4.1.16" + "source": "https://github.com/api-platform/symfony/tree/v4.1.4" }, - "time": "2025-06-13T13:00:13+00:00" + "time": "2025-03-28T09:08:17+00:00" + }, + { + "name": "api-platform/validator", + "version": "v4.1.7", + "source": { + "type": "git", + "url": "https://github.com/api-platform/validator.git", + "reference": "a7052710c60ca2c85a10b3e1d841f71d3e316fa8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/api-platform/validator/zipball/a7052710c60ca2c85a10b3e1d841f71d3e316fa8", + "reference": "a7052710c60ca2c85a10b3e1d841f71d3e316fa8", + "shasum": "" + }, + "require": { + "api-platform/metadata": "^4.1", + "php": ">=8.2", + "symfony/web-link": "^6.4 || ^7.1" + }, + "require-dev": { + "phpspec/prophecy-phpunit": "^2.2", + "phpunit/phpunit": "^11.2", + "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-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.7" + }, + "time": "2025-04-11T09:32:56+00:00" + }, + { + "name": "composer/semver", + "version": "3.4.3", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.4.3" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2024-09-19T14:15:21+00:00" }, { "name": "doctrine/collections", @@ -308,6 +1279,97 @@ ], "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.3", @@ -464,16 +1526,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.14.1", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4" + "reference": "ca6a7350b421baf7fbdefbf9f4993292ed18effb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0a118222ab21ba05bd9f17fbaa6a3800865274f4", - "reference": "0a118222ab21ba05bd9f17fbaa6a3800865274f4", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/ca6a7350b421baf7fbdefbf9f4993292ed18effb", + "reference": "ca6a7350b421baf7fbdefbf9f4993292ed18effb", "shasum": "" }, "require": { @@ -500,9 +1562,9 @@ "require-dev": { "doctrine/annotations": "^1 || ^2", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^13", + "doctrine/coding-standard": "^12", "doctrine/deprecations": "^1.0", - "doctrine/orm": "^2.17 || ^3.1", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", "phpstan/phpstan": "2.1.1", "phpstan/phpstan-phpunit": "2.0.3", @@ -566,7 +1628,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.14.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.14.0" }, "funding": [ { @@ -582,20 +1644,20 @@ "type": "tidelift" } ], - "time": "2025-06-09T20:22:28+00:00" + "time": "2025-03-22T17:28:21+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.4.2", + "version": "3.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9" + "reference": "e858ce0f5c12b266dce7dce24834448355155da7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/5a6ac7120c2924c4c070a869d08b11ccf9e277b9", - "reference": "5a6ac7120c2924c4c070a869d08b11ccf9e277b9", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/e858ce0f5c12b266dce7dce24834448355155da7", + "reference": "e858ce0f5c12b266dce7dce24834448355155da7", "shasum": "" }, "require": { @@ -609,6 +1671,7 @@ "composer/semver": "^3.0", "doctrine/coding-standard": "^12", "doctrine/orm": "^2.6 || ^3", + "doctrine/persistence": "^2.0 || ^3", "phpstan/phpstan": "^1.4 || ^2", "phpstan/phpstan-deprecation-rules": "^1 || ^2", "phpstan/phpstan-phpunit": "^1 || ^2", @@ -651,7 +1714,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.2" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.1" }, "funding": [ { @@ -667,7 +1730,7 @@ "type": "tidelift" } ], - "time": "2025-03-11T17:36:26+00:00" + "time": "2025-01-27T22:48:22+00:00" }, { "name": "doctrine/event-manager", @@ -1103,16 +2166,16 @@ }, { "name": "doctrine/orm", - "version": "3.4.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8" + "reference": "c9557c588b3a70ed93caff069d0aa75737f25609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/4664373bd0668d71b40cc368b950de95e1dba2f8", - "reference": "4664373bd0668d71b40cc368b950de95e1dba2f8", + "url": "https://api.github.com/repos/doctrine/orm/zipball/c9557c588b3a70ed93caff069d0aa75737f25609", + "reference": "c9557c588b3a70ed93caff069d0aa75737f25609", "shasum": "" }, "require": { @@ -1132,7 +2195,7 @@ "symfony/var-exporter": "^6.3.9 || ^7.0" }, "require-dev": { - "doctrine/coding-standard": "^13.0", + "doctrine/coding-standard": "^12.0", "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", @@ -1140,7 +2203,7 @@ "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.4.0", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.12.0", + "squizlabs/php_codesniffer": "3.7.2", "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { @@ -1187,27 +2250,27 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.4.0" + "source": "https://github.com/doctrine/orm/tree/3.3.2" }, - "time": "2025-06-14T11:47:14+00:00" + "time": "2025-02-04T19:43:15+00:00" }, { "name": "doctrine/persistence", - "version": "4.0.0", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa" + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/45004aca79189474f113cbe3a53847c2115a55fa", - "reference": "45004aca79189474f113cbe3a53847c2115a55fa", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", + "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", "shasum": "" }, "require": { "doctrine/event-manager": "^1 || ^2", - "php": "^8.1", + "php": "^7.2 || ^8.0", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, "conflict": { @@ -1215,10 +2278,11 @@ }, "require-dev": { "doctrine/coding-standard": "^12", + "doctrine/common": "^3.0", "phpstan/phpstan": "1.12.7", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^9.6", + "phpunit/phpunit": "^8.5.38 || ^9.5", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", @@ -1268,7 +2332,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.0.0" + "source": "https://github.com/doctrine/persistence/tree/3.4.0" }, "funding": [ { @@ -1284,7 +2348,7 @@ "type": "tidelift" } ], - "time": "2024-11-01T21:49:07+00:00" + "time": "2024-10-30T19:48:12+00:00" }, { "name": "doctrine/sql-formatter", @@ -1933,16 +2997,16 @@ }, { "name": "symfony/asset", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/asset.git", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b" + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/asset/zipball/56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", - "reference": "56c4d9f759247c4e07d8549e3baf7493cb9c3e4b", + "url": "https://api.github.com/repos/symfony/asset/zipball/cb926cd59fefa1f9b4900b3695f0f846797ba5c0", + "reference": "cb926cd59fefa1f9b4900b3695f0f846797ba5c0", "shasum": "" }, "require": { @@ -1982,7 +3046,7 @@ "description": "Manages URL generation and versioning of web assets such as CSS stylesheets, JavaScript files and image files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/asset/tree/v7.3.0" + "source": "https://github.com/symfony/asset/tree/v7.2.0" }, "funding": [ { @@ -1998,27 +3062,106 @@ "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2024-10-25T15:15:23+00:00" }, { - "name": "symfony/cache", - "version": "v7.3.0", + "name": "symfony/asset-mapper", + "version": "v7.2.5", "source": { "type": "git", - "url": "https://github.com/symfony/cache.git", - "reference": "c4b217b578c11ec764867aa0c73e602c602965de" + "url": "https://github.com/symfony/asset-mapper.git", + "reference": "6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/c4b217b578c11ec764867aa0c73e602c602965de", - "reference": "c4b217b578c11ec764867aa0c73e602c602965de", + "url": "https://api.github.com/repos/symfony/asset-mapper/zipball/6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8", + "reference": "6428e4b6d8cff9c5fe6f40ddbee4c9f6bfdaa0b8", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/filesystem": "^7.1", + "symfony/http-client": "^6.4|^7.0" + }, + "conflict": { + "symfony/framework-bundle": "<6.4" + }, + "require-dev": { + "symfony/asset": "^6.4|^7.0", + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/event-dispatcher-contracts": "^3.0", + "symfony/finder": "^6.4|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/web-link": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\AssetMapper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Maps directories of assets & makes them available in a public directory with versioned filenames.", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/asset-mapper/tree/v7.2.5" + }, + "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-26T11:29:07+00:00" + }, + { + "name": "symfony/cache", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/9131e3018872d2ebb6fe8a9a4d6631273513d42c", + "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c", "shasum": "" }, "require": { "php": ">=8.2", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^3.6", + "symfony/cache-contracts": "^2.5|^3", "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/service-contracts": "^2.5|^3", "symfony/var-exporter": "^6.4|^7.0" @@ -2080,7 +3223,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.3.0" + "source": "https://github.com/symfony/cache/tree/v7.2.5" }, "funding": [ { @@ -2096,20 +3239,20 @@ "type": "tidelift" } ], - "time": "2025-05-06T19:00:13+00:00" + "time": "2025-03-25T15:54:33+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.6.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868" + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/5d68a57d66910405e5c0b63d6f0af941e66fc868", - "reference": "5d68a57d66910405e5c0b63d6f0af941e66fc868", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", + "reference": "15a4f8e5cd3bce9aeafc882b1acab39ec8de2c1b", "shasum": "" }, "require": { @@ -2123,7 +3266,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.5-dev" } }, "autoload": { @@ -2156,7 +3299,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.1" }, "funding": [ { @@ -2172,11 +3315,11 @@ "type": "tidelift" } ], - "time": "2025-03-13T15:25:07+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", @@ -2230,7 +3373,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v7.2.0" }, "funding": [ { @@ -2250,16 +3393,16 @@ }, { "name": "symfony/config", - "version": "v7.3.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "ba62ae565f1327c2f6366726312ed828c85853bc" + "reference": "7716594aaae91d9141be080240172a92ecca4d44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/ba62ae565f1327c2f6366726312ed828c85853bc", - "reference": "ba62ae565f1327c2f6366726312ed828c85853bc", + "url": "https://api.github.com/repos/symfony/config/zipball/7716594aaae91d9141be080240172a92ecca4d44", + "reference": "7716594aaae91d9141be080240172a92ecca4d44", "shasum": "" }, "require": { @@ -2305,7 +3448,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.3.0" + "source": "https://github.com/symfony/config/tree/v7.2.3" }, "funding": [ { @@ -2321,28 +3464,27 @@ "type": "tidelift" } ], - "time": "2025-05-15T09:04:05+00:00" + "time": "2025-01-22T12:07:01+00:00" }, { "name": "symfony/console", - "version": "v7.3.0", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44" + "reference": "bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/66c1440edf6f339fd82ed6c7caa76cb006211b44", - "reference": "66c1440edf6f339fd82ed6c7caa76cb006211b44", + "url": "https://api.github.com/repos/symfony/console/zipball/bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7", + "reference": "bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" + "symfony/string": "^6.4|^7.0" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -2399,7 +3541,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.0" + "source": "https://github.com/symfony/console/tree/v7.1.10" }, "funding": [ { @@ -2415,20 +3557,20 @@ "type": "tidelift" } ], - "time": "2025-05-24T10:34:04+00:00" + "time": "2024-12-09T07:30:10+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732" + "reference": "58ab71379f14a741755717cece2868bf41ed45d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", - "reference": "f64a8f3fa7d4ad5e85de1b128a0e03faed02b732", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/58ab71379f14a741755717cece2868bf41ed45d8", + "reference": "58ab71379f14a741755717cece2868bf41ed45d8", "shasum": "" }, "require": { @@ -2479,7 +3621,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.3.0" + "source": "https://github.com/symfony/dependency-injection/tree/v7.2.5" }, "funding": [ { @@ -2495,20 +3637,20 @@ "type": "tidelift" } ], - "time": "2025-05-19T13:28:56+00:00" + "time": "2025-03-13T12:21:46+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.6.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -2521,7 +3663,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.5-dev" } }, "autoload": { @@ -2546,7 +3688,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" }, "funding": [ { @@ -2562,20 +3704,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/doctrine-bridge", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19" + "reference": "f8a298bbb8eaca08d787bf4d4c74728f1cf98922" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/1df0cb5ce77ddfa0bdbca410009e3822567a6a19", - "reference": "1df0cb5ce77ddfa0bdbca410009e3822567a6a19", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/f8a298bbb8eaca08d787bf4d4c74728f1cf98922", + "reference": "f8a298bbb8eaca08d787bf4d4c74728f1cf98922", "shasum": "" }, "require": { @@ -2655,7 +3797,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.3.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.2.5" }, "funding": [ { @@ -2671,20 +3813,20 @@ "type": "tidelift" } ], - "time": "2025-05-25T10:32:38+00:00" + "time": "2025-03-25T15:54:33+00:00" }, { "name": "symfony/dotenv", - "version": "v7.3.0", + "version": "v7.1.9", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "28347a897771d0c28e99b75166dd2689099f3045" + "reference": "245d1afe223664d2276afb75177d8988c328fb78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/28347a897771d0c28e99b75166dd2689099f3045", - "reference": "28347a897771d0c28e99b75166dd2689099f3045", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/245d1afe223664d2276afb75177d8988c328fb78", + "reference": "245d1afe223664d2276afb75177d8988c328fb78", "shasum": "" }, "require": { @@ -2729,7 +3871,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v7.3.0" + "source": "https://github.com/symfony/dotenv/tree/v7.1.9" }, "funding": [ { @@ -2745,20 +3887,20 @@ "type": "tidelift" } ], - "time": "2024-11-27T11:18:42+00:00" + "time": "2024-11-27T11:17:28+00:00" }, { "name": "symfony/error-handler", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83" + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/cf68d225bc43629de4ff54778029aee6dc191b83", - "reference": "cf68d225bc43629de4ff54778029aee6dc191b83", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", + "reference": "102be5e6a8e4f4f3eb3149bcbfa33a80d1ee374b", "shasum": "" }, "require": { @@ -2771,11 +3913,9 @@ "symfony/http-kernel": "<6.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/webpack-encore-bundle": "^1.0|^2.0" + "symfony/serializer": "^6.4|^7.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -2806,7 +3946,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.3.0" + "source": "https://github.com/symfony/error-handler/tree/v7.2.5" }, "funding": [ { @@ -2822,20 +3962,20 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-03-03T07:12:39+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { @@ -2886,7 +4026,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -2902,20 +4042,20 @@ "type": "tidelift" } ], - "time": "2025-04-22T09:11:45+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.6.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -2929,7 +4069,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.5-dev" } }, "autoload": { @@ -2962,7 +4102,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -2978,11 +4118,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/expression-language", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", @@ -3026,7 +4166,7 @@ "description": "Provides an engine that can compile and evaluate expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/expression-language/tree/v7.3.0" + "source": "https://github.com/symfony/expression-language/tree/v7.2.0" }, "funding": [ { @@ -3046,7 +4186,7 @@ }, { "name": "symfony/filesystem", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -3092,7 +4232,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.0" + "source": "https://github.com/symfony/filesystem/tree/v7.2.0" }, "funding": [ { @@ -3112,16 +4252,16 @@ }, { "name": "symfony/finder", - "version": "v7.3.0", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" + "reference": "87a71856f2f56e4100373e92529eed3171695cfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", + "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", + "reference": "87a71856f2f56e4100373e92529eed3171695cfb", "shasum": "" }, "require": { @@ -3156,7 +4296,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.0" + "source": "https://github.com/symfony/finder/tree/v7.2.2" }, "funding": [ { @@ -3172,20 +4312,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:26+00:00" + "time": "2024-12-30T19:00:17+00:00" }, { "name": "symfony/flex", - "version": "v2.7.1", + "version": "v2.5.0", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "4ae50d368415a06820739e54d38a4a29d6df9155" + "reference": "8ce1acd9842abe0e9b4c4a0bd3f259859516c018" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/4ae50d368415a06820739e54d38a4a29d6df9155", - "reference": "4ae50d368415a06820739e54d38a4a29d6df9155", + "url": "https://api.github.com/repos/symfony/flex/zipball/8ce1acd9842abe0e9b4c4a0bd3f259859516c018", + "reference": "8ce1acd9842abe0e9b4c4a0bd3f259859516c018", "shasum": "" }, "require": { @@ -3224,7 +4364,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.7.1" + "source": "https://github.com/symfony/flex/tree/v2.5.0" }, "funding": [ { @@ -3240,27 +4380,27 @@ "type": "tidelift" } ], - "time": "2025-05-28T14:22:54+00:00" + "time": "2025-03-03T07:50:46+00:00" }, { "name": "symfony/form", - "version": "v7.3.0", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/form.git", - "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409" + "reference": "7a48dda96fe16711fc042df38ca1a7dd4d9d6387" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/9ee0a686d9256b8f780a87b5ff78d4ddee025409", - "reference": "9ee0a686d9256b8f780a87b5ff78d4ddee025409", + "url": "https://api.github.com/repos/symfony/form/zipball/7a48dda96fe16711fc042df38ca1a7dd4d9d6387", + "reference": "7a48dda96fe16711fc042df38ca1a7dd4d9d6387", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/options-resolver": "^7.3", + "symfony/options-resolver": "^6.4|^7.0", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-icu": "^1.21", "symfony/polyfill-mbstring": "~1.0", @@ -3321,7 +4461,7 @@ "description": "Allows to easily create, process and reuse HTML forms", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/form/tree/v7.3.0" + "source": "https://github.com/symfony/form/tree/v7.1.6" }, "funding": [ { @@ -3337,20 +4477,20 @@ "type": "tidelift" } ], - "time": "2025-05-04T12:58:53+00:00" + "time": "2024-10-09T08:46:59+00:00" }, { "name": "symfony/framework-bundle", - "version": "v7.3.0", + "version": "v7.1.11", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6" + "reference": "1eae7a4e095a2a3851cb41ac2aea9aa60fba1df8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/030646f55fe18501a43edab22a8ad250d8ec42a6", - "reference": "030646f55fe18501a43edab22a8ad250d8ec42a6", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1eae7a4e095a2a3851cb41ac2aea9aa60fba1df8", + "reference": "1eae7a4e095a2a3851cb41ac2aea9aa60fba1df8", "shasum": "" }, "require": { @@ -3358,15 +4498,15 @@ "ext-xml": "*", "php": ">=8.2", "symfony/cache": "^6.4|^7.0", - "symfony/config": "^7.3", - "symfony/dependency-injection": "^7.2", + "symfony/config": "^6.4|^7.0", + "symfony/dependency-injection": "^7.1.5", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^7.3", + "symfony/error-handler": "^6.4|^7.0", "symfony/event-dispatcher": "^6.4|^7.0", "symfony/filesystem": "^7.1", "symfony/finder": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", - "symfony/http-kernel": "^7.2", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", "symfony/polyfill-mbstring": "~1.0", "symfony/routing": "^6.4|^7.0" }, @@ -3382,27 +4522,24 @@ "symfony/dotenv": "<6.4", "symfony/form": "<6.4", "symfony/http-client": "<6.4", - "symfony/json-streamer": ">=7.4", "symfony/lock": "<6.4", "symfony/mailer": "<6.4", "symfony/messenger": "<6.4", "symfony/mime": "<6.4", - "symfony/object-mapper": ">=7.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", "symfony/runtime": "<6.4.13|>=7.0,<7.1.6", "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", "symfony/security-core": "<6.4", - "symfony/security-csrf": "<7.2", - "symfony/serializer": "<7.2.5", + "symfony/security-csrf": "<6.4", + "symfony/serializer": "<6.4", "symfony/stopwatch": "<6.4", - "symfony/translation": "<7.3", + "symfony/translation": "<6.4", "symfony/twig-bridge": "<6.4", "symfony/twig-bundle": "<6.4", "symfony/validator": "<6.4", "symfony/web-profiler-bundle": "<6.4", - "symfony/webhook": "<7.2", - "symfony/workflow": "<7.3.0-beta2" + "symfony/workflow": "<6.4" }, "require-dev": { "doctrine/persistence": "^1.3|^2|^3", @@ -3421,13 +4558,11 @@ "symfony/form": "^6.4|^7.0", "symfony/html-sanitizer": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", - "symfony/json-streamer": "7.3.*", "symfony/lock": "^6.4|^7.0", "symfony/mailer": "^6.4|^7.0", "symfony/messenger": "^6.4|^7.0", "symfony/mime": "^6.4|^7.0", "symfony/notifier": "^6.4|^7.0", - "symfony/object-mapper": "^v7.3.0-beta2", "symfony/polyfill-intl-icu": "~1.0", "symfony/process": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", @@ -3435,19 +4570,18 @@ "symfony/scheduler": "^6.4.4|^7.0.4", "symfony/security-bundle": "^6.4|^7.0", "symfony/semaphore": "^6.4|^7.0", - "symfony/serializer": "^7.2.5", + "symfony/serializer": "^6.4|^7.0", "symfony/stopwatch": "^6.4|^7.0", "symfony/string": "^6.4|^7.0", - "symfony/translation": "^7.3", + "symfony/translation": "^6.4|^7.0", "symfony/twig-bundle": "^6.4|^7.0", "symfony/type-info": "^7.1", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/web-link": "^6.4|^7.0", - "symfony/webhook": "^7.2", - "symfony/workflow": "^7.3", + "symfony/workflow": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", - "twig/twig": "^3.12" + "twig/twig": "^3.0.4" }, "type": "symfony-bundle", "autoload": { @@ -3475,7 +4609,7 @@ "description": "Provides a tight integration between Symfony components and the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/framework-bundle/tree/v7.3.0" + "source": "https://github.com/symfony/framework-bundle/tree/v7.1.11" }, "funding": [ { @@ -3491,20 +4625,193 @@ "type": "tidelift" } ], - "time": "2025-05-28T06:56:42+00:00" + "time": "2025-01-29T07:13:42+00:00" }, { - "name": "symfony/http-foundation", - "version": "v7.3.0", + "name": "symfony/http-client", + "version": "v7.2.4", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "4236baf01609667d53b20371486228231eb135fd" + "url": "https://github.com/symfony/http-client.git", + "reference": "78981a2ffef6437ed92d4d7e2a86a82f256c6dc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4236baf01609667d53b20371486228231eb135fd", - "reference": "4236baf01609667d53b20371486228231eb135fd", + "url": "https://api.github.com/repos/symfony/http-client/zipball/78981a2ffef6437ed92d4d7e2a86a82f256c6dc6", + "reference": "78981a2ffef6437ed92d4d7e2a86a82f256c6dc6", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "~3.4.4|^3.5.2", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "amphp/amp": "<2.5", + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "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", + "psr/http-client": "^1.0", + "symfony/amphp-http-client-meta": "^1.0|^2.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v7.2.4" + }, + "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-02-13T10:27:23+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ee8d807ab20fcb51267fdace50fbe3494c31e645", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-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.5.2" + }, + "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-12-07T08:49:48+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v7.2.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/371272aeb6286f8135e028ca535f8e4d6f114126", + "reference": "371272aeb6286f8135e028ca535f8e4d6f114126", "shasum": "" }, "require": { @@ -3521,7 +4828,6 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", - "symfony/clock": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -3554,7 +4860,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v7.2.5" }, "funding": [ { @@ -3570,20 +4876,20 @@ "type": "tidelift" } ], - "time": "2025-05-12T14:48:23+00:00" + "time": "2025-03-25T15:54:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f" + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/ac7b8e163e8c83dce3abcc055a502d4486051a9f", - "reference": "ac7b8e163e8c83dce3abcc055a502d4486051a9f", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b1fe91bc1fa454a806d3f98db4ba826eb9941a54", + "reference": "b1fe91bc1fa454a806d3f98db4ba826eb9941a54", "shasum": "" }, "require": { @@ -3591,8 +4897,8 @@ "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^7.3", - "symfony/http-foundation": "^7.3", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/http-foundation": "^6.4|^7.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -3668,7 +4974,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v7.2.5" }, "funding": [ { @@ -3684,20 +4990,20 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:47:32+00:00" + "time": "2025-03-28T13:32:50+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca" + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca", - "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", "shasum": "" }, "require": { @@ -3735,7 +5041,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" }, "funding": [ { @@ -3751,20 +5057,20 @@ "type": "tidelift" } ], - "time": "2025-04-04T13:12:05+00:00" + "time": "2024-11-20T11:17:29+00:00" }, { "name": "symfony/password-hasher", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/password-hasher.git", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3" + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/password-hasher/zipball/31fbe66af859582a20b803f38be96be8accdf2c3", - "reference": "31fbe66af859582a20b803f38be96be8accdf2c3", + "url": "https://api.github.com/repos/symfony/password-hasher/zipball/d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", + "reference": "d8bd3d66d074c0acba1214a0d42f5941a8e1e94d", "shasum": "" }, "require": { @@ -3807,7 +5113,7 @@ "password" ], "support": { - "source": "https://github.com/symfony/password-hasher/tree/v7.3.0" + "source": "https://github.com/symfony/password-hasher/tree/v7.2.0" }, "funding": [ { @@ -3823,11 +5129,11 @@ "type": "tidelift" } ], - "time": "2025-02-04T08:22:58+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", @@ -3885,7 +5191,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3905,16 +5211,16 @@ }, { "name": "symfony/polyfill-intl-icu", - "version": "v1.32.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "763d2a91fea5681509ca01acbc1c5e450d127811" + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/763d2a91fea5681509ca01acbc1c5e450d127811", - "reference": "763d2a91fea5681509ca01acbc1c5e450d127811", + "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", + "reference": "d80a05e9904d2c2b9b95929f3e4b5d3a8f418d78", "shasum": "" }, "require": { @@ -3969,7 +5275,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.31.0" }, "funding": [ { @@ -3985,11 +5291,11 @@ "type": "tidelift" } ], - "time": "2024-12-21T18:38:29+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -4050,7 +5356,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -4070,20 +5376,19 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -4131,7 +5436,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -4147,11 +5452,87 @@ "type": "tidelift" } ], - "time": "2024-12-23T08:48:59+00:00" + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php84", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "reference": "e5493eb51311ab0b1cc2243416613f06ed8f18bd", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php84\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php84/tree/v1.31.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-09T12:04:04+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.32.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -4210,7 +5591,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.31.0" }, "funding": [ { @@ -4229,17 +5610,78 @@ "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/property-access", - "version": "v7.3.0", + "name": "symfony/process", + "version": "v7.2.5", "source": { "type": "git", - "url": "https://github.com/symfony/property-access.git", - "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b" + "url": "https://github.com/symfony/process.git", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/3bcf43665d6aff90547b005348e1e351f4e2174b", - "reference": "3bcf43665d6aff90547b005348e1e351f4e2174b", + "url": "https://api.github.com/repos/symfony/process/zipball/87b7c93e57df9d8e39a093d32587702380ff045d", + "reference": "87b7c93e57df9d8e39a093d32587702380ff045d", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Executes commands in sub-processes", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/process/tree/v7.2.5" + }, + "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-13T12:21:46+00:00" + }, + { + "name": "symfony/property-access", + "version": "v7.2.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/property-access.git", + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/property-access/zipball/b28732e315d81fbec787f838034de7d6c9b2b902", + "reference": "b28732e315d81fbec787f838034de7d6c9b2b902", "shasum": "" }, "require": { @@ -4286,7 +5728,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.0" + "source": "https://github.com/symfony/property-access/tree/v7.2.3" }, "funding": [ { @@ -4302,25 +5744,24 @@ "type": "tidelift" } ], - "time": "2025-05-10T11:59:09+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "200d230d8553610ada73ac557501dc4609aad31f" + "reference": "f00fd9685ecdbabe82ca25c7b739ce7bba99302c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/200d230d8553610ada73ac557501dc4609aad31f", - "reference": "200d230d8553610ada73ac557501dc4609aad31f", + "url": "https://api.github.com/repos/symfony/property-info/zipball/f00fd9685ecdbabe82ca25c7b739ce7bba99302c", + "reference": "f00fd9685ecdbabe82ca25c7b739ce7bba99302c", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/string": "^6.4|^7.0", "symfony/type-info": "~7.1.9|^7.2.2" }, @@ -4372,7 +5813,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.0" + "source": "https://github.com/symfony/property-info/tree/v7.2.5" }, "funding": [ { @@ -4388,20 +5829,20 @@ "type": "tidelift" } ], - "time": "2025-04-04T13:12:05+00:00" + "time": "2025-03-06T16:27:19+00:00" }, { "name": "symfony/routing", - "version": "v7.3.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8e213820c5fea844ecea29203d2a308019007c15" + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8e213820c5fea844ecea29203d2a308019007c15", - "reference": "8e213820c5fea844ecea29203d2a308019007c15", + "url": "https://api.github.com/repos/symfony/routing/zipball/ee9a67edc6baa33e5fae662f94f91fd262930996", + "reference": "ee9a67edc6baa33e5fae662f94f91fd262930996", "shasum": "" }, "require": { @@ -4453,7 +5894,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.3.0" + "source": "https://github.com/symfony/routing/tree/v7.2.3" }, "funding": [ { @@ -4469,20 +5910,20 @@ "type": "tidelift" } ], - "time": "2025-05-24T20:43:28+00:00" + "time": "2025-01-17T10:56:55+00:00" }, { "name": "symfony/runtime", - "version": "v7.3.0", + "version": "v7.1.7", "source": { "type": "git", "url": "https://github.com/symfony/runtime.git", - "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a" + "reference": "9889783c17e8a68fa5e88c8e8a1a85e802558dba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/runtime/zipball/fda552ee63dce9f3365f9c397efe7a80c8abac0a", - "reference": "fda552ee63dce9f3365f9c397efe7a80c8abac0a", + "url": "https://api.github.com/repos/symfony/runtime/zipball/9889783c17e8a68fa5e88c8e8a1a85e802558dba", + "reference": "9889783c17e8a68fa5e88c8e8a1a85e802558dba", "shasum": "" }, "require": { @@ -4532,7 +5973,7 @@ "runtime" ], "support": { - "source": "https://github.com/symfony/runtime/tree/v7.3.0" + "source": "https://github.com/symfony/runtime/tree/v7.1.7" }, "funding": [ { @@ -4548,20 +5989,20 @@ "type": "tidelift" } ], - "time": "2025-04-06T16:01:50+00:00" + "time": "2024-11-05T16:45:54+00:00" }, { "name": "symfony/security-bundle", - "version": "v7.3.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb" + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/61e74333f9ee109aefbd07eeb148d42c88faf6bb", - "reference": "61e74333f9ee109aefbd07eeb148d42c88faf6bb", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/721de227035c6e4c322fb7dd4839586d58bc0cf5", + "reference": "721de227035c6e4c322fb7dd4839586d58bc0cf5", "shasum": "" }, "require": { @@ -4569,15 +6010,15 @@ "ext-xml": "*", "php": ">=8.2", "symfony/clock": "^6.4|^7.0", - "symfony/config": "^7.3", + "symfony/config": "^6.4|^7.0", "symfony/dependency-injection": "^6.4.11|^7.1.4", "symfony/event-dispatcher": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/password-hasher": "^6.4|^7.0", - "symfony/security-core": "^7.3", + "symfony/security-core": "^7.2", "symfony/security-csrf": "^6.4|^7.0", - "symfony/security-http": "^7.3", + "symfony/security-http": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4638,7 +6079,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v7.3.0" + "source": "https://github.com/symfony/security-bundle/tree/v7.2.3" }, "funding": [ { @@ -4654,20 +6095,20 @@ "type": "tidelift" } ], - "time": "2025-05-15T13:29:14+00:00" + "time": "2025-01-07T09:39:55+00:00" }, { "name": "symfony/security-core", - "version": "v7.3.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb" + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", - "reference": "ea9789fa09c6cbb16b345bcf3a718b8ada8affdb", + "url": "https://api.github.com/repos/symfony/security-core/zipball/466784ffcd0b5a16e05394335897f790b17d07e4", + "reference": "466784ffcd0b5a16e05394335897f790b17d07e4", "shasum": "" }, "require": { @@ -4725,7 +6166,7 @@ "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-core/tree/v7.3.0" + "source": "https://github.com/symfony/security-core/tree/v7.2.3" }, "funding": [ { @@ -4741,20 +6182,20 @@ "type": "tidelift" } ], - "time": "2025-05-26T10:15:06+00:00" + "time": "2025-01-27T11:08:17+00:00" }, { "name": "symfony/security-csrf", - "version": "v7.3.0", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3" + "reference": "23b460d3447fd61970e0ed5ec7a0301296a17f06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/2b4b0c46c901729e4e90719eacd980381f53e0a3", - "reference": "2b4b0c46c901729e4e90719eacd980381f53e0a3", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/23b460d3447fd61970e0ed5ec7a0301296a17f06", + "reference": "23b460d3447fd61970e0ed5ec7a0301296a17f06", "shasum": "" }, "require": { @@ -4765,9 +6206,7 @@ "symfony/http-foundation": "<6.4" }, "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0" + "symfony/http-foundation": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -4795,7 +6234,7 @@ "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-csrf/tree/v7.3.0" + "source": "https://github.com/symfony/security-csrf/tree/v7.1.6" }, "funding": [ { @@ -4811,20 +6250,20 @@ "type": "tidelift" } ], - "time": "2025-01-02T18:42:10+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/security-http", - "version": "v7.3.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "8658634cc002096210c6227ec87a300dc647f88f" + "reference": "8478e95e273f8daa23bf4860dbad2a09d3fb3722" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/8658634cc002096210c6227ec87a300dc647f88f", - "reference": "8658634cc002096210c6227ec87a300dc647f88f", + "url": "https://api.github.com/repos/symfony/security-http/zipball/8478e95e273f8daa23bf4860dbad2a09d3fb3722", + "reference": "8478e95e273f8daa23bf4860dbad2a09d3fb3722", "shasum": "" }, "require": { @@ -4834,7 +6273,7 @@ "symfony/http-kernel": "^6.4|^7.0", "symfony/polyfill-mbstring": "~1.0", "symfony/property-access": "^6.4|^7.0", - "symfony/security-core": "^7.3", + "symfony/security-core": "^7.2", "symfony/service-contracts": "^2.5|^3" }, "conflict": { @@ -4883,7 +6322,7 @@ "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-http/tree/v7.3.0" + "source": "https://github.com/symfony/security-http/tree/v7.2.4" }, "funding": [ { @@ -4899,20 +6338,20 @@ "type": "tidelift" } ], - "time": "2025-05-26T10:15:06+00:00" + "time": "2025-02-11T16:46:20+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb" + "reference": "d8b75b2c8144c29ac43b235738411f7cca6d584d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/2d86f81b1c506d7e1578789f93280dab4b8411bb", - "reference": "2d86f81b1c506d7e1578789f93280dab4b8411bb", + "url": "https://api.github.com/repos/symfony/serializer/zipball/d8b75b2c8144c29ac43b235738411f7cca6d584d", + "reference": "d8b75b2c8144c29ac43b235738411f7cca6d584d", "shasum": "" }, "require": { @@ -4981,7 +6420,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.3.0" + "source": "https://github.com/symfony/serializer/tree/v7.2.5" }, "funding": [ { @@ -4997,20 +6436,20 @@ "type": "tidelift" } ], - "time": "2025-05-12T14:48:23+00:00" + "time": "2025-03-24T12:37:32+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -5028,7 +6467,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.5-dev" } }, "autoload": { @@ -5064,7 +6503,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -5080,11 +6519,11 @@ "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -5126,7 +6565,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" }, "funding": [ { @@ -5146,16 +6585,16 @@ }, { "name": "symfony/string", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -5213,7 +6652,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.0" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -5229,20 +6668,20 @@ "type": "tidelift" } ], - "time": "2025-04-20T20:19:01+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.6.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", - "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -5255,7 +6694,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.5-dev" } }, "autoload": { @@ -5291,7 +6730,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -5307,27 +6746,27 @@ "type": "tidelift" } ], - "time": "2024-09-27T08:32:26+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/twig-bridge", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "082eb15d8a4f9afee0acc4709fbe3aaf26d48891" + "reference": "b1942d5515b7f0a18e16fd668a04ea952db2b0f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/082eb15d8a4f9afee0acc4709fbe3aaf26d48891", - "reference": "082eb15d8a4f9afee0acc4709fbe3aaf26d48891", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/b1942d5515b7f0a18e16fd668a04ea952db2b0f2", + "reference": "b1942d5515b7f0a18e16fd668a04ea952db2b0f2", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/translation-contracts": "^2.5|^3", - "twig/twig": "^3.21" + "twig/twig": "^3.12" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.2.2", @@ -5354,7 +6793,7 @@ "symfony/finder": "^6.4|^7.0", "symfony/form": "^6.4.20|^7.2.5", "symfony/html-sanitizer": "^6.4|^7.0", - "symfony/http-foundation": "^7.3", + "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", "symfony/mime": "^6.4|^7.0", @@ -5368,13 +6807,12 @@ "symfony/serializer": "^6.4.3|^7.0.3", "symfony/stopwatch": "^6.4|^7.0", "symfony/translation": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", "symfony/web-link": "^6.4|^7.0", "symfony/workflow": "^6.4|^7.0", "symfony/yaml": "^6.4|^7.0", - "twig/cssinliner-extra": "^3", - "twig/inky-extra": "^3", - "twig/markdown-extra": "^3" + "twig/cssinliner-extra": "^2.12|^3", + "twig/inky-extra": "^2.12|^3", + "twig/markdown-extra": "^2.12|^3" }, "type": "symfony-bridge", "autoload": { @@ -5402,7 +6840,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.3.0" + "source": "https://github.com/symfony/twig-bridge/tree/v7.2.5" }, "funding": [ { @@ -5418,31 +6856,31 @@ "type": "tidelift" } ], - "time": "2025-05-19T13:28:56+00:00" + "time": "2025-03-28T13:15:09+00:00" }, { "name": "symfony/twig-bundle", - "version": "v7.3.0", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b" + "reference": "af902314a71fb412ae412094f7e1d7e49594507b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/0ace7d92b92437a5ad59fad457af7dc2475db89b", - "reference": "0ace7d92b92437a5ad59fad457af7dc2475db89b", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/af902314a71fb412ae412094f7e1d7e49594507b", + "reference": "af902314a71fb412ae412094f7e1d7e49594507b", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", + "symfony/config": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/http-foundation": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", - "symfony/twig-bridge": "^7.3", - "twig/twig": "^3.12" + "symfony/twig-bridge": "^6.4|^7.0", + "twig/twig": "^3.0.4" }, "conflict": { "symfony/framework-bundle": "<6.4", @@ -5486,7 +6924,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v7.3.0" + "source": "https://github.com/symfony/twig-bundle/tree/v7.1.6" }, "funding": [ { @@ -5502,32 +6940,28 @@ "type": "tidelift" } ], - "time": "2025-05-14T11:51:37+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/type-info", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786" + "reference": "c4824a6b658294c828e609d3d8dbb4e87f6a375d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/bc9af22e25796d98078f69c0749ab3a9d3454786", - "reference": "bc9af22e25796d98078f69c0749ab3a9d3454786", + "url": "https://api.github.com/repos/symfony/type-info/zipball/c4824a6b658294c828e609d3d8dbb4e87f6a375d", + "reference": "c4824a6b658294c828e609d3d8dbb4e87f6a375d", "shasum": "" }, "require": { "php": ">=8.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" - }, - "conflict": { - "phpstan/phpdoc-parser": "<1.30" + "psr/container": "^1.1|^2.0" }, "require-dev": { - "phpstan/phpdoc-parser": "^1.30|^2.0" + "phpstan/phpdoc-parser": "^1.0|^2.0" }, "type": "library", "autoload": { @@ -5565,7 +6999,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.0" + "source": "https://github.com/symfony/type-info/tree/v7.2.5" }, "funding": [ { @@ -5581,20 +7015,20 @@ "type": "tidelift" } ], - "time": "2025-03-30T12:17:06+00:00" + "time": "2025-03-24T09:03:36+00:00" }, { "name": "symfony/uid", - "version": "v7.3.0", + "version": "v7.1.6", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3" + "reference": "65befb3bb2d503bbffbd08c815aa38b472999917" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/7beeb2b885cd584cd01e126c5777206ae4c3c6a3", - "reference": "7beeb2b885cd584cd01e126c5777206ae4c3c6a3", + "url": "https://api.github.com/repos/symfony/uid/zipball/65befb3bb2d503bbffbd08c815aa38b472999917", + "reference": "65befb3bb2d503bbffbd08c815aa38b472999917", "shasum": "" }, "require": { @@ -5639,7 +7073,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.3.0" + "source": "https://github.com/symfony/uid/tree/v7.1.6" }, "funding": [ { @@ -5655,20 +7089,20 @@ "type": "tidelift" } ], - "time": "2025-05-24T14:28:13+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/validator", - "version": "v7.3.0", + "version": "v7.1.11", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b" + "reference": "bb226e43829a6554cf891bd7c176dc73d49bc6c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", - "reference": "dabb03cddf50761c0aff4fbf5a3b3fffb3e5e38b", + "url": "https://api.github.com/repos/symfony/validator/zipball/bb226e43829a6554cf891bd7c176dc73d49bc6c1", + "reference": "bb226e43829a6554cf891bd7c176dc73d49bc6c1", "shasum": "" }, "require": { @@ -5705,7 +7139,6 @@ "symfony/mime": "^6.4|^7.0", "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", - "symfony/string": "^6.4|^7.0", "symfony/translation": "^6.4.3|^7.0.3", "symfony/type-info": "^7.1", "symfony/yaml": "^6.4|^7.0" @@ -5737,7 +7170,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.3.0" + "source": "https://github.com/symfony/validator/tree/v7.1.11" }, "funding": [ { @@ -5753,25 +7186,24 @@ "type": "tidelift" } ], - "time": "2025-05-29T07:19:49+00:00" + "time": "2025-01-28T15:50:57+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.3.0", + "version": "v7.2.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e" + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/548f6760c54197b1084e1e5c71f6d9d523f2f78e", - "reference": "548f6760c54197b1084e1e5c71f6d9d523f2f78e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", + "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -5821,7 +7253,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" }, "funding": [ { @@ -5837,25 +7269,24 @@ "type": "tidelift" } ], - "time": "2025-04-27T18:39:23+00:00" + "time": "2025-01-17T11:39:41+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.3.0", + "version": "v7.2.5", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c" + "reference": "c37b301818bd7288715d40de634f05781b686ace" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c9a1168891b5aaadfd6332ef44393330b3498c4c", - "reference": "c9a1168891b5aaadfd6332ef44393330b3498c4c", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/c37b301818bd7288715d40de634f05781b686ace", + "reference": "c37b301818bd7288715d40de634f05781b686ace", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.2" }, "require-dev": { "symfony/property-access": "^6.4|^7.0", @@ -5898,7 +7329,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.3.0" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.5" }, "funding": [ { @@ -5914,20 +7345,20 @@ "type": "tidelift" } ], - "time": "2025-05-15T09:04:05+00:00" + "time": "2025-03-13T12:21:46+00:00" }, { "name": "symfony/web-link", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/web-link.git", - "reference": "7697f74fce67555665339423ce453cc8216a98ff" + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-link/zipball/7697f74fce67555665339423ce453cc8216a98ff", - "reference": "7697f74fce67555665339423ce453cc8216a98ff", + "url": "https://api.github.com/repos/symfony/web-link/zipball/f537556a885e14a1d28f6c759d41e57e93d0a532", + "reference": "f537556a885e14a1d28f6c759d41e57e93d0a532", "shasum": "" }, "require": { @@ -5981,7 +7412,7 @@ "push" ], "support": { - "source": "https://github.com/symfony/web-link/tree/v7.3.0" + "source": "https://github.com/symfony/web-link/tree/v7.2.0" }, "funding": [ { @@ -5997,25 +7428,24 @@ "type": "tidelift" } ], - "time": "2025-05-19T13:28:18+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/yaml", - "version": "v7.3.0", + "version": "v7.1.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2" + "reference": "4921b8c1db90c13ba2ee0520080ef6800912b018" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/cea40a48279d58dc3efee8112634cb90141156c2", - "reference": "cea40a48279d58dc3efee8112634cb90141156c2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4921b8c1db90c13ba2ee0520080ef6800912b018", + "reference": "4921b8c1db90c13ba2ee0520080ef6800912b018", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -6053,7 +7483,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.3.0" + "source": "https://github.com/symfony/yaml/tree/v7.1.11" }, "funding": [ { @@ -6069,20 +7499,76 @@ "type": "tidelift" } ], - "time": "2025-04-04T10:10:33+00:00" + "time": "2025-01-07T12:50:05+00:00" }, { - "name": "twig/twig", - "version": "v3.21.1", + "name": "symfonycasts/tailwind-bundle", + "version": "v0.10.0", "source": { "type": "git", - "url": "https://github.com/twigphp/Twig.git", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d" + "url": "https://github.com/SymfonyCasts/tailwind-bundle.git", + "reference": "380502c39bf403f772d050ff9904932040de8cf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/285123877d4dd97dd7c11842ac5fb7e86e60d81d", - "reference": "285123877d4dd97dd7c11842ac5fb7e86e60d81d", + "url": "https://api.github.com/repos/SymfonyCasts/tailwind-bundle/zipball/380502c39bf403f772d050ff9904932040de8cf1", + "reference": "380502c39bf403f772d050ff9904932040de8cf1", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/asset-mapper": "^6.3|^7.0", + "symfony/cache": "^6.3|^7.0", + "symfony/console": "^5.4|^6.3|^7.0", + "symfony/deprecation-contracts": "^2.2|^3.0", + "symfony/http-client": "^5.4|^6.3|^7.0", + "symfony/process": "^5.4|^6.3|^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6", + "symfony/filesystem": "^6.3|^7.0", + "symfony/framework-bundle": "^6.3|^7.0", + "symfony/phpunit-bridge": "^6.3.9|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfonycasts\\TailwindBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ryan Weaver", + "homepage": "https://symfonycasts.com" + } + ], + "description": "Delightful Tailwind Support for Symfony + AssetMapper", + "keywords": [ + "asset-mapper", + "tailwind" + ], + "support": { + "issues": "https://github.com/SymfonyCasts/tailwind-bundle/issues", + "source": "https://github.com/SymfonyCasts/tailwind-bundle/tree/v0.10.0" + }, + "time": "2025-04-09T15:18:46+00:00" + }, + { + "name": "twig/twig", + "version": "v3.20.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "3468920399451a384bef53cf7996965f7cd40183" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/3468920399451a384bef53cf7996965f7cd40183", + "reference": "3468920399451a384bef53cf7996965f7cd40183", "shasum": "" }, "require": { @@ -6136,7 +7622,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.21.1" + "source": "https://github.com/twigphp/Twig/tree/v3.20.0" }, "funding": [ { @@ -6148,7 +7634,7 @@ "type": "tidelift" } ], - "time": "2025-05-03T07:21:55+00:00" + "time": "2025-02-13T08:34:43+00:00" }, { "name": "webmozart/assert", @@ -6268,16 +7754,16 @@ "packages-dev": [ { "name": "brianium/paratest", - "version": "v7.8.3", + "version": "v7.6.1", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "a585c346ddf1bec22e51e20b5387607905604a71" + "reference": "9ac8eda68f17acda4dad4aa02ecdcc327d7e6675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/a585c346ddf1bec22e51e20b5387607905604a71", - "reference": "a585c346ddf1bec22e51e20b5387607905604a71", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/9ac8eda68f17acda4dad4aa02ecdcc327d7e6675", + "reference": "9ac8eda68f17acda4dad4aa02ecdcc327d7e6675", "shasum": "" }, "require": { @@ -6288,24 +7774,24 @@ "fidry/cpu-core-counter": "^1.2.0", "jean85/pretty-package-versions": "^2.1.0", "php": "~8.2.0 || ~8.3.0 || ~8.4.0", - "phpunit/php-code-coverage": "^11.0.9 || ^12.0.4", - "phpunit/php-file-iterator": "^5.1.0 || ^6", - "phpunit/php-timer": "^7.0.1 || ^8", - "phpunit/phpunit": "^11.5.11 || ^12.0.6", - "sebastian/environment": "^7.2.0 || ^8", - "symfony/console": "^6.4.17 || ^7.2.1", - "symfony/process": "^6.4.19 || ^7.2.4" + "phpunit/php-code-coverage": "^11.0.7", + "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-timer": "^7.0.1", + "phpunit/phpunit": "^11.4.4", + "sebastian/environment": "^7.2.0", + "symfony/console": "^6.4.14 || ^7.1.7", + "symfony/process": "^6.4.14 || ^7.1.7" }, "require-dev": { "doctrine/coding-standard": "^12.0.0", "ext-pcov": "*", "ext-posix": "*", - "phpstan/phpstan": "^2.1.6", - "phpstan/phpstan-deprecation-rules": "^2.0.1", - "phpstan/phpstan-phpunit": "^2.0.4", - "phpstan/phpstan-strict-rules": "^2.0.3", - "squizlabs/php_codesniffer": "^3.11.3", - "symfony/filesystem": "^6.4.13 || ^7.2.0" + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "squizlabs/php_codesniffer": "^3.11.1", + "symfony/filesystem": "^6.4.13 || ^7.1.6" }, "bin": [ "bin/paratest", @@ -6345,7 +7831,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.8.3" + "source": "https://github.com/paratestphp/paratest/tree/v7.6.1" }, "funding": [ { @@ -6357,7 +7843,7 @@ "type": "paypal" } ], - "time": "2025-03-05T08:29:11+00:00" + "time": "2024-12-05T10:55:39+00:00" }, { "name": "dealerdirect/phpcodesniffer-composer-installer", @@ -6669,16 +8155,16 @@ }, { "name": "filp/whoops", - "version": "2.18.2", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3" + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/89dabca1490bc77dbcab41c2b20968c7e44bf7c3", - "reference": "89dabca1490bc77dbcab41c2b20968c7e44bf7c3", + "url": "https://api.github.com/repos/filp/whoops/zipball/a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", + "reference": "a7de6c3c6c3c022f5cfc337f8ede6a14460cf77e", "shasum": "" }, "require": { @@ -6728,7 +8214,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.2" + "source": "https://github.com/filp/whoops/tree/2.18.0" }, "funding": [ { @@ -6736,7 +8222,7 @@ "type": "github" } ], - "time": "2025-06-11T20:42:19+00:00" + "time": "2025-03-15T12:00:00+00:00" }, { "name": "jean85/pretty-package-versions", @@ -6800,16 +8286,16 @@ }, { "name": "liip/test-fixtures-bundle", - "version": "3.4.0", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/liip/LiipTestFixturesBundle.git", - "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6" + "reference": "2b2e988554d58c8c51ada95ed009e77069d9a7e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/c21f1b65da157077db809bb4a9587d59a696bcd6", - "reference": "c21f1b65da157077db809bb4a9587d59a696bcd6", + "url": "https://api.github.com/repos/liip/LiipTestFixturesBundle/zipball/2b2e988554d58c8c51ada95ed009e77069d9a7e0", + "reference": "2b2e988554d58c8c51ada95ed009e77069d9a7e0", "shasum": "" }, "require": { @@ -6881,9 +8367,9 @@ ], "support": { "issues": "https://github.com/liip/LiipTestFixturesBundle/issues", - "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.4.0" + "source": "https://github.com/liip/LiipTestFixturesBundle/tree/3.3.0" }, - "time": "2025-06-05T20:12:18+00:00" + "time": "2025-03-31T17:32:47+00:00" }, { "name": "lubiana/code-quality", @@ -6983,16 +8469,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", - "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -7031,7 +8517,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -7039,20 +8525,20 @@ "type": "tidelift" } ], - "time": "2025-04-29T12:36:36+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "nikic/php-parser", - "version": "v5.5.0", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", - "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -7095,45 +8581,44 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2025-05-31T08:24:38+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "nunomaduro/collision", - "version": "v8.8.1", + "version": "v8.5.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5" + "reference": "f5c101b929c958e849a633283adff296ed5f38f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/44ccb82e3e21efb5446748d2a3c81a030ac22bd5", - "reference": "44ccb82e3e21efb5446748d2a3c81a030ac22bd5", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/f5c101b929c958e849a633283adff296ed5f38f5", + "reference": "f5c101b929c958e849a633283adff296ed5f38f5", "shasum": "" }, "require": { - "filp/whoops": "^2.18.1", - "nunomaduro/termwind": "^2.3.1", + "filp/whoops": "^2.16.0", + "nunomaduro/termwind": "^2.1.0", "php": "^8.2.0", - "symfony/console": "^7.3.0" + "symfony/console": "^7.1.5" }, "conflict": { - "laravel/framework": "<11.44.2 || >=13.0.0", - "phpunit/phpunit": "<11.5.15 || >=13.0.0" + "laravel/framework": "<11.0.0 || >=12.0.0", + "phpunit/phpunit": "<10.5.1 || >=12.0.0" }, "require-dev": { - "brianium/paratest": "^7.8.3", - "larastan/larastan": "^3.4.2", - "laravel/framework": "^11.44.2 || ^12.18", - "laravel/pint": "^1.22.1", - "laravel/sail": "^1.43.1", - "laravel/sanctum": "^4.1.1", - "laravel/tinker": "^2.10.1", - "orchestra/testbench-core": "^9.12.0 || ^10.4", - "pestphp/pest": "^3.8.2", - "sebastian/environment": "^7.2.1 || ^8.0" + "larastan/larastan": "^2.9.8", + "laravel/framework": "^11.28.0", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^4.0.3", + "laravel/tinker": "^2.10.0", + "orchestra/testbench-core": "^9.5.3", + "pestphp/pest": "^2.36.0 || ^3.4.0", + "sebastian/environment": "^6.1.0 || ^7.2.0" }, "type": "library", "extra": { @@ -7170,7 +8655,6 @@ "cli", "command-line", "console", - "dev", "error", "handling", "laravel", @@ -7196,35 +8680,35 @@ "type": "patreon" } ], - "time": "2025-06-11T01:04:21+00:00" + "time": "2024-10-15T16:06:32+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.3.1", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", - "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.2.6" + "symfony/console": "^7.1.8" }, "require-dev": { - "illuminate/console": "^11.44.7", - "laravel/pint": "^1.22.0", + "illuminate/console": "^11.33.2", + "laravel/pint": "^1.18.2", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.2", - "phpstan/phpstan": "^1.12.25", - "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.2.6", + "pestphp/pest": "^2.36.0", + "phpstan/phpstan": "^1.12.11", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^7.1.8", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -7267,7 +8751,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" }, "funding": [ { @@ -7283,42 +8767,42 @@ "type": "github" } ], - "time": "2025-05-08T08:14:37+00:00" + "time": "2024-11-21T10:39:51+00:00" }, { "name": "pestphp/pest", - "version": "v3.8.2", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d" + "reference": "918a8fc16996849937e281482bd34f236881ce96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/c6244a8712968dbac88eb998e7ff3b5caa556b0d", - "reference": "c6244a8712968dbac88eb998e7ff3b5caa556b0d", + "url": "https://api.github.com/repos/pestphp/pest/zipball/918a8fc16996849937e281482bd34f236881ce96", + "reference": "918a8fc16996849937e281482bd34f236881ce96", "shasum": "" }, "require": { - "brianium/paratest": "^7.8.3", - "nunomaduro/collision": "^8.8.0", + "brianium/paratest": "^7.6.0", + "nunomaduro/collision": "^8.5.0", "nunomaduro/termwind": "^2.3.0", "pestphp/pest-plugin": "^3.0.0", - "pestphp/pest-plugin-arch": "^3.1.0", + "pestphp/pest-plugin-arch": "^3.0.0", "pestphp/pest-plugin-mutate": "^3.0.5", "php": "^8.2.0", - "phpunit/phpunit": "^11.5.15" + "phpunit/phpunit": "^11.4.4" }, "conflict": { "filp/whoops": "<2.16.0", - "phpunit/phpunit": ">11.5.15", + "phpunit/phpunit": ">11.4.4", "sebastian/exporter": "<6.0.0", "webmozart/assert": "<1.11.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^3.4.0", - "pestphp/pest-plugin-type-coverage": "^3.5.0", - "symfony/process": "^7.2.5" + "pestphp/pest-dev-tools": "^3.3.0", + "pestphp/pest-plugin-type-coverage": "^3.2.0", + "symfony/process": "^7.1.8" }, "bin": [ "bin/pest" @@ -7383,7 +8867,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v3.8.2" + "source": "https://github.com/pestphp/pest/tree/v3.6.0" }, "funding": [ { @@ -7395,7 +8879,7 @@ "type": "github" } ], - "time": "2025-04-17T10:53:02+00:00" + "time": "2024-12-01T22:46:00+00:00" }, { "name": "pestphp/pest-plugin", @@ -7729,16 +9213,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.27", + "version": "1.12.24", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162" + "reference": "338b92068f58d9f8035b76aed6cf2b9e5624c025" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/3a6e423c076ab39dfedc307e2ac627ef579db162", - "reference": "3a6e423c076ab39dfedc307e2ac627ef579db162", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/338b92068f58d9f8035b76aed6cf2b9e5624c025", + "reference": "338b92068f58d9f8035b76aed6cf2b9e5624c025", "shasum": "" }, "require": { @@ -7783,7 +9267,7 @@ "type": "github" } ], - "time": "2025-05-21T20:51:45+00:00" + "time": "2025-04-16T13:01:53+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8110,16 +9594,16 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.15", + "version": "11.4.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c" + "reference": "f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", - "reference": "4b6a4ee654e5e0c5e1f17e2f83c0f4c91dee1f9c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4", + "reference": "f9ba7bd3c9f3ff54ec379d7a1c2e3f13fe0bbde4", "shasum": "" }, "require": { @@ -8129,26 +9613,25 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.0", + "myclabs/deep-copy": "^1.12.1", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.9", + "phpunit/php-code-coverage": "^11.0.7", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", - "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.1", + "sebastian/code-unit": "^3.0.1", + "sebastian/comparator": "^6.2.1", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.0", - "sebastian/exporter": "^6.3.0", + "sebastian/exporter": "^6.1.3", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", - "sebastian/type": "^5.1.2", - "sebastian/version": "^5.0.2", - "staabm/side-effects-detector": "^1.0.5" + "sebastian/type": "^5.1.0", + "sebastian/version": "^5.0.2" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -8159,7 +9642,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "11.5-dev" + "dev-main": "11.4-dev" } }, "autoload": { @@ -8191,7 +9674,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.4.4" }, "funding": [ { @@ -8207,7 +9690,7 @@ "type": "tidelift" } ], - "time": "2025-03-23T16:02:11+00:00" + "time": "2024-11-27T10:44:52+00:00" }, { "name": "psr/simple-cache", @@ -8696,23 +10179,23 @@ }, { "name": "sebastian/environment", - "version": "7.2.1", + "version": "7.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", - "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", + "reference": "855f3ae0ab316bbafe1ba4e16e9f3c078d24a0c5", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-posix": "*" @@ -8748,27 +10231,15 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.0" }, "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/sebastian/environment", - "type": "tidelift" } ], - "time": "2025-05-21T11:55:47+00:00" + "time": "2024-07-03T04:54:44+00:00" }, { "name": "sebastian/exporter", @@ -9324,16 +10795,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.13.1", + "version": "3.12.2", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd" + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", - "reference": "1b71b4dd7e7ef651ac749cea67e513c0c832f4bd", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", + "reference": "6d4cf6032d4b718f168c90a96e36c7d0eaacb2aa", "shasum": "" }, "require": { @@ -9404,72 +10875,20 @@ "type": "thanks_dev" } ], - "time": "2025-06-12T15:04:34+00:00" - }, - { - "name": "staabm/side-effects-detector", - "version": "1.0.5", - "source": { - "type": "git", - "url": "https://github.com/staabm/side-effects-detector.git", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", - "reference": "d8334211a140ce329c13726d4a715adbddd0a163", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^1.12.6", - "phpunit/phpunit": "^9.6.21", - "symfony/var-dumper": "^5.4.43", - "tomasvotruba/type-coverage": "1.0.0", - "tomasvotruba/unused-public": "1.0.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "lib/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A static analysis tool to detect side effects in PHP code", - "keywords": [ - "static analysis" - ], - "support": { - "issues": "https://github.com/staabm/side-effects-detector/issues", - "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" - }, - "funding": [ - { - "url": "https://github.com/staabm", - "type": "github" - } - ], - "time": "2024-10-20T05:08:20+00:00" + "time": "2025-04-13T04:10:18+00:00" }, { "name": "symfony/browser-kit", - "version": "v7.3.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "5384291845e74fd7d54f3d925c4a86ce12336593" + "reference": "8ce0ee23857d87d5be493abba2d52d1f9e49da61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/5384291845e74fd7d54f3d925c4a86ce12336593", - "reference": "5384291845e74fd7d54f3d925c4a86ce12336593", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/8ce0ee23857d87d5be493abba2d52d1f9e49da61", + "reference": "8ce0ee23857d87d5be493abba2d52d1f9e49da61", "shasum": "" }, "require": { @@ -9508,7 +10927,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v7.3.0" + "source": "https://github.com/symfony/browser-kit/tree/v7.2.4" }, "funding": [ { @@ -9524,11 +10943,11 @@ "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" + "time": "2025-02-14T14:27:24+00:00" }, { "name": "symfony/css-selector", - "version": "v7.3.0", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", @@ -9573,7 +10992,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.3.0" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" }, "funding": [ { @@ -9593,16 +11012,16 @@ }, { "name": "symfony/dom-crawler", - "version": "v7.3.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166" + "reference": "19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0fabbc3d6a9c473b716a93fc8e7a537adb396166", - "reference": "0fabbc3d6a9c473b716a93fc8e7a537adb396166", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7", + "reference": "19cc7b08efe9ad1ab1b56e0948e8d02e15ed3ef7", "shasum": "" }, "require": { @@ -9640,7 +11059,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.3.0" + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.4" }, "funding": [ { @@ -9656,198 +11075,25 @@ "type": "tidelift" } ], - "time": "2025-03-05T10:15:41+00:00" - }, - { - "name": "symfony/http-client", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/57e4fb86314015a695a750ace358d07a7e37b8a9", - "reference": "57e4fb86314015a695a750ace358d07a7e37b8a9", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-client-contracts": "~3.4.4|^3.5.2", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "amphp/amp": "<2.5", - "php-http/discovery": "<1.15", - "symfony/http-foundation": "<6.4" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" - }, - "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", - "psr/http-client": "^1.0", - "symfony/amphp-http-client-meta": "^1.0|^2.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", - "homepage": "https://symfony.com", - "keywords": [ - "http" - ], - "support": { - "source": "https://github.com/symfony/http-client/tree/v7.3.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-02T08:23:16+00:00" - }, - { - "name": "symfony/http-client-contracts", - "version": "v3.6.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "75d7043853a42837e68111812f4d964b01e5101c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/75d7043853a42837e68111812f4d964b01e5101c", - "reference": "75d7043853a42837e68111812f4d964b01e5101c", - "shasum": "" - }, - "require": { - "php": ">=8.1" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/contracts", - "name": "symfony/contracts" - }, - "branch-alias": { - "dev-main": "3.6-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to HTTP clients", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-04-29T11:18:49+00:00" + "time": "2025-02-17T15:53:07+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.63.0", + "version": "v1.62.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "69478ab39bc303abfbe3293006a78b09a8512425" + "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/69478ab39bc303abfbe3293006a78b09a8512425", - "reference": "69478ab39bc303abfbe3293006a78b09a8512425", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/468ff2708200c95ebc0d85d3174b6c6711b8a590", + "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590", "shasum": "" }, "require": { "doctrine/inflector": "^2.0", - "nikic/php-parser": "^5.0", + "nikic/php-parser": "^4.18|^5.0", "php": ">=8.1", "symfony/config": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", @@ -9905,7 +11151,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.63.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.62.1" }, "funding": [ { @@ -9921,88 +11167,25 @@ "type": "tidelift" } ], - "time": "2025-04-26T01:41:37+00:00" - }, - { - "name": "symfony/process", - "version": "v7.3.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v7.3.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-17T09:11:12+00:00" + "time": "2025-01-15T00:21:40+00:00" }, { "name": "symfony/web-profiler-bundle", - "version": "v7.3.0", + "version": "v7.2.4", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c" + "reference": "4ffde1c860a100533b02697d9aaf5f45759ec26a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a22b7e4a744820a56f1bafa830f2c72a2ba0913c", - "reference": "a22b7e4a744820a56f1bafa830f2c72a2ba0913c", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/4ffde1c860a100533b02697d9aaf5f45759ec26a", + "reference": "4ffde1c860a100533b02697d9aaf5f45759ec26a", "shasum": "" }, "require": { - "composer-runtime-api": ">=2.1", "php": ">=8.2", - "symfony/config": "^7.3", - "symfony/deprecation-contracts": "^2.5|^3", + "symfony/config": "^6.4|^7.0", "symfony/framework-bundle": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", "symfony/routing": "^6.4|^7.0", @@ -10013,8 +11196,7 @@ "symfony/form": "<6.4", "symfony/mailer": "<6.4", "symfony/messenger": "<6.4", - "symfony/serializer": "<7.2", - "symfony/workflow": "<7.3" + "symfony/serializer": "<7.2" }, "require-dev": { "symfony/browser-kit": "^6.4|^7.0", @@ -10051,7 +11233,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.3.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.2.4" }, "funding": [ { @@ -10067,7 +11249,7 @@ "type": "tidelift" } ], - "time": "2025-05-02T05:30:54+00:00" + "time": "2025-02-14T14:27:24+00:00" }, { "name": "symplify/config-transformer", @@ -10113,16 +11295,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.5.20", + "version": "12.5.12", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "bb44b0fc70dd2148d8a6362bc66a35e23dc31bc4" + "reference": "cb1ba037e756f8953d99789883879113daeb0ba9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/bb44b0fc70dd2148d8a6362bc66a35e23dc31bc4", - "reference": "bb44b0fc70dd2148d8a6362bc66a35e23dc31bc4", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/cb1ba037e756f8953d99789883879113daeb0ba9", + "reference": "cb1ba037e756f8953d99789883879113daeb0ba9", "shasum": "" }, "require": { @@ -10158,7 +11340,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.20" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.12" }, "funding": [ { @@ -10170,7 +11352,7 @@ "type": "github" } ], - "time": "2025-05-30T11:42:07+00:00" + "time": "2025-04-23T11:23:07+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", @@ -10284,7 +11466,7 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": {}, "prefer-stable": true, "prefer-lowest": false, "platform": { @@ -10292,7 +11474,7 @@ "ext-ctype": "*", "ext-iconv": "*" }, - "platform-dev": [], + "platform-dev": {}, "platform-overrides": { "php": "8.4" }, diff --git a/config/bundles.php b/config/bundles.php index 020f7cf..6a662f2 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -11,6 +11,7 @@ use Symfony\Bundle\MakerBundle\MakerBundle; use Symfony\Bundle\SecurityBundle\SecurityBundle; use Symfony\Bundle\TwigBundle\TwigBundle; use Symfony\Bundle\WebProfilerBundle\WebProfilerBundle; +use Symfonycasts\TailwindBundle\SymfonycastsTailwindBundle; return [ FrameworkBundle::class => [ @@ -42,11 +43,14 @@ return [ NelmioCorsBundle::class => [ 'all' => true, ], + ApiPlatformBundle::class => [ + 'all' => true, + ], LiipTestFixturesBundle::class => [ 'dev' => true, 'test' => true, ], - ApiPlatformBundle::class => [ + SymfonycastsTailwindBundle::class => [ 'all' => true, ], ]; diff --git a/config/packages/api_platform.php b/config/packages/api_platform.php index d19bc6e..64a1f26 100644 --- a/config/packages/api_platform.php +++ b/config/packages/api_platform.php @@ -4,8 +4,10 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigura return static function (ContainerConfigurator $containerConfigurator): void { $containerConfigurator->extension('api_platform', [ - 'title' => 'Hello API Platform', + 'title' => 'Futtern API', 'version' => '1.0.0', + 'show_webby' => false, + 'enable_swagger' => true, 'defaults' => [ 'stateless' => true, 'cache_headers' => [ diff --git a/config/packages/asset_mapper.php b/config/packages/asset_mapper.php new file mode 100644 index 0000000..3a3cc5f --- /dev/null +++ b/config/packages/asset_mapper.php @@ -0,0 +1,21 @@ +extension('framework', [ + 'asset_mapper' => [ + 'paths' => [ + 'assets/', + ], + 'missing_import_mode' => 'strict', + ], + ]); + if ($containerConfigurator->env() === 'prod') { + $containerConfigurator->extension('framework', [ + 'asset_mapper' => [ + 'missing_import_mode' => 'warn', + ], + ]); + } +}; diff --git a/config/packages/csrf.php b/config/packages/csrf.php deleted file mode 100644 index 82d6a65..0000000 --- a/config/packages/csrf.php +++ /dev/null @@ -1,20 +0,0 @@ -extension('framework', [ - 'form' => [ - 'csrf_protection' => [ - 'token_id' => 'submit', - ], - ], - 'csrf_protection' => [ - 'stateless_token_ids' => [ - 'submit', - 'authenticate', - 'logout', - ], - ], - ]); -}; diff --git a/config/packages/property_info.php b/config/packages/symfonycasts_tailwind.php similarity index 59% rename from config/packages/property_info.php rename to config/packages/symfonycasts_tailwind.php index 9213243..6c1a097 100644 --- a/config/packages/property_info.php +++ b/config/packages/symfonycasts_tailwind.php @@ -3,9 +3,7 @@ use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator; return static function (ContainerConfigurator $containerConfigurator): void { - $containerConfigurator->extension('framework', [ - 'property_info' => [ - 'with_constructor_extractor' => true, - ], + $containerConfigurator->extension('symfonycasts_tailwind', [ + 'binary_version' => 'v3.4.17', ]); }; diff --git a/importmap.php b/importmap.php new file mode 100644 index 0000000..c5b734e --- /dev/null +++ b/importmap.php @@ -0,0 +1,19 @@ + [ + 'path' => './assets/app.js', + 'entrypoint' => true, + ], +]; diff --git a/php-styler.php b/php-styler.php new file mode 100644 index 0000000..f5f8632 --- /dev/null +++ b/php-styler.php @@ -0,0 +1,20 @@ +getQuery() ->getResult(); } - - /** - * @return FoodOrder|null - */ - public function findLatestOrder(): ?FoodOrder - { - return $this->createQueryBuilder('alias') - ->orderBy('alias.id', 'DESC') - ->setMaxResults(1) - ->getQuery() - ->getOneOrNullResult(); - } } diff --git a/src/State/LatestOrderProvider.php b/src/State/LatestOrderProvider.php deleted file mode 100644 index 2caf6f1..0000000 --- a/src/State/LatestOrderProvider.php +++ /dev/null @@ -1,22 +0,0 @@ -repository->findLatestOrder(); - } -} \ No newline at end of file diff --git a/src/State/OpenOrdersProvider.php b/src/State/OpenFoodOrderProvider.php similarity index 70% rename from src/State/OpenOrdersProvider.php rename to src/State/OpenFoodOrderProvider.php index 6223a74..a6ae882 100644 --- a/src/State/OpenOrdersProvider.php +++ b/src/State/OpenFoodOrderProvider.php @@ -4,21 +4,17 @@ namespace App\State; use ApiPlatform\Metadata\Operation; use ApiPlatform\State\ProviderInterface; -use App\Entity\FoodOrder; use App\Repository\FoodOrderRepository; use Override; -final readonly class OpenOrdersProvider implements ProviderInterface +final readonly class OpenFoodOrderProvider implements ProviderInterface { public function __construct( private FoodOrderRepository $repository ) {} - /** - * @return FoodOrder[] - */ #[Override] - public function provide(Operation $operation, array $uriVariables = [], array $context = []): array + public function provide(Operation $operation, array $uriVariables = [], array $context = []): object|array|null { return $this->repository->findOpenOrders(); } diff --git a/symfony.lock b/symfony.lock index 676275b..63de157 100644 --- a/symfony.lock +++ b/symfony.lock @@ -1,11 +1,11 @@ { - "api-platform/core": { - "version": "4.1", + "api-platform/symfony": { + "version": "4.0", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", "version": "4.0", - "ref": "cb9e6b8ceb9b62f32d41fc8ad72a25d5bd674c6d" + "ref": "e9952e9f393c2d048f10a78f272cd35e807d972b" }, "files": [ "config/packages/api_platform.yaml", @@ -13,22 +13,13 @@ "src/ApiResource/.gitignore" ] }, - "doctrine/deprecations": { - "version": "1.1", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "main", - "version": "1.0", - "ref": "87424683adc81d7dc305eefec1fced883084aab9" - } - }, "doctrine/doctrine-bundle": { - "version": "2.14", + "version": "2.12", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "2.13", - "ref": "620b57f496f2e599a6015a9fa222c2ee0a32adcb" + "version": "2.12", + "ref": "7266981c201efbbe02ae53c87f8bb378e3f825ae" }, "files": [ "config/packages/doctrine.yaml", @@ -37,7 +28,7 @@ ] }, "doctrine/doctrine-fixtures-bundle": { - "version": "4.1", + "version": "4.0", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -49,7 +40,7 @@ ] }, "doctrine/doctrine-migrations-bundle": { - "version": "3.4", + "version": "3.3", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -62,7 +53,7 @@ ] }, "liip/test-fixtures-bundle": { - "version": "3.4.0" + "version": "3.2.1" }, "nelmio/cors-bundle": { "version": "2.5", @@ -77,46 +68,54 @@ ] }, "phpstan/phpstan": { - "version": "1.12", + "version": "1.11", "recipe": { "repo": "github.com/symfony/recipes-contrib", "branch": "main", "version": "1.0", "ref": "5e490cc197fb6bb1ae22e5abbc531ddc633b6767" - }, - "files": [ - "phpstan.dist.neon" - ] + } }, "phpunit/phpunit": { - "version": "11.5", + "version": "11.4", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "11.1", - "ref": "c6658a60fc9d594805370eacdf542c3d6b5c0869" + "version": "9.6", + "ref": "7364a21d87e658eb363c5020c072ecfdc12e2326" }, "files": [ ".env.test", "phpunit.xml.dist", - "tests/bootstrap.php", - "bin/phpunit" + "tests/bootstrap.php" ] }, "squizlabs/php_codesniffer": { - "version": "3.13", + "version": "3.10", "recipe": { "repo": "github.com/symfony/recipes-contrib", "branch": "main", "version": "3.6", "ref": "1019e5c08d4821cb9b77f4891f8e9c31ff20ac6f" + } + }, + "symfony/asset-mapper": { + "version": "7.2", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.4", + "ref": "5ad1308aa756d58f999ffbe1540d1189f5d7d14a" }, "files": [ - "phpcs.xml.dist" + "assets/app.js", + "assets/styles/app.css", + "config/packages/asset_mapper.yaml", + "importmap.php" ] }, "symfony/console": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -128,37 +127,24 @@ ] }, "symfony/flex": { - "version": "2.7", + "version": "2.4", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "2.4", - "ref": "52e9754527a15e2b79d9a610f98185a1fe46622a" + "version": "1.0", + "ref": "146251ae39e06a95be0fe3d13c807bcf3938b172" }, "files": [ - ".env", - ".env.dev" - ] - }, - "symfony/form": { - "version": "7.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "main", - "version": "7.2", - "ref": "7d86a6723f4a623f59e2bf966b6aad2fc461d36b" - }, - "files": [ - "config/packages/csrf.yaml" + ".env" ] }, "symfony/framework-bundle": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "7.3", - "ref": "5a1497d539f691b96afd45ae397ce5fe30beb4b9" + "version": "7.0", + "ref": "6356c19b9ae08e7763e4ba2d9ae63043efc75db5" }, "files": [ "config/packages/cache.yaml", @@ -168,12 +154,11 @@ "config/services.yaml", "public/index.php", "src/Controller/.gitignore", - "src/Kernel.php", - ".editorconfig" + "src/Kernel.php" ] }, "symfony/maker-bundle": { - "version": "1.63", + "version": "1.60", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -181,20 +166,8 @@ "ref": "fadbfe33303a76e25cb63401050439aa9b1a9c7f" } }, - "symfony/property-info": { - "version": "7.3", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "main", - "version": "7.3", - "ref": "dae70df71978ae9226ae915ffd5fad817f5ca1f7" - }, - "files": [ - "config/packages/property_info.yaml" - ] - }, "symfony/routing": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -207,7 +180,7 @@ ] }, "symfony/security-bundle": { - "version": "7.3", + "version": "7.2", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -220,7 +193,7 @@ ] }, "symfony/twig-bundle": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -233,7 +206,7 @@ ] }, "symfony/uid": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -242,7 +215,7 @@ } }, "symfony/validator": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", @@ -254,16 +227,28 @@ ] }, "symfony/web-profiler-bundle": { - "version": "7.3", + "version": "7.1", "recipe": { "repo": "github.com/symfony/recipes", "branch": "main", - "version": "7.3", - "ref": "5b2b543e13942495c0003f67780cb4448af9e606" + "version": "6.1", + "ref": "e42b3f0177df239add25373083a564e5ead4e13a" }, "files": [ "config/packages/web_profiler.yaml", "config/routes/web_profiler.yaml" ] + }, + "symfonycasts/tailwind-bundle": { + "version": "0.10", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "0.8", + "ref": "4ea7c9488fdce8943520daf3fdc31e93e5b59c64" + }, + "files": [ + "config/packages/symfonycasts_tailwind.yaml" + ] } } diff --git a/tailwind.config.js b/tailwind.config.js new file mode 100644 index 0000000..531385f --- /dev/null +++ b/tailwind.config.js @@ -0,0 +1,12 @@ +/** @type {import('tailwindcss').Config} */ +module.exports = { + content: [ + "./assets/**/*.js", + "./templates/**/*.html.twig", + ], + darkMode: 'media', // Use 'media' to respect the user's system preference + theme: { + extend: {}, + }, + plugins: [], +} diff --git a/templates/_form.html.twig b/templates/_form.html.twig index bf20b98..6fe4982 100644 --- a/templates/_form.html.twig +++ b/templates/_form.html.twig @@ -1,4 +1,24 @@ -{{ form_start(form) }} - {{ form_widget(form) }} - +{{ form_start(form, {'attr': {'class': 'space-y-6'}}) }} + {% for field in form %} + {% if field.vars.name != '_token' %} +
+ {{ form_label(field, null, {'label_attr': {'class': 'block text-sm font-medium leading-6 text-gray-900 dark:text-gray-100'}}) }} +
+ {{ form_widget(field, {'attr': {'class': 'block w-full rounded-md border-0 py-1.5 text-gray-900 dark:text-gray-100 bg-white dark:bg-gray-700 shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-gray-600 placeholder:text-gray-400 dark:placeholder:text-gray-500 focus:ring-2 focus:ring-inset focus:ring-indigo-600 dark:focus:ring-indigo-500 sm:text-sm sm:leading-6'}}) }} +
+ {% if field.vars.errors|length > 0 %} +
+ {{ form_errors(field) }} +
+ {% endif %} + {% if field.vars.help is defined and field.vars.help %} +

{{ field.vars.help }}

+ {% endif %} +
+ {% endif %} + {% endfor %} +
+ Cancel + +
{{ form_end(form) }} diff --git a/templates/base.html.twig b/templates/base.html.twig index 1036cc3..a594641 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -1,46 +1,93 @@ - + + - {% block title %}Welcome!{% endblock %} - - {% set currentDate = "now"|date("d") %} - {% if currentDate % 4 == 0 %} - - {% elseif currentDate % 4 == 1 %} - - {% elseif currentDate % 4 == 2 %} - - {% else %} - - {% endif %} - + {% block title %}Welcome!{% endblock %} - Futtern + + {% block stylesheets %} + + {% endblock %} + {% block javascripts %} + {{ importmap() }} + {% endblock %} - -
-

Hello {{ app.request.cookies.get('username', 'nobody') }} - change name

-
-
- {% block body %}{% endblock %} -
+ +
+
+

{% block header %}{% endblock %}

+
+
+ +
+
+
+ {% block body %}{% endblock %} +
+
+
+ - diff --git a/templates/food_order/index.html.twig b/templates/food_order/index.html.twig index d974f87..93613a5 100644 --- a/templates/food_order/index.html.twig +++ b/templates/food_order/index.html.twig @@ -1,45 +1,69 @@ {% extends 'base.html.twig' %} -{% block title %}FoodOrder index{% endblock %} +{% block title %}Food Orders{% endblock %} + +{% block header %}Food Orders{% endblock %} {% block body %} -

FoodOrder index

-
- + hx-target="#new-order-form" + class="block rounded-md bg-indigo-600 dark:bg-indigo-700 px-3 py-2 text-center text-sm font-semibold text-white shadow-sm hover:bg-indigo-500 dark:hover:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 dark:focus-visible:outline-indigo-500" + >Create new order +
-
- - - - - - - - - - - - {% for food_order in food_orders %} - {{ include('food_order/table_row.html.twig') }} - {% endfor %} - {% if food_orders|length < 10 %} - - - + +
+ +
+
+
+
+
CreatedByVendorCreatedAtClosedAtactions
- check the archive - for older orders -
+ + + + + + + + + + + {% for food_order in food_orders %} + {{ include('food_order/table_row.html.twig') }} + {% endfor %} + {% if food_orders|length < 10 %} + + + + {% endif %} + +
Created ByVendorCreated AtClosed At + Actions +
+ Check the archive + for older orders +
+ + + + + +
+ {% if prev_page > 0 %} + Previous Page {% endif %} - - - {% if prev_page > 0 %} - previous page | - {% endif %} - {% if next_page > current_page %} - next page - {% endif %} + {% if next_page > current_page %} + Next Page + {% endif %} +
{% endblock %} diff --git a/templates/food_order/new.html.twig b/templates/food_order/new.html.twig index 72ed804..3447325 100644 --- a/templates/food_order/new.html.twig +++ b/templates/food_order/new.html.twig @@ -1,2 +1,11 @@ -{{ include('_form.html.twig') }} - +
+
+

Create New Order

+
+

Fill out the form below to create a new food order.

+
+
+ {{ include('_form.html.twig') }} +
+
+
diff --git a/templates/food_order/show.html.twig b/templates/food_order/show.html.twig index a7ace15..9ab1ef2 100644 --- a/templates/food_order/show.html.twig +++ b/templates/food_order/show.html.twig @@ -1,71 +1,101 @@ {% extends 'base.html.twig' %} -{% block title %}FoodOrder{% endblock %} +{% block title %}Order Details{% endblock %} + +{% block header %}Order Details{% endblock %} {% block body %} -

FoodOrder

+
+
+

Order Information

+

Details about the food order from {{ food_order.foodVendor.name }}.

+
+
+
+
+
Vendor
+
{{ food_order.foodVendor.name }}
+
+
+
Vendor Phone
+
{{ food_order.foodVendor.phone }}
+
+
+
Created By
+
{{ food_order.createdBy }}
+
+
+
Created At
+
{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}
+
+
+
Closed At
+
{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : 'Not closed yet' }}
+
+
+
+
- - - - - - - - - - - - - - - - - - - - - - - -
Vendor{{ food_order.foodVendor.name }}
Vendorphone{{ food_order.foodVendor.phone }}
Created By{{ food_order.createdBy }}
CreatedAt{{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}
ClosedAt{{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }}
- back to list - {% if(food_order.isClosed) %} - reopen - {% else %} - close - {% endif %} - -

Items

- - - - - - - - - - - - {% for item in food_order.orderItemsSortedByName %} - - - - - - - - {% endfor %} - -
Indexusernamenameextrasactions
{{ loop.index }}{{ item.createdBy }}{{ item.name }}{{ item.extras }} - {% if(food_order.isClosed) %} - {% else %} - edit - copy - remove - {% endif %} -
- New Item +
+ + Back to list + + {% if(food_order.isClosed) %} + + Reopen Order + + {% else %} + + Close Order + + {% endif %} +
+
+
+
+

Order Items

+

Items included in this order.

+
+
+ + Add New Item + +
+
+
+ + + + + + + + + + + + {% for item in food_order.orderItemsSortedByName %} + + + + + + + + {% endfor %} + +
#UsernameItem NameExtras + Actions +
{{ loop.index }}{{ item.createdBy }}{{ item.name }}{{ item.extras }} + {% if(food_order.isClosed) %} + Order closed + {% else %} + Edit + Copy + Remove + {% endif %} +
+
+
{% endblock %} diff --git a/templates/food_order/table_row.html.twig b/templates/food_order/table_row.html.twig index 580d5fa..a3d9817 100644 --- a/templates/food_order/table_row.html.twig +++ b/templates/food_order/table_row.html.twig @@ -1,9 +1,9 @@ - - {{ food_order.createdBy }} - {{ food_order.foodVendor.name }} - {{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }} - {{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }} - - show + + {{ food_order.createdBy }} + {{ food_order.foodVendor.name }} + {{ food_order.createdAt ? food_order.createdAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }} + {{ food_order.closedAt ? food_order.closedAt|date('Y-m-d H:i:s', 'Europe/Berlin') : '' }} + + View, order from {{ food_order.createdBy }} - \ No newline at end of file + diff --git a/templates/food_vendor/_form.html.twig b/templates/food_vendor/_form.html.twig index bf20b98..ed94f7a 100644 --- a/templates/food_vendor/_form.html.twig +++ b/templates/food_vendor/_form.html.twig @@ -1,4 +1,24 @@ -{{ form_start(form) }} - {{ form_widget(form) }} - +{{ form_start(form, {'attr': {'class': 'space-y-6'}}) }} + {% for field in form %} + {% if field.vars.name != '_token' %} +
+ {{ form_label(field, null, {'label_attr': {'class': 'block text-sm font-medium leading-6 text-gray-900'}}) }} +
+ {{ form_widget(field, {'attr': {'class': 'block w-full rounded-md border-0 py-1.5 text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6'}}) }} +
+ {% if field.vars.errors|length > 0 %} +
+ {{ form_errors(field) }} +
+ {% endif %} + {% if field.vars.help is defined and field.vars.help %} +

{{ field.vars.help }}

+ {% endif %} +
+ {% endif %} + {% endfor %} +
+ Cancel + +
{{ form_end(form) }} diff --git a/templates/food_vendor/index.html.twig b/templates/food_vendor/index.html.twig index 7754082..53f50c1 100644 --- a/templates/food_vendor/index.html.twig +++ b/templates/food_vendor/index.html.twig @@ -1,33 +1,54 @@ {% extends 'base.html.twig' %} -{% block title %}FoodVendor index{% endblock %} +{% block title %}Food Vendors{% endblock %} + +{% block header %}Food Vendors{% endblock %} {% block body %} -

FoodVendor index

+
+
+

+ Manage your food vendors and create new ones. +

+
+
+ + Create new vendor + +
+
- - - - - - - - - {% for food_vendor in food_vendors %} - - - - - {% else %} - - - - {% endfor %} - -
Nameactions
{{ food_vendor.name }} - show - edit -
no records found
- - Create new +
+
+
+
+ + + + + + + + + {% for food_vendor in food_vendors %} + + + + + {% else %} + + + + {% endfor %} + +
Name + Actions +
{{ food_vendor.name }} + View + Edit +
No vendors found
+
+
+
+
{% endblock %} diff --git a/templates/username.html.twig b/templates/username.html.twig index da56166..a7e85d3 100644 --- a/templates/username.html.twig +++ b/templates/username.html.twig @@ -2,8 +2,15 @@ {% block title %}Tell me your name{% endblock %} +{% block header %}Tell me your name{% endblock %} + {% block body %} -

Tell me your name

-

By submitting the form, you agree that your username will be stored as a cookie.

- {{ include('_form.html.twig') }} -{% endblock %} \ No newline at end of file +
+
+
+

By submitting the form, you agree that your username will be stored as a cookie.

+
+ {{ include('_form.html.twig') }} +
+
+{% endblock %} diff --git a/tests/DbApiTestCase.php b/tests/DbApiTestCase.php new file mode 100644 index 0000000..3041e30 --- /dev/null +++ b/tests/DbApiTestCase.php @@ -0,0 +1,26 @@ +client = static::createClient(); + $this->manager = static::getContainer()->get('doctrine')->getManager(); + $toolKit = self::getContainer()->get(DatabaseToolCollection::class)->get(); + $toolKit->loadFixtures([AppFixtures::class]); + } +} diff --git a/tests/Feature/Api/ApiSmokeTest.php b/tests/Feature/Api/ApiSmokeTest.php new file mode 100644 index 0000000..df0bda1 --- /dev/null +++ b/tests/Feature/Api/ApiSmokeTest.php @@ -0,0 +1,48 @@ +client->request('GET', '/api/food_orders'); + $this->assertResponseIsSuccessful(); + $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); + $this->assertJsonContains([ + '@context' => '/api/contexts/FoodOrder', + '@id' => '/api/food_orders', + '@type' => 'Collection', + 'totalItems' => 1, + ]); + $array = $response->toArray(); + expect($array['member'][0]['orderItems'])->toHaveCount(10); +}); + +test('open orders', function (): void { + $response = $this->client->request('GET', '/api/food_orders/open'); + $this->assertResponseIsSuccessful(); + $this->assertResponseHeaderSame('content-type', 'application/ld+json; charset=utf-8'); + $this->assertJsonContains([ + '@context' => '/api/contexts/FoodOrder', + '@id' => '/api/food_orders/open', + '@type' => 'Collection', + ]); + + // Get the response content and verify that all returned orders are open + $array = $response->toArray(); + + // If we have no items, we should still have a successful response + if ($array['totalItems'] === 0) { + return; + } + + // For each order in the response, check that it is not closed + foreach ($array['member'] as $order) { + // An order is considered open if either: + // 1. closedAt is null or + // 2. closedAt is in the future + $closedAt = isset($order['closedAt']) ? new DateTimeImmutable($order['closedAt']) : null; + $now = new DateTimeImmutable; + + // Assert that the order is open (not closed) + $isOpen = (! $closedAt instanceof DateTimeImmutable || $closedAt > $now); + expect($isOpen) + ->toBeTrue('Order should be open but is closed'); + } +}); diff --git a/tests/Feature/Controller/FoodOrderControllerTest.php b/tests/Feature/Controller/FoodOrderControllerTest.php index 36b541c..dd85add 100644 --- a/tests/Feature/Controller/FoodOrderControllerTest.php +++ b/tests/Feature/Controller/FoodOrderControllerTest.php @@ -44,7 +44,7 @@ describe(FoodOrderController::class, function (): void { $crawler = $this->client->request('GET', "{$this->path}list"); $this->assertResponseStatusCodeSame(200); - $this->assertPageTitleContains('FoodOrder index'); + $this->assertPageTitleContains('Food Orders'); $this->assertCount( 1, $crawler->filter('td') @@ -99,17 +99,29 @@ describe(FoodOrderController::class, function (): void { $crawler = $this->client->request('GET', "{$this->path}{$order->getId()}"); $this->assertResponseIsSuccessful(); - $tdContent = $crawler->filter( - 'table.table:nth-child(6) > tbody:nth-child(2) > tr:nth-child(1) > td:nth-child(3)' - )->text(); + + // Find all tables and get the last one (order items table) + $tables = $crawler->filter('table'); + $lastTable = $tables->eq($tables->count() - 1); + + // Get the item names from the table rows + $rows = $lastTable->filter('tbody tr'); + $tdContent = $rows->eq(0) + ->filter('td') + ->eq(2) + ->text(); $this->assertEquals('A', $tdContent); - $tdContent = $crawler->filter( - 'table.table:nth-child(6) > tbody:nth-child(2) > tr:nth-child(2) > td:nth-child(3)' - )->text(); + + $tdContent = $rows->eq(1) + ->filter('td') + ->eq(2) + ->text(); $this->assertEquals('B', $tdContent); - $tdContent = $crawler->filter( - 'table.table:nth-child(6) > tbody:nth-child(2) > tr:nth-child(3) > td:nth-child(3)' - )->text(); + + $tdContent = $rows->eq(2) + ->filter('td') + ->eq(2) + ->text(); $this->assertEquals('C', $tdContent); }); @@ -124,12 +136,12 @@ describe(FoodOrderController::class, function (): void { $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list"); $this->assertResponseStatusCodeSame(200); - $this->assertPageTitleContains('FoodOrder index'); + $this->assertPageTitleContains('Food Orders'); $this->assertElementContainsCount( $crawler, 'td', 1, - 'older orders' + 'for older orders' ); $this->assertElementContainsCount( $crawler, @@ -139,7 +151,7 @@ describe(FoodOrderController::class, function (): void { ); }); - test('paginatedFirstPage', function (int $page, int $prevPage, int $nextPage, int $items = 10): void { + test('paginatedFirstPage', function (int $page, int $prevPage, int $nextPage, int $items = 20): void { foreach (range(1, 35) as $i) { $order = new FoodOrder($this->generateOldUlid()); $order->setFoodVendor($this->vendor); @@ -150,7 +162,7 @@ describe(FoodOrderController::class, function (): void { $this->manager->flush(); $crawler = $this->client->request('GET', "{$this->path}list/archive/{$page}"); $this->assertResponseStatusCodeSame(200); - $this->assertPageTitleContains('FoodOrder index'); + $this->assertPageTitleContains('Food Orders'); $this->assertElementContainsCount( $crawler, 'td', @@ -160,14 +172,14 @@ describe(FoodOrderController::class, function (): void { if ($prevPage > 0) { $prevPage = $prevPage === 1 ? '' : "/{$prevPage}"; $node = $crawler->filter('a') - ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'previous page') + ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'Previous Page') ->first(); $target = $node->attr('href'); $this->assertTrue(str_ends_with((string) $target, $prevPage)); } if ($prevPage > 3) { $node = $crawler->filter('a') - ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'next page') + ->reduce(static fn(Crawler $node, $i): bool => $node->text() === 'Next Page') ->first(); $target = $node->attr('href'); $this->assertTrue(str_ends_with((string) $target, "/{$nextPage}")); @@ -178,7 +190,7 @@ describe(FoodOrderController::class, function (): void { [1, 0, 2], [2, 1, 3], [3, 2, 4], - [4, 3, 0, 5], + [4, 3, 0, 10], ] ); @@ -231,30 +243,6 @@ describe(FoodOrderController::class, function (): void { $this->assertTrue($openOrder->isClosed()); }); - test('api_latest_order', function (): void { - // Create an older order - $olderOrder = new FoodOrder($this->generateOldUlid()); - $olderOrder->setFoodVendor($this->vendor); - $this->manager->persist($olderOrder); - - // Create the latest order - $latestOrder = new FoodOrder; - $latestOrder->setFoodVendor($this->vendor); - $this->manager->persist($latestOrder); - - $this->manager->flush(); - - // Test the API endpoint - $this->client->request('GET', '/api/food_orders/latest'); - $this->assertResponseIsSuccessful(); - $this->assertResponseHeaderSame('Content-Type', 'application/ld+json; charset=utf-8'); - - $response = json_decode($this->client->getResponse()->getContent(), true); - $this->assertIsArray($response); - $this->assertArrayHasKey('@id', $response); - $this->assertStringContainsString($latestOrder->getId()->__toString(), $response['@id']); - }); - }) ->covers( FoodOrderController::class, diff --git a/tests/Feature/Controller/FoodVendorControllerTest.php b/tests/Feature/Controller/FoodVendorControllerTest.php index d6d64cb..42e04a7 100644 --- a/tests/Feature/Controller/FoodVendorControllerTest.php +++ b/tests/Feature/Controller/FoodVendorControllerTest.php @@ -29,7 +29,7 @@ describe(FoodVendorController::class, function (): void { $this->client->request('GET', $this->path); $this->assertResponseStatusCodeSame(200); - $this->assertPageTitleContains('FoodVendor index'); + $this->assertPageTitleContains('Food Vendors'); }); test('new', function (): void { diff --git a/tests/Feature/Controller/MenuItemControllerTest.php b/tests/Feature/Controller/MenuItemControllerTest.php index fd63447..f9dcd8d 100644 --- a/tests/Feature/Controller/MenuItemControllerTest.php +++ b/tests/Feature/Controller/MenuItemControllerTest.php @@ -136,10 +136,9 @@ describe(MenuItemController::class, function (): void { $this->assertTrue($menuItem->isDeleted()); $crawler = $this->client->request('GET', '/order/item/new/' . $order->getId()); - $count = $crawler->filter('body > main:nth-child(2) > div:nth-child(5)') - ->children() + $count = $crawler->filter('form') ->count(); - $this->assertSame(2, $count); + $this->assertSame(1, $count); $this->assertResponseIsSuccessful(); diff --git a/tests/Feature/Controller/OrderItemControllerTest.php b/tests/Feature/Controller/OrderItemControllerTest.php index afbed56..4eb10f5 100644 --- a/tests/Feature/Controller/OrderItemControllerTest.php +++ b/tests/Feature/Controller/OrderItemControllerTest.php @@ -60,8 +60,7 @@ describe(OrderItemController::class, function (): void { sprintf('%snew/%s', $this->path, $this->order->getId()) ); - $children = $crawler->filter('body > main:nth-child(2) > div:nth-child(5)') - ->children(); + $children = $crawler->filter('form'); $this->assertCount(1, $children); diff --git a/tests/Pest.php b/tests/Pest.php index 846dfad..8eae8ad 100644 --- a/tests/Pest.php +++ b/tests/Pest.php @@ -1,5 +1,6 @@ extends(DbWebTest::class)->in('Feature/Controller/*.php'); +pest() + ->extends(DbApiTestCase::class)->in('Feature/Api/*.php'); /* |-------------------------------------------------------------------------- diff --git a/tests/Unit/ExampleTest.php b/tests/Unit/ExampleTest.php new file mode 100644 index 0000000..029be1b --- /dev/null +++ b/tests/Unit/ExampleTest.php @@ -0,0 +1,21 @@ +toBeTrue(); + expect(1 + 1) + ->toBe(2); + expect('hello world') + ->toContain('world'); +}); + +test('array operations', function (): void { + $array = [1, 2, 3]; + + expect($array) + ->toHaveCount(3); + expect($array) + ->toContain(2); + expect($array[0])->toBe(1); +});