From 1038bb2ca7572be76632fdb92372ed4bf5fb54e8 Mon Sep 17 00:00:00 2001 From: COil Date: Sat, 7 Feb 2026 12:18:33 +0100 Subject: [PATCH] feat: remove Doctrine Remove Doctrine DBAL, ORM, Migrations, and Zenstruck Foundry packages to keep the framework lightweight. This includes: - Removed doctrine-bundle, doctrine-orm, doctrine-dbal, doctrine-migrations-bundle, zenstruck/foundry from composer.json - Removed Doctrine configuration files (doctrine.php, doctrine_migrations.php, zenstruck_foundry.php) - Removed ListUsersAction controller and related Entity, Repository, Factory, Story classes - Removed associated tests and templates - Removed database migration files - Updated Makefile and castor.php to remove Doctrine-related tasks - Updated .env, templates/base.html.twig, and phpunit.xml.dist All tests pass and code coverage remains at 100%. --- .env | 10 - Makefile | 14 +- castor.php | 40 +- composer.json | 7 +- composer.lock | 1761 ++--------------- config/bundles.php | 3 - config/packages/doctrine.php | 28 - config/packages/doctrine_migrations.php | 14 - config/packages/zenstruck_foundry.php | 29 - migrations/.gitignore | 0 migrations/Version20260117053612.php | 31 - phpunit.xml.dist | 1 - src/Controller/ListUsersAction.php | 23 - src/Controller/ListUsersActionDto.php | 20 - src/Data/Controller/ListUsersActionData.php | 26 - src/Entity/.gitignore | 0 src/Entity/User.php | 167 -- src/Factory/UserFactory.php | 35 - src/Repository/.gitignore | 0 src/Repository/UserRepository.php | 31 - src/Story/AppStory.php | 22 - symfony.lock | 49 - .../App/Controller/ListUsersAction.html.twig | 81 - templates/base.html.twig | 1 - .../Controller/ListUsersActionTest.php | 27 - tests/Integration/Entity/UserTest.php | 40 - tests/Unit/Entity/UserTest.php | 47 - vendor-bin/php-cs-fixer/composer.lock | 12 +- 28 files changed, 219 insertions(+), 2300 deletions(-) delete mode 100644 config/packages/doctrine.php delete mode 100644 config/packages/doctrine_migrations.php delete mode 100644 config/packages/zenstruck_foundry.php delete mode 100644 migrations/.gitignore delete mode 100644 migrations/Version20260117053612.php delete mode 100644 src/Controller/ListUsersAction.php delete mode 100644 src/Controller/ListUsersActionDto.php delete mode 100644 src/Data/Controller/ListUsersActionData.php delete mode 100644 src/Entity/.gitignore delete mode 100644 src/Entity/User.php delete mode 100644 src/Factory/UserFactory.php delete mode 100644 src/Repository/.gitignore delete mode 100644 src/Repository/UserRepository.php delete mode 100644 src/Story/AppStory.php delete mode 100644 templates/App/Controller/ListUsersAction.html.twig delete mode 100644 tests/Functional/Controller/ListUsersActionTest.php delete mode 100644 tests/Integration/Entity/UserTest.php delete mode 100644 tests/Unit/Entity/UserTest.php diff --git a/.env b/.env index 1207380..7adf6f3 100644 --- a/.env +++ b/.env @@ -23,13 +23,3 @@ APP_SECRET= # To test the production environment, run "make go-prod" or "castor symfony:go-prod" # To come back to the development environment, run "make go-dev" or "castor symfony:go-dev" - -###> doctrine/doctrine-bundle ### -# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url -# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml -# -# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" -# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8.0.32&charset=utf8mb4" -# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=10.11.2-MariaDB&charset=utf8mb4" -DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db" -###< doctrine/doctrine-bundle ### diff --git a/Makefile b/Makefile index 2d74c7f..cb32ea6 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,7 @@ help: ## Outputs this help screen ## β€”β€” Symfony binary πŸ’» β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” -start: load-fixtures ## Serve the application with the Symfony binary and load fixtures +start: ## Serve the application with the Symfony binary @symfony serve --daemon stop: ## Stop the web server @@ -41,11 +41,6 @@ warmup: ## Warmup the dev cache for the static analysis purge: ## Purge all Symfony cache and logs @rm -rf ./var/cache/* ./var/log/* ./var/coverage/* -load-fixtures: ## Reset migrations and load the database fixtures - @rm -f ./var/data.db - @bin/console doctrine:migrations:migrate --env=dev --no-interaction - @bin/console foundry:load-fixtures --env=dev --no-interaction - ## β€”β€” Tests βœ… β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€” test: ## Run tests with optional suite, filter and options (to debug use "make test options=--debug") @@ -75,7 +70,7 @@ test-unit: testsuite=unit test-unit: test coverage: ## Generate the HTML PHPUnit code coverage report (stored in var/coverage) -coverage: purge load-fixtures +coverage: purge @XDEBUG_MODE=coverage php -d xdebug.enable=1 -d memory_limit=-1 vendor/bin/phpunit --coverage-html=var/coverage --coverage-text=$(COVERAGE_TEXT_REPORT) @php bin/coverage-checker.php $(COVERAGE_TEXT_REPORT) $(COVERAGE_THRESHOLD) @@ -114,14 +109,11 @@ lint-container: ## Lint the Symfony DI container lint-twig: ## Lint Twig files @bin/console lint:twig templates/ -lint-doctrine: ## Validate Doctrine schema - @bin/console doctrine:schema:validate - fix: ## Run all fixers fix: fix-php fix-js-css lint: ## Run all linters -lint: stan lint-php lint-doctrine lint-js-css lint-container lint-twig +lint: stan lint-php lint-js-css lint-container lint-twig ci: ## Run CI locally ci: coverage warmup lint diff --git a/castor.php b/castor.php index b0b121b..14bc2ec 100644 --- a/castor.php +++ b/castor.php @@ -50,7 +50,6 @@ function aborted(string $message = 'Aborted'): void function start(): void { title('symfony:start'); - loadFixtures(); run('symfony serve --daemon'); } @@ -59,7 +58,6 @@ function stop(): void { title('symfony:stop'); run('symfony server:stop'); - resetDatabase(); } #[AsTask(namespace: 'symfony', description: 'Switch to the production environment', aliases: ['go-prod'])] @@ -99,23 +97,6 @@ function purge(): void success(exit_code('rm -rf ./var/cache/* ./var/log/* ./var/coverage/*')); } -#[AsTask(namespace: 'app', description: 'Load the database fixtures', aliases: ['load-fixtures'])] -function loadFixtures(): void -{ - title('app:load-fixtures'); - resetDatabase(); - io()->note('Running db migrations...'); - success(exit_code('bin/console doctrine:migrations:migrate --no-interaction')); - io()->note('Load fixtures...'); - success(exit_code('bin/console foundry:load-fixtures --env=dev --no-interaction')); -} - -function resetDatabase(): void -{ - io()->note('Resetting db...'); - success(exit_code('rm -f ./var/data.db')); -} - const PHP_UNIT_CMD = '/vendor/bin/phpunit --testsuite=%s --filter=%s %s'; const PHP_UNIT_SUITES = ['api', 'e2e', 'functional', 'integration', 'unit']; @@ -131,7 +112,6 @@ function getParameters(): array function test_all(): int { title('test:all'); - loadFixtures(); [$filter, $options] = getParameters(); $ec = exit_code(__DIR__.sprintf(PHP_UNIT_CMD, implode(',', PHP_UNIT_SUITES), $filter, $options)); io()->writeln(''); @@ -199,7 +179,6 @@ function coverage(): int { title('test:coverage'); purge(); - loadFixtures(); $ec = exit_code(sprintf('php -d xdebug.enable=1 -d memory_limit=-1 vendor/bin/phpunit --coverage-html=var/coverage --coverage-text=%s', COVERAGE_TEXT_REPORT), context: context()->withEnvironment(['XDEBUG_MODE' => 'coverage']) ); @@ -344,31 +323,21 @@ function lint_twig(): int return exit_code('bin/console lint:twig templates/'); } -#[AsTask(name: 'doctrine', namespace: 'lint', description: 'Validate Doctrine schema', aliases: ['lint-doctrine'])] -function lint_doctrine(): int -{ - title('lint:doctrine'); - - return exit_code('bin/console doctrine:schema:validate'); -} - #[AsTask(name: 'all', namespace: 'lint', description: 'Run all lints', aliases: ['lint'])] function lint_all(): int { title('lint:all'); $ec1 = stan(); $ec2 = lint_php(); - $ec3 = lint_doctrine(); - $ec4 = lint_js_css(); - $ec5 = lint_container(); - $ec6 = lint_twig(); + $ec3 = lint_js_css(); + $ec4 = lint_container(); + $ec5 = lint_twig(); - return success($ec1 + $ec2 + $ec3 + $ec4 + $ec5 + $ec6); + return success($ec1 + $ec2 + $ec3 + $ec4 + $ec5); // if you want to speed up the process, you can run these commands in parallel // parallel( // fn() => lint_php(), - // fn() => lint_doctrine(), // fn() => lint_container(), // fn() => lint_twig(), // ); @@ -379,7 +348,6 @@ function ci(): void { title('ci:all'); purge(); - loadFixtures(); io()->section('Coverage'); coverage(); io()->section('Lints'); diff --git a/composer.json b/composer.json index 82bcfdb..31d2ad1 100644 --- a/composer.json +++ b/composer.json @@ -22,10 +22,6 @@ "ext-mbstring": "*", "ext-simplexml": "*", "ext-xml": "*", - "doctrine/dbal": "^4.0", - "doctrine/doctrine-bundle": "^3.0", - "doctrine/doctrine-migrations-bundle": "^3.3", - "doctrine/orm": "^3.3", "league/commonmark": "^2.4", "symfony/asset": "~8.0.0", "symfony/asset-mapper": "~8.0.0", @@ -65,8 +61,7 @@ "symfony/maker-bundle": "^1.61", "symfony/requirements-checker": "^2.0", "symfony/stopwatch": "~8.0.0", - "symfony/web-profiler-bundle": "~8.0.0", - "zenstruck/foundry": "^2.4" + "symfony/web-profiler-bundle": "~8.0.0" }, "replace": { "symfony/polyfill-ctype": "*", diff --git a/composer.lock b/composer.lock index f7a2ec7..fd3acd5 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "7a5cb5abfb96f9cb113b053088d584e5", + "content-hash": "da1129b3cec13513717a5f1e3f703b5a", "packages": [ { "name": "composer/semver", @@ -158,1112 +158,6 @@ }, "time": "2024-07-08T12:26:09+00:00" }, - { - "name": "doctrine/collections", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/collections.git", - "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/7713da39d8e237f28411d6a616a3dce5e20d5de2", - "reference": "7713da39d8e237f28411d6a616a3dce5e20d5de2", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1", - "php": "^8.1", - "symfony/polyfill-php84": "^1.30" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "ext-json": "*", - "phpstan/phpstan": "^2.1.30", - "phpstan/phpstan-phpunit": "^2.0.7", - "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Collections\\": "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" - } - ], - "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", - "homepage": "https://www.doctrine-project.org/projects/collections.html", - "keywords": [ - "array", - "collections", - "iterators", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.6.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%2Fcollections", - "type": "tidelift" - } - ], - "time": "2026-01-15T10:01:58+00:00" - }, - { - "name": "doctrine/dbal", - "version": "4.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", - "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", - "shasum": "" - }, - "require": { - "doctrine/deprecations": "^1.1.5", - "php": "^8.2", - "psr/cache": "^1|^2|^3", - "psr/log": "^1|^2|^3" - }, - "require-dev": { - "doctrine/coding-standard": "14.0.0", - "fig/log-test": "^1", - "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.30", - "phpstan/phpstan-phpunit": "2.0.7", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "11.5.23", - "slevomat/coding-standard": "8.24.0", - "squizlabs/php_codesniffer": "4.0.0", - "symfony/cache": "^6.3.8|^7.0|^8.0", - "symfony/console": "^5.4|^6.3|^7.0|^8.0" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\DBAL\\": "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" - } - ], - "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", - "homepage": "https://www.doctrine-project.org/projects/dbal.html", - "keywords": [ - "abstraction", - "database", - "db2", - "dbal", - "mariadb", - "mssql", - "mysql", - "oci8", - "oracle", - "pdo", - "pgsql", - "postgresql", - "queryobject", - "sasql", - "sql", - "sqlite", - "sqlserver", - "sqlsrv" - ], - "support": { - "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.4.1" - }, - "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%2Fdbal", - "type": "tidelift" - } - ], - "time": "2025-12-04T10:11:03+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "phpunit/phpunit": "<=7.5 || >=13" - }, - "require-dev": { - "doctrine/coding-standard": "^9 || ^12 || ^13", - "phpstan/phpstan": "1.4.10 || 2.1.11", - "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", - "psr/log": "^1 || ^2 || ^3" - }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Deprecations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", - "support": { - "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.5" - }, - "time": "2025-04-07T20:06:18+00:00" - }, - { - "name": "doctrine/doctrine-bundle", - "version": "3.2.2", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/af84173db6978c3d2688ea3bcf3a91720b0704ce", - "reference": "af84173db6978c3d2688ea3bcf3a91720b0704ce", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^4.0", - "doctrine/deprecations": "^1.0", - "doctrine/persistence": "^4", - "doctrine/sql-formatter": "^1.0.1", - "php": "^8.4", - "symfony/cache": "^6.4 || ^7.0 || ^8.0", - "symfony/config": "^6.4 || ^7.0 || ^8.0", - "symfony/console": "^6.4 || ^7.0 || ^8.0", - "symfony/dependency-injection": "^6.4 || ^7.0 || ^8.0", - "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3 || ^8.0", - "symfony/framework-bundle": "^6.4 || ^7.0 || ^8.0", - "symfony/service-contracts": "^3" - }, - "conflict": { - "doctrine/orm": "<3.0 || >=4.0", - "twig/twig": "<3.0.4" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "doctrine/orm": "^3.4.4", - "phpstan/phpstan": "2.1.1", - "phpstan/phpstan-phpunit": "2.0.3", - "phpstan/phpstan-strict-rules": "^2", - "phpstan/phpstan-symfony": "^2.0", - "phpunit/phpunit": "^12.3.10", - "psr/log": "^3.0", - "symfony/doctrine-messenger": "^6.4 || ^7.0 || ^8.0", - "symfony/expression-language": "^6.4 || ^7.0 || ^8.0", - "symfony/messenger": "^6.4 || ^7.0 || ^8.0", - "symfony/property-info": "^6.4 || ^7.0 || ^8.0", - "symfony/security-bundle": "^6.4 || ^7.0 || ^8.0", - "symfony/stopwatch": "^6.4 || ^7.0 || ^8.0", - "symfony/string": "^6.4 || ^7.0 || ^8.0", - "symfony/twig-bridge": "^6.4 || ^7.0 || ^8.0", - "symfony/validator": "^6.4 || ^7.0 || ^8.0", - "symfony/web-profiler-bundle": "^6.4 || ^7.0 || ^8.0", - "symfony/yaml": "^6.4 || ^7.0 || ^8.0", - "twig/twig": "^3.21.1" - }, - "suggest": { - "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", - "ext-pdo": "*", - "symfony/web-profiler-bundle": "To use the data collector." - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - }, - { - "name": "Doctrine Project", - "homepage": "https://www.doctrine-project.org/" - } - ], - "description": "Symfony DoctrineBundle", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "database", - "dbal", - "orm", - "persistence" - ], - "support": { - "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/3.2.2" - }, - "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%2Fdoctrine-bundle", - "type": "tidelift" - } - ], - "time": "2025-12-24T12:24:29+00:00" - }, - { - "name": "doctrine/doctrine-migrations-bundle", - "version": "3.7.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", - "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", - "shasum": "" - }, - "require": { - "doctrine/doctrine-bundle": "^2.4 || ^3.0", - "doctrine/migrations": "^3.2", - "php": "^7.2 || ^8.0", - "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0 || ^8.0" - }, - "require-dev": { - "composer/semver": "^3.0", - "doctrine/coding-standard": "^12 || ^14", - "doctrine/orm": "^2.6 || ^3", - "phpstan/phpstan": "^1.4 || ^2", - "phpstan/phpstan-deprecation-rules": "^1 || ^2", - "phpstan/phpstan-phpunit": "^1 || ^2", - "phpstan/phpstan-strict-rules": "^1.1 || ^2", - "phpstan/phpstan-symfony": "^1.3 || ^2", - "phpunit/phpunit": "^8.5 || ^9.5", - "symfony/phpunit-bridge": "^6.3 || ^7 || ^8", - "symfony/var-exporter": "^5.4 || ^6 || ^7 || ^8" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Doctrine\\Bundle\\MigrationsBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Doctrine Project", - "homepage": "https://www.doctrine-project.org" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony DoctrineMigrationsBundle", - "homepage": "https://www.doctrine-project.org", - "keywords": [ - "dbal", - "migrations", - "schema" - ], - "support": { - "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.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%2Fdoctrine-migrations-bundle", - "type": "tidelift" - } - ], - "time": "2025-11-15T19:02:59+00:00" - }, - { - "name": "doctrine/event-manager", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/event-manager.git", - "reference": "c07799fcf5ad362050960a0fd068dded40b1e312" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/c07799fcf5ad362050960a0fd068dded40b1e312", - "reference": "c07799fcf5ad362050960a0fd068dded40b1e312", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "doctrine/common": "<2.9" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "phpdocumentor/guides-cli": "^1.4", - "phpstan/phpstan": "^2.1.32", - "phpunit/phpunit": "^10.5.58" - }, - "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": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", - "homepage": "https://www.doctrine-project.org/projects/event-manager.html", - "keywords": [ - "event", - "event dispatcher", - "event manager", - "event system", - "events" - ], - "support": { - "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/2.1.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%2Fevent-manager", - "type": "tidelift" - } - ], - "time": "2026-01-17T22:40:21+00:00" - }, - { - "name": "doctrine/inflector", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", - "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^12.0 || ^13.0", - "phpstan/phpstan": "^1.12 || ^2.0", - "phpstan/phpstan-phpunit": "^1.4 || ^2.0", - "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", - "phpunit/phpunit": "^8.5 || ^12.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Inflector\\": "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" - } - ], - "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", - "homepage": "https://www.doctrine-project.org/projects/inflector.html", - "keywords": [ - "inflection", - "inflector", - "lowercase", - "manipulation", - "php", - "plural", - "singular", - "strings", - "uppercase", - "words" - ], - "support": { - "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.1.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%2Finflector", - "type": "tidelift" - } - ], - "time": "2025-08-10T19:31:58+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "2.1.0", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", - "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", - "shasum": "" - }, - "require": { - "php": "^8.4" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-phpunit": "^2.0", - "phpunit/phpunit": "^10.5.58" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.1.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%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2026-01-05T06:47:08+00:00" - }, - { - "name": "doctrine/lexer", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^12", - "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^5.21" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Lexer\\": "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": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" - } - ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", - "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" - ], - "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.0.1" - }, - "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%2Flexer", - "type": "tidelift" - } - ], - "time": "2024-02-05T11:56:58+00:00" - }, - { - "name": "doctrine/migrations", - "version": "3.9.5", - "source": { - "type": "git", - "url": "https://github.com/doctrine/migrations.git", - "reference": "1b823afbc40f932dae8272574faee53f2755eac5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", - "reference": "1b823afbc40f932dae8272574faee53f2755eac5", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/dbal": "^3.6 || ^4", - "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.2 || ^2.0", - "php": "^8.1", - "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" - }, - "conflict": { - "doctrine/orm": "<2.12 || >=4" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "doctrine/orm": "^2.13 || ^3", - "doctrine/persistence": "^2 || ^3 || ^4", - "doctrine/sql-formatter": "^1.0", - "ext-pdo_sqlite": "*", - "fig/log-test": "^1", - "phpstan/phpstan": "^2", - "phpstan/phpstan-deprecation-rules": "^2", - "phpstan/phpstan-phpunit": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpstan/phpstan-symfony": "^2", - "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", - "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" - }, - "suggest": { - "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", - "symfony/yaml": "Allows the use of yaml for migration configuration files." - }, - "bin": [ - "bin/doctrine-migrations" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Migrations\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Michael Simonson", - "email": "contact@mikesimonson.com" - } - ], - "description": "PHP Doctrine Migrations project offer additional functionality on top of the database abstraction layer (DBAL) for versioning your database schema and easily deploying changes to it. It is a very easy to use and a powerful tool.", - "homepage": "https://www.doctrine-project.org/projects/migrations.html", - "keywords": [ - "database", - "dbal", - "migrations" - ], - "support": { - "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.5" - }, - "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%2Fmigrations", - "type": "tidelift" - } - ], - "time": "2025-11-20T11:15:36+00:00" - }, - { - "name": "doctrine/orm", - "version": "3.6.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/orm.git", - "reference": "2148940290e4c44b9101095707e71fb590832fa5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/2148940290e4c44b9101095707e71fb590832fa5", - "reference": "2148940290e4c44b9101095707e71fb590832fa5", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2", - "doctrine/collections": "^2.2", - "doctrine/dbal": "^3.8.2 || ^4", - "doctrine/deprecations": "^0.5.3 || ^1", - "doctrine/event-manager": "^1.2 || ^2", - "doctrine/inflector": "^1.4 || ^2.0", - "doctrine/instantiator": "^1.3 || ^2", - "doctrine/lexer": "^3", - "doctrine/persistence": "^3.3.1 || ^4", - "ext-ctype": "*", - "php": "^8.1", - "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^14.0", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.1.23", - "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.5.0 || ^11.5", - "psr/log": "^1 || ^2 || ^3", - "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" - }, - "suggest": { - "ext-dom": "Provides support for XSD validation for XML mapping files", - "symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\ORM\\": "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": "Marco Pivetta", - "email": "ocramius@gmail.com" - } - ], - "description": "Object-Relational-Mapper for PHP", - "homepage": "https://www.doctrine-project.org/projects/orm.html", - "keywords": [ - "database", - "orm" - ], - "support": { - "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.6.1" - }, - "time": "2026-01-09T05:28:15+00:00" - }, - { - "name": "doctrine/persistence", - "version": "4.1.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/persistence.git", - "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", - "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "^1 || ^2", - "php": "^8.1", - "psr/cache": "^1.0 || ^2.0 || ^3.0" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "phpstan/phpstan": "2.1.30", - "phpstan/phpstan-phpunit": "^2", - "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "^10.5.58 || ^12", - "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", - "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Persistence\\": "src/Persistence" - } - }, - "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": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", - "homepage": "https://www.doctrine-project.org/projects/persistence.html", - "keywords": [ - "mapper", - "object", - "odm", - "orm", - "persistence" - ], - "support": { - "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/4.1.1" - }, - "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%2Fpersistence", - "type": "tidelift" - } - ], - "time": "2025-10-16T20:13:18+00:00" - }, - { - "name": "doctrine/sql-formatter", - "version": "1.5.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/a8af23a8e9d622505baa2997465782cbe8bb7fc7", - "reference": "a8af23a8e9d622505baa2997465782cbe8bb7fc7", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "require-dev": { - "doctrine/coding-standard": "^14", - "ergebnis/phpunit-slow-test-detector": "^2.20", - "phpstan/phpstan": "^2.1.31", - "phpunit/phpunit": "^10.5.58" - }, - "bin": [ - "bin/sql-formatter" - ], - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\SqlFormatter\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "https://jeremydorn.com/" - } - ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/doctrine/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "support": { - "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.3" - }, - "time": "2025-10-26T09:35:14+00:00" - }, { "name": "league/commonmark", "version": "2.8.0", @@ -1623,16 +517,16 @@ }, { "name": "nette/utils", - "version": "v4.1.1", + "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", + "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", "shasum": "" }, "require": { @@ -1645,7 +539,7 @@ "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -1706,9 +600,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.1" + "source": "https://github.com/nette/utils/tree/v4.1.2" }, - "time": "2025-12-22T12:14:32+00:00" + "time": "2026-02-03T17:21:09+00:00" }, { "name": "psr/cache", @@ -2611,108 +1505,6 @@ ], "time": "2024-09-25T14:21:43+00:00" }, - { - "name": "symfony/doctrine-bridge", - "version": "v8.0.4", - "source": { - "type": "git", - "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "0d07589d03ed7db1833bfe943635872a2e8aebb2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0d07589d03ed7db1833bfe943635872a2e8aebb2", - "reference": "0d07589d03ed7db1833bfe943635872a2e8aebb2", - "shasum": "" - }, - "require": { - "doctrine/event-manager": "^2", - "doctrine/persistence": "^3.1|^4", - "php": ">=8.4", - "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-mbstring": "^1.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/collections": "<1.8", - "doctrine/dbal": "<4.3", - "doctrine/lexer": "<1.1", - "doctrine/orm": "<3.4", - "symfony/property-info": "<8.0" - }, - "require-dev": { - "doctrine/collections": "^1.8|^2.0", - "doctrine/data-fixtures": "^1.1|^2", - "doctrine/dbal": "^4.3", - "doctrine/orm": "^3.4", - "psr/log": "^1|^2|^3", - "symfony/cache": "^7.4|^8.0", - "symfony/config": "^7.4|^8.0", - "symfony/dependency-injection": "^7.4|^8.0", - "symfony/doctrine-messenger": "^7.4|^8.0", - "symfony/expression-language": "^7.4|^8.0", - "symfony/form": "^7.4|^8.0", - "symfony/http-kernel": "^7.4|^8.0", - "symfony/lock": "^7.4|^8.0", - "symfony/messenger": "^7.4|^8.0", - "symfony/property-access": "^7.4|^8.0", - "symfony/property-info": "^8.0", - "symfony/security-core": "^7.4|^8.0", - "symfony/stopwatch": "^7.4|^8.0", - "symfony/translation": "^7.4|^8.0", - "symfony/type-info": "^7.4|^8.0", - "symfony/uid": "^7.4|^8.0", - "symfony/validator": "^7.4|^8.0", - "symfony/var-dumper": "^7.4|^8.0" - }, - "type": "symfony-bridge", - "autoload": { - "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "" - }, - "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": "Provides integration for Doctrine with various Symfony components", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v8.0.4" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2026-01-23T11:07:10+00:00" - }, { "name": "symfony/dotenv", "version": "v8.0.0", @@ -5326,90 +4118,24 @@ "autoload": { "psr-4": { "Symfony\\UX\\StimulusBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Integration with your Symfony app & Stimulus!", - "keywords": [ - "symfony-ux" - ], - "support": { - "source": "https://github.com/symfony/stimulus-bundle/tree/v2.32.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://github.com/nicolas-grekas", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2025-12-02T07:12:06+00:00" - }, - { - "name": "symfony/stopwatch", - "version": "v8.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/stopwatch.git", - "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", - "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "symfony/service-contracts": "^2.5|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Stopwatch\\": "" - }, - "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": "Provides a way to profile code", - "homepage": "https://symfony.com", + "description": "Integration with your Symfony app & Stimulus!", + "keywords": [ + "symfony-ux" + ], "support": { - "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" + "source": "https://github.com/symfony/stimulus-bundle/tree/v2.32.0" }, "funding": [ { @@ -5429,7 +4155,7 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:36:47+00:00" + "time": "2025-12-02T07:12:06+00:00" }, { "name": "symfony/string", @@ -6628,16 +5354,16 @@ "packages-dev": [ { "name": "bamarni/composer-bin-plugin", - "version": "1.8.3", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/bamarni/composer-bin-plugin.git", - "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d" + "reference": "641d0663f5ac270b1aeec4337b7856f76204df47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/e7ef9e012667327516c24e5fad9903a3bc91389d", - "reference": "e7ef9e012667327516c24e5fad9903a3bc91389d", + "url": "https://api.github.com/repos/bamarni/composer-bin-plugin/zipball/641d0663f5ac270b1aeec4337b7856f76204df47", + "reference": "641d0663f5ac270b1aeec4337b7856f76204df47", "shasum": "" }, "require": { @@ -6645,11 +5371,11 @@ "php": "^7.2.5 || ^8.0" }, "require-dev": { - "composer/composer": "^2.0", + "composer/composer": "^2.2.26", "ext-json": "*", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan": "^1.8 || ^2.0", + "phpstan/phpstan-phpunit": "^1.1 || ^2.0", "phpunit/phpunit": "^8.5 || ^9.6 || ^10.0", "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", @@ -6679,50 +5405,38 @@ ], "support": { "issues": "https://github.com/bamarni/composer-bin-plugin/issues", - "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.8.3" + "source": "https://github.com/bamarni/composer-bin-plugin/tree/1.9.1" }, - "time": "2025-11-24T19:20:55+00:00" + "time": "2026-02-04T10:18:12+00:00" }, { - "name": "fakerphp/faker", - "version": "v1.24.1", + "name": "doctrine/inflector", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/FakerPHP/Faker.git", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" + "url": "https://github.com/doctrine/inflector.git", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", - "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "symfony/deprecation-contracts": "^2.2 || ^3.0" - }, - "conflict": { - "fzaninotto/faker": "*" + "php": "^7.2 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "doctrine/persistence": "^1.3 || ^2.0", - "ext-intl": "*", - "phpunit/phpunit": "^9.5.26", - "symfony/phpunit-bridge": "^5.4.16" - }, - "suggest": { - "doctrine/orm": "Required to use Faker\\ORM\\Doctrine", - "ext-curl": "Required by Faker\\Provider\\Image to download images.", - "ext-dom": "Required by Faker\\Provider\\HtmlLorem for generating random HTML.", - "ext-iconv": "Required by Faker\\Provider\\ru_RU\\Text::realText() for generating real Russian text.", - "ext-mbstring": "Required for multibyte Unicode string functionality." + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Faker\\": "src/Faker/" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6731,20 +5445,59 @@ ], "authors": [ { - "name": "FranΓ§ois Zaninotto" + "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" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ - "data", - "faker", - "fixtures" + "inflection", + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], "support": { - "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" + "issues": "https://github.com/doctrine/inflector/issues", + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, - "time": "2024-11-21T13:46:39+00:00" + "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%2Finflector", + "type": "tidelift" + } + ], + "time": "2025-08-10T19:31:58+00:00" }, { "name": "kocal/biome-js-bundle", @@ -7087,11 +5840,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.37", + "version": "2.1.38", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/28cd424c5ea984128c95cfa7ea658808e8954e49", - "reference": "28cd424c5ea984128c95cfa7ea658808e8954e49", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dfaf1f530e1663aa167bc3e52197adb221582629", + "reference": "dfaf1f530e1663aa167bc3e52197adb221582629", "shasum": "" }, "require": { @@ -7136,7 +5889,7 @@ "type": "github" } ], - "time": "2026-01-24T08:21:55+00:00" + "time": "2026-01-30T17:12:46+00:00" }, { "name": "phpstan/phpstan-symfony", @@ -7211,16 +5964,16 @@ }, { "name": "phpunit/php-code-coverage", - "version": "12.5.2", + "version": "12.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b" + "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4a9739b51cbcb355f6e95659612f92e282a7077b", - "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b015312f28dd75b75d3422ca37dff2cd1a565e8d", + "reference": "b015312f28dd75b75d3422ca37dff2cd1a565e8d", "shasum": "" }, "require": { @@ -7276,7 +6029,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.2" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.3" }, "funding": [ { @@ -7296,20 +6049,20 @@ "type": "tidelift" } ], - "time": "2025-12-24T07:03:04+00:00" + "time": "2026-02-06T06:01:44+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "961bc913d42fe24a257bfff826a5068079ac7782" + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/961bc913d42fe24a257bfff826a5068079ac7782", - "reference": "961bc913d42fe24a257bfff826a5068079ac7782", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", + "reference": "3d1cd096ef6bea4bf2762ba586e35dbd317cbfd5", "shasum": "" }, "require": { @@ -7349,15 +6102,27 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/6.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-file-iterator", + "type": "tidelift" } ], - "time": "2025-02-07T04:58:37+00:00" + "time": "2026-02-02T14:04:18+00:00" }, { "name": "phpunit/php-invoker", @@ -7545,16 +6310,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.8", + "version": "12.5.9", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889" + "reference": "83d4c158526c879b4c5cf7149d27958b6d912373" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/37ddb96c14bfee10304825edbb7e66d341ec6889", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d4c158526c879b4c5cf7149d27958b6d912373", + "reference": "83d4c158526c879b4c5cf7149d27958b6d912373", "shasum": "" }, "require": { @@ -7569,7 +6334,7 @@ "phar-io/version": "^3.2.1", "php": ">=8.3", "phpunit/php-code-coverage": "^12.5.2", - "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-file-iterator": "^6.0.1", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", "phpunit/php-timer": "^8.0.0", @@ -7580,6 +6345,7 @@ "sebastian/exporter": "^7.0.2", "sebastian/global-state": "^8.0.2", "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", "sebastian/type": "^6.0.3", "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" @@ -7622,7 +6388,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.8" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.9" }, "funding": [ { @@ -7646,7 +6412,7 @@ "type": "tidelift" } ], - "time": "2026-01-27T06:12:29+00:00" + "time": "2026-02-05T08:01:09+00:00" }, { "name": "roave/security-advisories", @@ -7654,12 +6420,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "1318024c3af64dbe11dfac73ccc8cec27739b86c" + "reference": "7ea2d110787f6807213e27a1255c6b858ad99d89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1318024c3af64dbe11dfac73ccc8cec27739b86c", - "reference": "1318024c3af64dbe11dfac73ccc8cec27739b86c", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7ea2d110787f6807213e27a1255c6b858ad99d89", + "reference": "7ea2d110787f6807213e27a1255c6b858ad99d89", "shasum": "" }, "conflict": { @@ -7769,6 +6535,7 @@ "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "chrome-php/chrome": "<1.14", + "ci4-cms-erp/ci4ms": "<0.28.5", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", "ckeditor/ckeditor": "<4.25", "clickstorm/cs-seo": ">=6,<6.8|>=7,<7.5|>=8,<8.4|>=9,<9.3", @@ -7800,6 +6567,8 @@ "couleurcitron/tarteaucitron-wp": "<0.3", "cpsit/typo3-mailqueue": "<0.4.3|>=0.5,<0.5.1", "craftcms/cms": "<=4.16.16|>=5,<=5.8.20", + "craftcms/commerce": ">=4.0.0.0-RC1-dev,<=4.10|>=5,<=5.5.1", + "craftcms/composer": ">=4.0.0.0-RC1-dev,<=4.10|>=5.0.0.0-RC1-dev,<=5.5.1", "croogo/croogo": "<=4.0.7", "cuyz/valinor": "<0.12", "czim/file-handling": "<1.5|>=2,<2.3", @@ -7817,7 +6586,7 @@ "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", "desperado/xml-bundle": "<=0.1.7", "dev-lancer/minecraft-motd-parser": "<=1.0.5", - "devcode-it/openstamanager": "<=2.9.4", + "devcode-it/openstamanager": "<=2.9.8", "devgroup/dotplant": "<2020.09.14-dev", "digimix/wp-svg-upload": "<=1", "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", @@ -7877,7 +6646,7 @@ "ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", - "egroupware/egroupware": "<23.1.20240624", + "egroupware/egroupware": "<23.1.20260113|>=26.0.20251208,<26.0.20260113", "elefant/cms": "<2.0.7", "elgg/elgg": "<3.3.24|>=4,<4.0.5", "elijaa/phpmemcacheadmin": "<=1.3", @@ -7900,18 +6669,18 @@ "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1|>=5.3.0.0-beta1,<5.3.5", "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", "ezsystems/ezplatform-http-cache": "<2.3.16", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.35", + "ezsystems/ezplatform-kernel": "<=1.2.5|>=1.3,<1.3.35", "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", "ezsystems/ezplatform-richtext": ">=2.3,<2.3.26|>=3.3,<3.3.40", "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-kernel": "<=6.13.8.1|>=7,<7.5.31", "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<=4.2", "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2025.4|==2025.11|==2025.41|==2025.43", + "facturascripts/facturascripts": "<2025.81", "fastly/magento2": "<1.2.26", "feehi/cms": "<=2.1.1", "feehi/feehicms": "<=2.1.1", @@ -8136,7 +6905,7 @@ "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", "microsoft/microsoft-graph-beta": "<2.0.1", "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.19", + "microweber/microweber": "<2.0.20", "mikehaertl/php-shellcommand": "<1.6.1", "mineadmin/mineadmin": "<=3.0.9", "miniorange/miniorange-saml": "<1.4.3", @@ -8200,7 +6969,7 @@ "open-web-analytics/open-web-analytics": "<1.8.1", "opencart/opencart": ">=0", "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.16", + "openmage/magento-lts": "<20.16.1", "opensolutions/vimbadmin": "<=3.0.15", "opensource-workshop/connect-cms": "<1.8.7|>=2,<2.4.7", "orchid/platform": ">=8,<14.43", @@ -8278,7 +7047,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.2.3", + "prestashop/prestashop": "<8.2.4|>=9.0.0.0-alpha1,<9.0.3", "prestashop/productcomments": "<5.0.2", "prestashop/ps_checkout": "<4.4.1|>=5,<5.0.5", "prestashop/ps_contactinfo": "<=3.3.2", @@ -8289,6 +7058,7 @@ "processwire/processwire": "<=3.0.246", "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", "propel/propel1": ">=1,<=1.7.1", + "psy/psysh": "<=0.11.22|>=0.12,<=0.12.18", "pterodactyl/panel": "<1.12", "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", "ptrofimov/beanstalk_console": "<1.7.14", @@ -8431,7 +7201,7 @@ "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/polyfill": ">=1,<1.10", "symfony/polyfill-php55": ">=1,<1.10", - "symfony/process": "<5.4.46|>=6,<6.4.14|>=7,<7.1.7", + "symfony/process": "<5.4.51|>=6,<6.4.33|>=7,<7.1.7|>=7.3,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", "symfony/routing": ">=2,<2.0.19", "symfony/runtime": ">=5.3,<5.4.46|>=6,<6.4.14|>=7,<7.1.7", @@ -8442,7 +7212,7 @@ "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.4.47|>=6,<6.4.15|>=7,<7.1.8", "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": "<5.4.50|>=6,<6.4.29|>=7,<7.3.7", + "symfony/symfony": "<5.4.51|>=6,<6.4.33|>=7,<7.3.11|>=7.4,<7.4.5|>=8,<8.0.5", "symfony/translation": ">=2,<2.0.17", "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", "symfony/ux-autocomplete": "<2.11.2", @@ -8552,7 +7322,7 @@ "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", "winter/wn-backend-module": "<1.2.4", - "winter/wn-cms-module": "<1.0.476|>=1.1,<1.1.11|>=1.2,<1.2.7", + "winter/wn-cms-module": "<=1.2.9", "winter/wn-dusk-plugin": "<2.1", "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<=1.2.3", @@ -8661,7 +7431,7 @@ "type": "tidelift" } ], - "time": "2026-01-27T23:05:48+00:00" + "time": "2026-02-05T22:08:29+00:00" }, { "name": "sebastian/cli-parser", @@ -10122,6 +8892,72 @@ ], "time": "2024-11-14T22:24:57+00:00" }, + { + "name": "symfony/stopwatch", + "version": "v8.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "shasum": "" + }, + "require": { + "php": ">=8.4", + "symfony/service-contracts": "^2.5|^3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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": "Provides a way to profile code", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2025-08-04T07:36:47+00:00" + }, { "name": "symfony/web-profiler-bundle", "version": "v8.0.4", @@ -10256,193 +9092,6 @@ } ], "time": "2025-12-08T11:19:18+00:00" - }, - { - "name": "zenstruck/assert", - "version": "v1.7.0", - "source": { - "type": "git", - "url": "https://github.com/zenstruck/assert.git", - "reference": "1e32d48847d4e82c345112ca226b21a1a792af0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zenstruck/assert/zipball/1e32d48847d4e82c345112ca226b21a1a792af0a", - "reference": "1e32d48847d4e82c345112ca226b21a1a792af0a", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/polyfill-php81": "^1.23", - "symfony/var-exporter": "^5.4|^6.0|^7.0|^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1.4", - "phpunit/phpunit": "^9.5.21", - "symfony/phpunit-bridge": "^6.3|^7.0|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Zenstruck\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kevin Bond", - "email": "kevinbond@gmail.com" - } - ], - "description": "Standalone, lightweight, framework agnostic, test assertion library.", - "homepage": "https://github.com/zenstruck/assert", - "keywords": [ - "assertion", - "phpunit", - "test" - ], - "support": { - "issues": "https://github.com/zenstruck/assert/issues", - "source": "https://github.com/zenstruck/assert/tree/v1.7.0" - }, - "funding": [ - { - "url": "https://github.com/kbond", - "type": "github" - }, - { - "url": "https://github.com/nikophil", - "type": "github" - } - ], - "time": "2025-12-07T01:59:12+00:00" - }, - { - "name": "zenstruck/foundry", - "version": "v2.8.6", - "source": { - "type": "git", - "url": "https://github.com/zenstruck/foundry.git", - "reference": "6b2c338241148ad1e8ee980b38d40703514cd685" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/zenstruck/foundry/zipball/6b2c338241148ad1e8ee980b38d40703514cd685", - "reference": "6b2c338241148ad1e8ee980b38d40703514cd685", - "shasum": "" - }, - "require": { - "fakerphp/faker": "^1.24", - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.2|^3.0", - "symfony/polyfill-php84": "^1.32", - "symfony/polyfill-php85": "^1.33", - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/var-exporter": "^6.4.9|~7.0.9|^7.1.2|^8.0", - "zenstruck/assert": "^1.4" - }, - "conflict": { - "doctrine/cache": "<1.12.1", - "doctrine/persistence": "<2.0" - }, - "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "dama/doctrine-test-bundle": "^8.0", - "doctrine/collections": "^1.7|^2.0", - "doctrine/common": "^3.2.2", - "doctrine/doctrine-bundle": "^2.10|^3.0", - "doctrine/doctrine-migrations-bundle": "^2.2|^3.0", - "doctrine/mongodb-odm": "^2.4", - "doctrine/mongodb-odm-bundle": "^4.6|^5.0", - "doctrine/orm": "^2.16|^3.0", - "doctrine/persistence": "^2.0|^3.0|^4.0", - "phpunit/phpunit": "^9.5.0 || ^10.0 || ^11.0 || ^12.0", - "symfony/browser-kit": "^6.4|^7.0|^8.0", - "symfony/console": "^6.4|^7.0|^8.0", - "symfony/dotenv": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/flex": "^2.10", - "symfony/framework-bundle": "^6.4|^7.0|^8.0", - "symfony/maker-bundle": "^1.55", - "symfony/phpunit-bridge": "^6.4.26|^7.0|^8.0", - "symfony/routing": "^6.4|^7.0|^8.0", - "symfony/runtime": "^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^3.4", - "symfony/uid": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0", - "symfony/yaml": "^6.4|^7.0|^8.0", - "webmozart/assert": "^1.11" - }, - "type": "library", - "extra": { - "psalm": { - "pluginClass": "Zenstruck\\Foundry\\Psalm\\FoundryPlugin" - }, - "symfony": { - "allow-contrib": false - }, - "bamarni-bin": { - "bin-links": true, - "forward-command": false, - "target-directory": "bin/tools" - } - }, - "autoload": { - "files": [ - "src/functions.php", - "src/Persistence/functions.php", - "src/symfony_console.php" - ], - "psr-4": { - "Zenstruck\\Foundry\\": "src/", - "Zenstruck\\Foundry\\Psalm\\": "utils/psalm", - "Zenstruck\\Foundry\\Utils\\Rector\\": "utils/rector/src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Kevin Bond", - "email": "kevinbond@gmail.com" - }, - { - "name": "Nicolas PHILIPPE", - "email": "nikophil@gmail.com" - } - ], - "description": "A model factory library for creating expressive, auto-completable, on-demand dev/test fixtures with Symfony and Doctrine.", - "homepage": "https://github.com/zenstruck/foundry", - "keywords": [ - "Fixture", - "dev", - "doctrine", - "factory", - "faker", - "symfony", - "test" - ], - "support": { - "issues": "https://github.com/zenstruck/foundry/issues", - "source": "https://github.com/zenstruck/foundry/tree/v2.8.6" - }, - "funding": [ - { - "url": "https://github.com/kbond", - "type": "github" - }, - { - "url": "https://github.com/nikophil", - "type": "github" - } - ], - "time": "2026-01-20T19:53:12+00:00" } ], "aliases": [], diff --git a/config/bundles.php b/config/bundles.php index fa94225..475fcaf 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -13,7 +13,4 @@ Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true], Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true], Kocal\BiomeJsBundle\KocalBiomeJsBundle::class => ['dev' => true], - Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], - Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], - Zenstruck\Foundry\ZenstruckFoundryBundle::class => ['dev' => true, 'test' => true], ]; diff --git a/config/packages/doctrine.php b/config/packages/doctrine.php deleted file mode 100644 index fbbd722..0000000 --- a/config/packages/doctrine.php +++ /dev/null @@ -1,28 +0,0 @@ - [ - 'dbal' => [ - 'url' => '%env(resolve:DATABASE_URL)%', - 'profiling_collect_backtrace' => '%kernel.debug%', - ], - 'orm' => [ - 'validate_xml_mapping' => true, - 'naming_strategy' => 'doctrine.orm.naming_strategy.underscore_number_aware', - 'auto_mapping' => true, - 'mappings' => [ - 'App' => [ - 'type' => 'attribute', - 'is_bundle' => false, - 'dir' => '%kernel.project_dir%/src/Entity', - 'prefix' => 'App\Entity', - 'alias' => 'App', - ], - ], - ], - ], -]); diff --git a/config/packages/doctrine_migrations.php b/config/packages/doctrine_migrations.php deleted file mode 100644 index 7895858..0000000 --- a/config/packages/doctrine_migrations.php +++ /dev/null @@ -1,14 +0,0 @@ - [ - 'migrations_paths' => [ - 'DoctrineMigrations' => '%kernel.project_dir%/migrations', - ], - 'enable_profiler' => false, - ], -]); diff --git a/config/packages/zenstruck_foundry.php b/config/packages/zenstruck_foundry.php deleted file mode 100644 index a409f3c..0000000 --- a/config/packages/zenstruck_foundry.php +++ /dev/null @@ -1,29 +0,0 @@ - [ - 'enable_auto_refresh_with_lazy_objects' => true, - 'persistence' => [ - // Flush only once per call of `PersistentObjectFactory::create()` - 'flush_once' => true, - ], - - // If you use the `make:factory --test` command, you may need to uncomment the following. - // See https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#generate - // services: - // App\Tests\Factory\: - // resource: '%kernel.project_dir%/tests/Factory/' - // autowire: true - // autoconfigure: true - ], -]; - -return App::config([ - 'when@dev' => ZENSTRUCK_FOUNDRY, - 'when@test' => ZENSTRUCK_FOUNDRY, -]); diff --git a/migrations/.gitignore b/migrations/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/migrations/Version20260117053612.php b/migrations/Version20260117053612.php deleted file mode 100644 index 601f9df..0000000 --- a/migrations/Version20260117053612.php +++ /dev/null @@ -1,31 +0,0 @@ -addSql('CREATE TABLE user (id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, email VARCHAR(255) NOT NULL, password VARCHAR(255) NOT NULL, username VARCHAR(255) NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL)'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649E7927C74 ON user (email)'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D64986CC499D ON user (username)'); - } - - public function down(Schema $schema): void - { - $this->addSql('DROP TABLE user'); - } -} diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 455cb54..4dcc9ff 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -44,7 +44,6 @@ diff --git a/src/Controller/ListUsersAction.php b/src/Controller/ListUsersAction.php deleted file mode 100644 index 3455352..0000000 --- a/src/Controller/ListUsersAction.php +++ /dev/null @@ -1,23 +0,0 @@ -render(self::class.'.html.twig', [ - 'data' => $listUsersActionData->getData(), - ]); - } -} diff --git a/src/Controller/ListUsersActionDto.php b/src/Controller/ListUsersActionDto.php deleted file mode 100644 index a098563..0000000 --- a/src/Controller/ListUsersActionDto.php +++ /dev/null @@ -1,20 +0,0 @@ -> $usersDbal - * @param list $usersOrm - */ - public function __construct( - public array $usersDbal, - public array $usersOrm, - ) { - } -} diff --git a/src/Data/Controller/ListUsersActionData.php b/src/Data/Controller/ListUsersActionData.php deleted file mode 100644 index 3dbe699..0000000 --- a/src/Data/Controller/ListUsersActionData.php +++ /dev/null @@ -1,26 +0,0 @@ -conn->fetchAllAssociative('SELECT * FROM user'), - usersOrm: $this->userRepository->findAll(), - ); - } -} diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Entity/User.php b/src/Entity/User.php deleted file mode 100644 index a089989..0000000 --- a/src/Entity/User.php +++ /dev/null @@ -1,167 +0,0 @@ -id; - } - - public function isNew(): bool - { - return $this->id === null; - } - - #[\Override] - public function __toString(): string - { - return \sprintf('%s (%s)', $this->getUserIdentifier(), (string) ($this->getId() ?? 'not persisted')); - } - - /** - * @return array{int|null, string, string, string} - */ - public function __serialize(): array - { - return [$this->id, $this->username, $this->password, $this->email]; - } - - /** - * @param array{int|null, string, string, string} $data - */ - public function __unserialize(array $data): void - { - [$this->id, $this->username, $this->password, $this->email] = $data; - } - - #[\Override] - public function getUserIdentifier(): string - { - if ($this->username === '') { - throw new \LogicException('User username cannot be empty.'); - } - - return $this->username; - } - - /** - * Returns the roles or permissions granted to the user for security. - */ - #[\Override] - public function getRoles(): array - { - return [self::ROLE_USER]; - } - - public function getEmail(): string - { - return $this->email; - } - - /** - * Be careful with your users' emails, they should be normalized. - */ - public function setEmail(string $email): self - { - $this->email = u($email)->trim()->lower()->toString(); - - return $this; - } - - #[\Override] - public function getPassword(): string - { - return $this->password; - } - - public function setPassword(string $password): self - { - $this->password = $password; - - return $this; - } - - public function getUsername(): string - { - return $this->username; - } - - public function setUsername(string $username): self - { - $this->username = $username; - - return $this; - } - - public function getCreatedAt(): \DateTimeInterface - { - return $this->createdAt; - } - - public function getUpdatedAt(): \DateTimeInterface - { - return $this->updatedAt; - } - - /** - * Auto set updatedAt and createdAt on persist. - */ - #[ORM\PrePersist] - public function onPrePersist(): void - { - $this->createdAt = new \DateTimeImmutable(); - $this->updatedAt = new \DateTimeImmutable(); - } - - /** - * Auto set updatedAt on update. - */ - #[ORM\PreUpdate] - public function onPreUpdate(): void - { - $this->updatedAt = new \DateTimeImmutable(); - } -} diff --git a/src/Factory/UserFactory.php b/src/Factory/UserFactory.php deleted file mode 100644 index ab4923e..0000000 --- a/src/Factory/UserFactory.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * @see https://symfony.com/bundles/ZenstruckFoundryBundle/current/index.html#factories - */ -final class UserFactory extends PersistentObjectFactory -{ - #[\Override] - public static function class(): string - { - return User::class; - } - - /** - * @return array - */ - #[\Override] - protected function defaults(): array - { - return [ - 'email' => self::faker()->email(), - 'username' => self::faker()->userName(), - 'password' => self::faker()->password(), - ]; - } -} diff --git a/src/Repository/.gitignore b/src/Repository/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php deleted file mode 100644 index 33159fd..0000000 --- a/src/Repository/UserRepository.php +++ /dev/null @@ -1,31 +0,0 @@ - - * - * @see https://github.com/symfony/demo/blob/main/src/Repository/UserRepository.php - */ -final class UserRepository extends ServiceEntityRepository -{ - public function __construct(ManagerRegistry $registry) - { - parent::__construct($registry, User::class); - } -} diff --git a/src/Story/AppStory.php b/src/Story/AppStory.php deleted file mode 100644 index 8ef12c3..0000000 --- a/src/Story/AppStory.php +++ /dev/null @@ -1,22 +0,0 @@ -Doctrine demo - -

The page displays the user table rows coming from the var/data.db SQLite database.

- -

Doctrine DBAL

- - - usersDbal: $this->conn->fetchAllAssociative('SELECT * FROM user'), - - - - - - - - - - - - - - {% for user in data.usersDbal %} - - - - - - - - {% endfor %} - - - - - - -
IdEmailPseudoCreated atUpdated at
{{ user.id }}{{ user.email }}{{ user.username }}{{ user.created_at|date(constant('DateTime::RSS')) }}{{ user.updated_at|date(constant('DateTime::RSS')) }}
- There are {{ data.usersDbal|length }} user(s). -
- -
- -

Doctrine ORM

- - - usersOrm: $this->userRepository->findAll(), - - - - - - - - - - - - - - {% for user in data.usersOrm %} - - - - - - - - {% endfor %} - - - - - - -
IdEmailPseudoCreated atUpdated at
{{ user.id }}{{ user.email }}{{ user.username }}{{ user.createdAt|date(constant('DateTime::RSS')) }}{{ user.updatedAt|date(constant('DateTime::RSS')) }}
- There are {{ data.usersOrm|length }} user(s). -
-{% endblock %} diff --git a/templates/base.html.twig b/templates/base.html.twig index 22a8e85..118431e 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -52,7 +52,6 @@
  • JavaScript with Stimulus
  • The composer.json file
  • πŸ“ Form example
  • -
  • πŸ‘₯ Users list
  • ❌ Custom error page
  • ✨ Pico CSS documentation ‴️
  • diff --git a/tests/Functional/Controller/ListUsersActionTest.php b/tests/Functional/Controller/ListUsersActionTest.php deleted file mode 100644 index f3a78f3..0000000 --- a/tests/Functional/Controller/ListUsersActionTest.php +++ /dev/null @@ -1,27 +0,0 @@ -request('GET', '/users'); - self::assertResponseIsSuccessful(); - } -} diff --git a/tests/Integration/Entity/UserTest.php b/tests/Integration/Entity/UserTest.php deleted file mode 100644 index 29a8a41..0000000 --- a/tests/Integration/Entity/UserTest.php +++ /dev/null @@ -1,40 +0,0 @@ -get(EntityManagerInterface::class); - $user = new User( - email: 'test@example.com', - password: 'password', - username: 'username' - ); - self::assertNull($user->getId()); - - // persist (@see User::PrePersist()) - $em->persist($user); - $em->flush(); - self::assertSame(1, (int) $user->getId()); - self::assertSame('username (1)', (string) $user); - $updatedAt = $user->getUpdatedAt(); - - // update (@see User::onPreUpdate()) - $user->setEmail('new_email@example.com'); - $em->flush(); - self::assertSame('new_email@example.com', $user->getEmail()); - self::assertNotSame($updatedAt, $user->getUpdatedAt()); - } -} diff --git a/tests/Unit/Entity/UserTest.php b/tests/Unit/Entity/UserTest.php deleted file mode 100644 index 69f410b..0000000 --- a/tests/Unit/Entity/UserTest.php +++ /dev/null @@ -1,47 +0,0 @@ -getId()); - self::assertTrue($user->isNew()); - $normalizedEmail = 'test@example.com'; - self::assertSame($normalizedEmail, $user->setEmail('test@example.com')->getEmail()); - self::assertSame($normalizedEmail, $user->setEmail('Test@Example.CoM ')->getEmail()); - self::assertSame($normalizedEmail, $user->setEmail(' Test@Example.CoM')->getEmail()); - self::assertSame($normalizedEmail, $user->setEmail('Test@example.CoM')->getEmail()); - self::assertSame('COil', $user->setUsername('COil')->getUsername()); - self::assertSame('COil', $user->getUserIdentifier()); - self::assertSame('123456', $user->setPassword('123456')->getPassword()); - self::assertSame('COil (not persisted)', (string) $user); - self::assertSame(['ROLE_USER'], $user->getRoles()); - } - - public function testUserGetUserIdentifier(): void - { - $user = new User('email', 'password', 'username'); - $user->setUsername(''); - $this->expectException(\LogicException::class); - $user->getUserIdentifier(); - } - - public function testUserSerialize(): void - { - $user = new User('email', 'password', 'serialized'); - $serializedUser = 'O:15:"App\Entity\User":4:{i:0;N;i:1;s:10:"serialized";i:2;s:8:"password";i:3;s:5:"email";}'; - self::assertSame($serializedUser, serialize($user)); - unserialize($serializedUser); - } -} diff --git a/vendor-bin/php-cs-fixer/composer.lock b/vendor-bin/php-cs-fixer/composer.lock index fd3e2d2..e389dc2 100644 --- a/vendor-bin/php-cs-fixer/composer.lock +++ b/vendor-bin/php-cs-fixer/composer.lock @@ -403,16 +403,16 @@ }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.93.0", + "version": "v3.93.1", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "50895a07cface1385082e4caa6a6786c4e033468" + "reference": "b3546ab487c0762c39f308dc1ec0ea2c461fc21a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/50895a07cface1385082e4caa6a6786c4e033468", - "reference": "50895a07cface1385082e4caa6a6786c4e033468", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/b3546ab487c0762c39f308dc1ec0ea2c461fc21a", + "reference": "b3546ab487c0762c39f308dc1ec0ea2c461fc21a", "shasum": "" }, "require": { @@ -495,7 +495,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.93.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.93.1" }, "funding": [ { @@ -503,7 +503,7 @@ "type": "github" } ], - "time": "2026-01-23T17:33:21+00:00" + "time": "2026-01-28T23:50:50+00:00" }, { "name": "psr/container",