diff --git a/composer.json b/composer.json index 4a14071..26536f6 100644 --- a/composer.json +++ b/composer.json @@ -25,6 +25,7 @@ "symfony/yaml": "7.1.*" }, "require-dev": { + "doctrine/doctrine-fixtures-bundle": "^4.0", "infection/infection": "^0.29.6", "lubiana/code-quality": "^1.7.2", "phpunit/phpunit": "^9.6.20", @@ -32,6 +33,8 @@ "symfony/css-selector": "7.1.*", "symfony/maker-bundle": "^1.60", "symfony/phpunit-bridge": "^7.1.3", + "symfony/stopwatch": "7.1.*", + "symfony/web-profiler-bundle": "7.1.*", "symplify/config-transformer": "^12.3.4" }, "config": { @@ -44,7 +47,7 @@ }, "sort-packages": true, "platform": { - "php": "8.3" + "php": "8.4" } }, "autoload": { @@ -77,7 +80,7 @@ ], "post-update-cmd": [ "@auto-scripts", - "config-transformer switch-format config" + "config-transformer config" ], "lint": [ "rector", diff --git a/composer.lock b/composer.lock index 53bd064..cac5a36 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": "bc40af7a698e5c0c5eb44b337b8b1274", + "content-hash": "e74bca4cf24591156c8e0bb40befa8bc", "packages": [ { "name": "doctrine/cache", @@ -187,16 +187,16 @@ }, { "name": "doctrine/dbal", - "version": "4.2.1", + "version": "4.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0" + "reference": "19a2b7deb5fe8c2df0ff817ecea305e50acb62ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/dadd35300837a3a2184bd47d403333b15d0a9bd0", - "reference": "dadd35300837a3a2184bd47d403333b15d0a9bd0", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/19a2b7deb5fe8c2df0ff817ecea305e50acb62ec", + "reference": "19a2b7deb5fe8c2df0ff817ecea305e50acb62ec", "shasum": "" }, "require": { @@ -209,16 +209,14 @@ "doctrine/coding-standard": "12.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-phpunit": "1.4.0", - "phpstan/phpstan-strict-rules": "^1.6", - "phpunit/phpunit": "10.5.30", - "psalm/plugin-phpunit": "0.19.0", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "10.5.39", "slevomat/coding-standard": "8.13.1", "squizlabs/php_codesniffer": "3.10.2", "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0", - "vimeo/psalm": "5.25.0" + "symfony/console": "^5.4|^6.3|^7.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -275,7 +273,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.1" + "source": "https://github.com/doctrine/dbal/tree/4.2.2" }, "funding": [ { @@ -291,7 +289,7 @@ "type": "tidelift" } ], - "time": "2024-10-10T18:01:27+00:00" + "time": "2025-01-16T08:40:56+00:00" }, { "name": "doctrine/deprecations", @@ -340,16 +338,16 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.13.1", + "version": "2.13.2", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "2740ad8b8739b39ab37d409c972b092f632b025a" + "reference": "2363c43d9815a11657e452625cd64172d5587486" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/2740ad8b8739b39ab37d409c972b092f632b025a", - "reference": "2740ad8b8739b39ab37d409c972b092f632b025a", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/2363c43d9815a11657e452625cd64172d5587486", + "reference": "2363c43d9815a11657e452625cd64172d5587486", "shasum": "" }, "require": { @@ -363,7 +361,7 @@ "symfony/console": "^5.4 || ^6.0 || ^7.0", "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", "symfony/deprecation-contracts": "^2.1 || ^3", - "symfony/doctrine-bridge": "^5.4.46 || ^6.4.3 || ^7.0.3", + "symfony/doctrine-bridge": "^5.4.46 || ~6.3.12 || ^6.4.3 || ^7.0.3", "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/polyfill-php80": "^1.15", "symfony/service-contracts": "^1.1.1 || ^2.0 || ^3" @@ -379,13 +377,14 @@ "doctrine/deprecations": "^1.0", "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", "phpunit/phpunit": "^9.5.26", - "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^5", "psr/log": "^1.1.4 || ^2.0 || ^3.0", "symfony/phpunit-bridge": "^6.1 || ^7.0", "symfony/property-info": "^5.4 || ^6.0 || ^7.0", - "symfony/proxy-manager-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/proxy-manager-bridge": "^5.4 || ^6.0", "symfony/security-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", "symfony/string": "^5.4 || ^6.0 || ^7.0", @@ -394,8 +393,7 @@ "symfony/var-exporter": "^5.4 || ^6.2 || ^7.0", "symfony/web-profiler-bundle": "^5.4 || ^6.0 || ^7.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0", - "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^5.15" + "twig/twig": "^1.34 || ^2.12 || ^3.0" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -440,7 +438,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.1" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.2" }, "funding": [ { @@ -456,26 +454,26 @@ "type": "tidelift" } ], - "time": "2024-11-08T23:27:54+00:00" + "time": "2025-01-15T11:12:38+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "3.3.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0" + "reference": "a5c5fe0d2c6b911c03555046febb05a05a347078" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", - "reference": "715b62c31a5894afcb2b2cdbbc6607d7dd0580c0", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/a5c5fe0d2c6b911c03555046febb05a05a347078", + "reference": "a5c5fe0d2c6b911c03555046febb05a05a347078", "shasum": "" }, "require": { "doctrine/doctrine-bundle": "^2.4", "doctrine/migrations": "^3.2", - "php": "^7.2|^8.0", + "php": "^7.2 || ^8.0", "symfony/deprecation-contracts": "^2.1 || ^3", "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0" }, @@ -483,27 +481,21 @@ "composer/semver": "^3.0", "doctrine/coding-standard": "^12", "doctrine/orm": "^2.6 || ^3", - "doctrine/persistence": "^2.0 || ^3 ", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^8.5|^9.5", - "psalm/plugin-phpunit": "^0.18.4", - "psalm/plugin-symfony": "^3 || ^5", + "doctrine/persistence": "^2.0 || ^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", - "symfony/var-exporter": "^5.4 || ^6 || ^7", - "vimeo/psalm": "^4.30 || ^5.15" + "symfony/var-exporter": "^5.4 || ^6 || ^7" }, "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\MigrationsBundle\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Doctrine\\Bundle\\MigrationsBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -532,7 +524,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.3.1" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.4.0" }, "funding": [ { @@ -548,7 +540,7 @@ "type": "tidelift" } ], - "time": "2024-05-14T20:32:18+00:00" + "time": "2025-01-16T20:28:10+00:00" }, { "name": "doctrine/event-manager", @@ -984,16 +976,16 @@ }, { "name": "doctrine/orm", - "version": "3.3.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "69958152e661aa9c14e80d1ee4962863485aa60b" + "reference": "b1f8253105aa5382c495e5f9f8ef34e297775428" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/69958152e661aa9c14e80d1ee4962863485aa60b", - "reference": "69958152e661aa9c14e80d1ee4962863485aa60b", + "url": "https://api.github.com/repos/doctrine/orm/zipball/b1f8253105aa5382c495e5f9f8ef34e297775428", + "reference": "b1f8253105aa5382c495e5f9f8ef34e297775428", "shasum": "" }, "require": { @@ -1005,7 +997,7 @@ "doctrine/inflector": "^1.4 || ^2.0", "doctrine/instantiator": "^1.3 || ^2", "doctrine/lexer": "^3", - "doctrine/persistence": "^3.3.1", + "doctrine/persistence": "^3.3.1 || ^4", "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", @@ -1017,13 +1009,12 @@ "phpbench/phpbench": "^1.0", "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "1.12.6", - "phpstan/phpstan-deprecation-rules": "^1.2", + "phpstan/phpstan": "2.0.3", + "phpstan/phpstan-deprecation-rules": "^2", "phpunit/phpunit": "^10.4.0", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^5.4 || ^6.2 || ^7.0", - "vimeo/psalm": "5.24.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1069,9 +1060,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.3.0" + "source": "https://github.com/doctrine/orm/tree/3.3.1" }, - "time": "2024-10-12T20:07:18+00:00" + "time": "2024-12-19T07:08:14+00:00" }, { "name": "doctrine/persistence", @@ -1171,16 +1162,16 @@ }, { "name": "doctrine/sql-formatter", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/doctrine/sql-formatter.git", - "reference": "b784cbde727cf806721451dde40eff4fec3bbe86" + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/b784cbde727cf806721451dde40eff4fec3bbe86", - "reference": "b784cbde727cf806721451dde40eff4fec3bbe86", + "url": "https://api.github.com/repos/doctrine/sql-formatter/zipball/d6d00aba6fd2957fe5216fe2b7673e9985db20c8", + "reference": "d6d00aba6fd2957fe5216fe2b7673e9985db20c8", "shasum": "" }, "require": { @@ -1190,8 +1181,7 @@ "doctrine/coding-standard": "^12", "ergebnis/phpunit-slow-test-detector": "^2.14", "phpstan/phpstan": "^1.10", - "phpunit/phpunit": "^10.5", - "vimeo/psalm": "^5.24" + "phpunit/phpunit": "^10.5" }, "bin": [ "bin/sql-formatter" @@ -1221,9 +1211,9 @@ ], "support": { "issues": "https://github.com/doctrine/sql-formatter/issues", - "source": "https://github.com/doctrine/sql-formatter/tree/1.5.1" + "source": "https://github.com/doctrine/sql-formatter/tree/1.5.2" }, - "time": "2024-10-21T18:21:57+00:00" + "time": "2025-01-24T11:45:48+00:00" }, { "name": "psr/cache", @@ -1592,12 +1582,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1725,16 +1715,16 @@ }, { "name": "symfony/console", - "version": "v7.1.8", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5" + "reference": "bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/ff04e5b5ba043d2badfb308197b9e6b42883fcd5", - "reference": "ff04e5b5ba043d2badfb308197b9e6b42883fcd5", + "url": "https://api.github.com/repos/symfony/console/zipball/bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7", + "reference": "bb06e2d7f8dd9dffe5eada8a5cbe0f68f1482db7", "shasum": "" }, "require": { @@ -1798,7 +1788,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.1.8" + "source": "https://github.com/symfony/console/tree/v7.1.10" }, "funding": [ { @@ -1814,7 +1804,7 @@ "type": "tidelift" } ], - "time": "2024-11-06T14:23:19+00:00" + "time": "2024-12-09T07:30:10+00:00" }, { "name": "symfony/dependency-injection", @@ -1915,12 +1905,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -1965,16 +1955,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "893cc4fa0f218d6e88efbe58397e2b42167648e1" + "reference": "e8bb28f54741c0eb91ff7bc07f3abf5ebd4a3609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/893cc4fa0f218d6e88efbe58397e2b42167648e1", - "reference": "893cc4fa0f218d6e88efbe58397e2b42167648e1", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/e8bb28f54741c0eb91ff7bc07f3abf5ebd4a3609", + "reference": "e8bb28f54741c0eb91ff7bc07f3abf5ebd4a3609", "shasum": "" }, "require": { @@ -2053,7 +2043,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v7.1.9" + "source": "https://github.com/symfony/doctrine-bridge/tree/v7.1.10" }, "funding": [ { @@ -2069,7 +2059,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T12:02:18+00:00" + "time": "2024-12-19T14:23:39+00:00" }, { "name": "symfony/dotenv", @@ -2147,16 +2137,16 @@ }, { "name": "symfony/error-handler", - "version": "v7.1.7", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "010e44661f4c6babaf8c4862fe68c24a53903342" + "reference": "12cada0720a728acd96346b19e8c7a867071758c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/010e44661f4c6babaf8c4862fe68c24a53903342", - "reference": "010e44661f4c6babaf8c4862fe68c24a53903342", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/12cada0720a728acd96346b19e8c7a867071758c", + "reference": "12cada0720a728acd96346b19e8c7a867071758c", "shasum": "" }, "require": { @@ -2202,7 +2192,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.1.7" + "source": "https://github.com/symfony/error-handler/tree/v7.1.10" }, "funding": [ { @@ -2218,7 +2208,7 @@ "type": "tidelift" } ], - "time": "2024-11-05T15:34:55+00:00" + "time": "2024-12-07T08:49:48+00:00" }, { "name": "symfony/event-dispatcher", @@ -2320,12 +2310,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -2444,16 +2434,16 @@ }, { "name": "symfony/finder", - "version": "v7.1.6", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8" + "reference": "b8b526e051ac0b33feabbec7893adcab96b23bf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/2cb89664897be33f78c65d3d2845954c8d7a43b8", - "reference": "2cb89664897be33f78c65d3d2845954c8d7a43b8", + "url": "https://api.github.com/repos/symfony/finder/zipball/b8b526e051ac0b33feabbec7893adcab96b23bf3", + "reference": "b8b526e051ac0b33feabbec7893adcab96b23bf3", "shasum": "" }, "require": { @@ -2488,7 +2478,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.1.6" + "source": "https://github.com/symfony/finder/tree/v7.1.10" }, "funding": [ { @@ -2504,7 +2494,7 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:31:23+00:00" + "time": "2024-12-30T18:59:46+00:00" }, { "name": "symfony/flex", @@ -2673,16 +2663,16 @@ }, { "name": "symfony/framework-bundle", - "version": "v7.1.6", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "1d616d762905091e798d64c53ffe3840ccfc3d89" + "reference": "51b99e2307a79640b4c574a81b46ac918d13c89d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/1d616d762905091e798d64c53ffe3840ccfc3d89", - "reference": "1d616d762905091e798d64c53ffe3840ccfc3d89", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/51b99e2307a79640b4c574a81b46ac918d13c89d", + "reference": "51b99e2307a79640b4c574a81b46ac918d13c89d", "shasum": "" }, "require": { @@ -2801,7 +2791,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.1.6" + "source": "https://github.com/symfony/framework-bundle/tree/v7.1.10" }, "funding": [ { @@ -2817,20 +2807,20 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:11:02+00:00" + "time": "2024-12-19T14:23:39+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "82765842fb599c7ed839b650214680c7ee5779be" + "reference": "b5567e738aa372e0f3408c40e96bd4bd445bf3a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/82765842fb599c7ed839b650214680c7ee5779be", - "reference": "82765842fb599c7ed839b650214680c7ee5779be", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b5567e738aa372e0f3408c40e96bd4bd445bf3a1", + "reference": "b5567e738aa372e0f3408c40e96bd4bd445bf3a1", "shasum": "" }, "require": { @@ -2878,7 +2868,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.1.9" + "source": "https://github.com/symfony/http-foundation/tree/v7.1.10" }, "funding": [ { @@ -2894,20 +2884,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T18:58:36+00:00" + "time": "2024-12-16T16:04:34+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "649d0e23c571344ef1153d4ffb2564f534b85a45" + "reference": "f4cab1e059b6a0c67b008a81fa1822aa4ed37379" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/649d0e23c571344ef1153d4ffb2564f534b85a45", - "reference": "649d0e23c571344ef1153d4ffb2564f534b85a45", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f4cab1e059b6a0c67b008a81fa1822aa4ed37379", + "reference": "f4cab1e059b6a0c67b008a81fa1822aa4ed37379", "shasum": "" }, "require": { @@ -2992,7 +2982,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.1.9" + "source": "https://github.com/symfony/http-kernel/tree/v7.1.10" }, "funding": [ { @@ -3008,7 +2998,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T12:55:11+00:00" + "time": "2024-12-31T14:55:36+00:00" }, { "name": "symfony/options-resolver", @@ -3705,22 +3695,22 @@ }, { "name": "symfony/property-info", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "e9a7b2a4984457c3849afd2b1a1ec7f2994cb1b5" + "reference": "daa1a1c742894ce09a39ae2b68c07029d434c746" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/e9a7b2a4984457c3849afd2b1a1ec7f2994cb1b5", - "reference": "e9a7b2a4984457c3849afd2b1a1ec7f2994cb1b5", + "url": "https://api.github.com/repos/symfony/property-info/zipball/daa1a1c742894ce09a39ae2b68c07029d434c746", + "reference": "daa1a1c742894ce09a39ae2b68c07029d434c746", "shasum": "" }, "require": { "php": ">=8.2", "symfony/string": "^6.4|^7.0", - "symfony/type-info": "^7.1" + "symfony/type-info": "~7.1.9|^7.2.2" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -3768,7 +3758,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.1.9" + "source": "https://github.com/symfony/property-info/tree/v7.1.10" }, "funding": [ { @@ -3784,7 +3774,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T09:50:41+00:00" + "time": "2024-12-31T11:04:25+00:00" }, { "name": "symfony/routing", @@ -4124,12 +4114,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4351,12 +4341,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4412,16 +4402,16 @@ }, { "name": "symfony/twig-bridge", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "67ea8a59432307efb0fdcae0d8512e7c4a9e4c01" + "reference": "c027c54611cd194273b924c8d24d9706695171ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/67ea8a59432307efb0fdcae0d8512e7c4a9e4c01", - "reference": "67ea8a59432307efb0fdcae0d8512e7c4a9e4c01", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/c027c54611cd194273b924c8d24d9706695171ff", + "reference": "c027c54611cd194273b924c8d24d9706695171ff", "shasum": "" }, "require": { @@ -4501,7 +4491,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v7.1.9" + "source": "https://github.com/symfony/twig-bridge/tree/v7.1.10" }, "funding": [ { @@ -4517,7 +4507,7 @@ "type": "tidelift" } ], - "time": "2024-11-25T12:02:18+00:00" + "time": "2024-12-19T14:23:39+00:00" }, { "name": "symfony/twig-bundle", @@ -4605,16 +4595,16 @@ }, { "name": "symfony/type-info", - "version": "v7.1.8", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "51535dde21c7abf65c9d000a30bb15f6478195e6" + "reference": "8f980bdd1d6a2834503afbfcf3f39de8133e48fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/51535dde21c7abf65c9d000a30bb15f6478195e6", - "reference": "51535dde21c7abf65c9d000a30bb15f6478195e6", + "url": "https://api.github.com/repos/symfony/type-info/zipball/8f980bdd1d6a2834503afbfcf3f39de8133e48fe", + "reference": "8f980bdd1d6a2834503afbfcf3f39de8133e48fe", "shasum": "" }, "require": { @@ -4667,7 +4657,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.1.8" + "source": "https://github.com/symfony/type-info/tree/v7.1.10" }, "funding": [ { @@ -4683,7 +4673,7 @@ "type": "tidelift" } ], - "time": "2024-11-07T15:49:33+00:00" + "time": "2024-12-11T12:11:39+00:00" }, { "name": "symfony/uid", @@ -4761,16 +4751,16 @@ }, { "name": "symfony/validator", - "version": "v7.1.9", + "version": "v7.1.10", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ff71d77da404c700f8b05ba426eb9e6f8d22771b" + "reference": "216b0d1ccfedeb800cbc2f336ed6effaca7164de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ff71d77da404c700f8b05ba426eb9e6f8d22771b", - "reference": "ff71d77da404c700f8b05ba426eb9e6f8d22771b", + "url": "https://api.github.com/repos/symfony/validator/zipball/216b0d1ccfedeb800cbc2f336ed6effaca7164de", + "reference": "216b0d1ccfedeb800cbc2f336ed6effaca7164de", "shasum": "" }, "require": { @@ -4838,7 +4828,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.1.9" + "source": "https://github.com/symfony/validator/tree/v7.1.10" }, "funding": [ { @@ -4854,7 +4844,7 @@ "type": "tidelift" } ], - "time": "2024-11-27T09:50:41+00:00" + "time": "2024-12-30T18:35:03+00:00" }, { "name": "symfony/var-dumper", @@ -5088,16 +5078,16 @@ }, { "name": "twig/twig", - "version": "v3.17.1", + "version": "v3.18.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "677ef8da6497a03048192aeeb5aa3018e379ac71" + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/677ef8da6497a03048192aeeb5aa3018e379ac71", - "reference": "677ef8da6497a03048192aeeb5aa3018e379ac71", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", + "reference": "acffa88cc2b40dbe42eaf3a5025d6c0d4600cc50", "shasum": "" }, "require": { @@ -5152,7 +5142,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.17.1" + "source": "https://github.com/twigphp/Twig/tree/v3.18.0" }, "funding": [ { @@ -5164,7 +5154,7 @@ "type": "tidelift" } ], - "time": "2024-12-12T09:58:10+00:00" + "time": "2024-12-29T10:51:50+00:00" } ], "packages-dev": [ @@ -5283,13 +5273,13 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - }, "phpstan": { "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-main": "3.x-dev" } }, "autoload": { @@ -5479,6 +5469,175 @@ }, "time": "2023-01-05T11:28:13+00:00" }, + { + "name": "doctrine/data-fixtures", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/doctrine/data-fixtures.git", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "reference": "f7f1e12d6bceb58c204b3e77210a103c1c57601e", + "shasum": "" + }, + "require": { + "doctrine/persistence": "^3.1 || ^4.0", + "php": "^8.1", + "psr/log": "^1.1 || ^2 || ^3" + }, + "conflict": { + "doctrine/dbal": "<3.5 || >=5", + "doctrine/orm": "<2.14 || >=4", + "doctrine/phpcr-odm": "<1.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "doctrine/dbal": "^3.5 || ^4", + "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", + "doctrine/orm": "^2.14 || ^3", + "ext-sqlite3": "*", + "fig/log-test": "^1", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5.3", + "symfony/cache": "^6.4 || ^7", + "symfony/var-exporter": "^6.4 || ^7" + }, + "suggest": { + "alcaeus/mongo-php-adapter": "For using MongoDB ODM 1.3 with PHP 7 (deprecated)", + "doctrine/mongodb-odm": "For loading MongoDB ODM fixtures", + "doctrine/orm": "For loading ORM fixtures", + "doctrine/phpcr-odm": "For loading PHPCR ODM fixtures" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Common\\DataFixtures\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + } + ], + "description": "Data Fixtures for all Doctrine Object Managers", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "database" + ], + "support": { + "issues": "https://github.com/doctrine/data-fixtures/issues", + "source": "https://github.com/doctrine/data-fixtures/tree/2.0.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%2Fdata-fixtures", + "type": "tidelift" + } + ], + "time": "2025-01-21T13:21:31+00:00" + }, + { + "name": "doctrine/doctrine-fixtures-bundle", + "version": "4.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/DoctrineFixturesBundle.git", + "reference": "90185317e6bb3d845667c5ebd444d9c83ae19a01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/90185317e6bb3d845667c5ebd444d9c83ae19a01", + "reference": "90185317e6bb3d845667c5ebd444d9c83ae19a01", + "shasum": "" + }, + "require": { + "doctrine/data-fixtures": "^2.0", + "doctrine/doctrine-bundle": "^2.2", + "doctrine/orm": "^2.14.0 || ^3.0", + "doctrine/persistence": "^2.4 || ^3.0", + "php": "^8.1", + "psr/log": "^2 || ^3", + "symfony/config": "^5.4 || ^6.0 || ^7.0", + "symfony/console": "^5.4 || ^6.0 || ^7.0", + "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", + "symfony/deprecation-contracts": "^2.1 || ^3", + "symfony/doctrine-bridge": "^5.4.48 || ^6.4.16 || ^7.1.9", + "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0" + }, + "conflict": { + "doctrine/dbal": "< 3" + }, + "require-dev": { + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^2", + "phpunit/phpunit": "^10.5.38 || ^11" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Doctrine\\Bundle\\FixturesBundle\\": "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 DoctrineFixturesBundle", + "homepage": "https://www.doctrine-project.org", + "keywords": [ + "Fixture", + "persistence" + ], + "support": { + "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", + "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.0.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-fixtures-bundle", + "type": "tidelift" + } + ], + "time": "2024-12-05T18:35:55+00:00" + }, { "name": "fidry/cpu-core-counter", "version": "1.2.0", @@ -6121,16 +6280,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -6173,9 +6332,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "ondram/ci-detector", @@ -6422,16 +6581,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.13", + "version": "1.12.16", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f" + "reference": "e0bb5cb78545aae631220735aa706eac633a6be9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b469068840cfa031e1deaf2fa1886d00e20680f", - "reference": "9b469068840cfa031e1deaf2fa1886d00e20680f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e0bb5cb78545aae631220735aa706eac633a6be9", + "reference": "e0bb5cb78545aae631220735aa706eac633a6be9", "shasum": "" }, "require": { @@ -6476,7 +6635,7 @@ "type": "github" } ], - "time": "2024-12-17T17:00:20+00:00" + "time": "2025-01-21T14:50:05+00:00" }, { "name": "phpunit/php-code-coverage", @@ -8053,16 +8212,16 @@ }, { "name": "shish/safe", - "version": "v2.6.3", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/shish/safe.git", - "reference": "88c2cf506c6b497cd2a961c5e8116a18c5c272c0" + "reference": "482e6227330a70b21c1c9e9301cc99b5658ccb89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/shish/safe/zipball/88c2cf506c6b497cd2a961c5e8116a18c5c272c0", - "reference": "88c2cf506c6b497cd2a961c5e8116a18c5c272c0", + "url": "https://api.github.com/repos/shish/safe/zipball/482e6227330a70b21c1c9e9301cc99b5658ccb89", + "reference": "482e6227330a70b21c1c9e9301cc99b5658ccb89", "shasum": "" }, "require": { @@ -8093,6 +8252,7 @@ "deprecated/mysqli.php", "generated/apache.php", "generated/apcu.php", + "generated/array.php", "generated/bzip2.php", "generated/calendar.php", "generated/classobj.php", @@ -8183,19 +8343,23 @@ "description": "PHP core functions that throw exceptions instead of returning FALSE on error (a less-abandoned fork of thecodingmachine/safe)", "support": { "issues": "https://github.com/shish/safe/issues", - "source": "https://github.com/shish/safe/tree/v2.6.3" + "source": "https://github.com/shish/safe/tree/v2.6.4" }, "funding": [ + { + "url": "https://github.com/OskarStark", + "type": "github" + }, { "url": "https://github.com/shish", "type": "github" }, { - "url": "https://ko-fi.com/shish2k", - "type": "ko_fi" + "url": "https://github.com/staabm", + "type": "github" } ], - "time": "2024-10-08T20:21:12+00:00" + "time": "2024-12-18T13:36:07+00:00" }, { "name": "slevomat/coding-standard", @@ -8264,16 +8428,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.11.2", + "version": "3.11.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079" + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079", - "reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", + "reference": "ba05f990e79cbe69b9f35c8c1ac8dca7eecc3a10", "shasum": "" }, "require": { @@ -8338,9 +8502,13 @@ { "url": "https://opencollective.com/php_codesniffer", "type": "open_collective" + }, + { + "url": "https://thanks.dev/phpcsstandards", + "type": "thanks_dev" } ], - "time": "2024-12-11T16:04:26+00:00" + "time": "2025-01-23T17:04:15+00:00" }, { "name": "symfony/browser-kit", @@ -8544,16 +8712,16 @@ }, { "name": "symfony/maker-bundle", - "version": "v1.61.0", + "version": "v1.62.1", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "a3b7f14d349f8f44ed752d4dde2263f77510cc18" + "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a3b7f14d349f8f44ed752d4dde2263f77510cc18", - "reference": "a3b7f14d349f8f44ed752d4dde2263f77510cc18", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/468ff2708200c95ebc0d85d3174b6c6711b8a590", + "reference": "468ff2708200c95ebc0d85d3174b6c6711b8a590", "shasum": "" }, "require": { @@ -8616,7 +8784,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.61.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.62.1" }, "funding": [ { @@ -8632,7 +8800,7 @@ "type": "tidelift" } ], - "time": "2024-08-29T22:50:23+00:00" + "time": "2025-01-15T00:21:40+00:00" }, { "name": "symfony/phpunit-bridge", @@ -8778,17 +8946,98 @@ "time": "2024-11-06T14:23:19+00:00" }, { - "name": "symplify/config-transformer", - "version": "12.3.4", + "name": "symfony/web-profiler-bundle", + "version": "v7.1.10", "source": { "type": "git", - "url": "https://github.com/symplify/config-transformer.git", - "reference": "9fb4f5acf7ec4261ba426bee9eb7aeed174eb600" + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "8bbef1c761814fb73b3c19334a06c5b91a56a79c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symplify/config-transformer/zipball/9fb4f5acf7ec4261ba426bee9eb7aeed174eb600", - "reference": "9fb4f5acf7ec4261ba426bee9eb7aeed174eb600", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/8bbef1c761814fb73b3c19334a06c5b91a56a79c", + "reference": "8bbef1c761814fb73b3c19334a06c5b91a56a79c", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "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", + "symfony/twig-bundle": "^6.4|^7.0", + "twig/twig": "^3.10" + }, + "conflict": { + "symfony/form": "<6.4", + "symfony/mailer": "<6.4", + "symfony/messenger": "<6.4" + }, + "require-dev": { + "symfony/browser-kit": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/css-selector": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" + }, + "type": "symfony-bundle", + "autoload": { + "psr-4": { + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "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 development tool that gives detailed information about the execution of any request", + "homepage": "https://symfony.com", + "keywords": [ + "dev" + ], + "support": { + "source": "https://github.com/symfony/web-profiler-bundle/tree/v7.1.10" + }, + "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-11T07:23:25+00:00" + }, + { + "name": "symplify/config-transformer", + "version": "12.4.0", + "source": { + "type": "git", + "url": "https://github.com/symplify/config-transformer.git", + "reference": "d9a0f2d6c6f80cb0672544ed5273d5e701a3e092" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symplify/config-transformer/zipball/d9a0f2d6c6f80cb0672544ed5273d5e701a3e092", + "reference": "d9a0f2d6c6f80cb0672544ed5273d5e701a3e092", "shasum": "" }, "require": { @@ -8805,7 +9054,7 @@ "description": "Prefixed version of Symfony YAML/XML to PHP/YAML config converter", "support": { "issues": "https://github.com/symplify/config-transformer/issues", - "source": "https://github.com/symplify/config-transformer/tree/12.3.4" + "source": "https://github.com/symplify/config-transformer/tree/12.4.0" }, "funding": [ { @@ -8817,20 +9066,20 @@ "type": "github" } ], - "time": "2024-01-15T21:58:26+00:00" + "time": "2025-01-22T23:08:18+00:00" }, { "name": "symplify/easy-coding-standard", - "version": "12.5.4", + "version": "12.5.5", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be" + "reference": "16a6ac7f452e230fdcc81f1b35b2366903fcecf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/5673ecbc03eef9d7b2f563819c80e8e1ce0161be", - "reference": "5673ecbc03eef9d7b2f563819c80e8e1ce0161be", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/16a6ac7f452e230fdcc81f1b35b2366903fcecf3", + "reference": "16a6ac7f452e230fdcc81f1b35b2366903fcecf3", "shasum": "" }, "require": { @@ -8866,7 +9115,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.4" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.5.5" }, "funding": [ { @@ -8878,7 +9127,7 @@ "type": "github" } ], - "time": "2024-12-12T15:36:04+00:00" + "time": "2025-01-02T08:43:03+00:00" }, { "name": "theseer/tokenizer", @@ -9001,7 +9250,7 @@ }, "platform-dev": {}, "platform-overrides": { - "php": "8.3" + "php": "8.4" }, "plugin-api-version": "2.6.0" } diff --git a/config/bundles.php b/config/bundles.php index d43fe1e..d59139e 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -1,10 +1,12 @@ [ @@ -22,4 +24,12 @@ return [ TwigBundle::class => [ 'all' => true, ], + DoctrineFixturesBundle::class => [ + 'dev' => true, + 'test' => true, + ], + WebProfilerBundle::class => [ + 'dev' => true, + 'test' => true, + ], ]; diff --git a/config/packages/web_profiler.php b/config/packages/web_profiler.php new file mode 100644 index 0000000..28614cc --- /dev/null +++ b/config/packages/web_profiler.php @@ -0,0 +1,29 @@ +env() === 'dev') { + $containerConfigurator->extension('web_profiler', [ + 'toolbar' => true, + 'intercept_redirects' => false, + ]); + $containerConfigurator->extension('framework', [ + 'profiler' => [ + 'only_exceptions' => false, + 'collect_serializer_data' => true, + ], + ]); + } + if ($containerConfigurator->env() === 'test') { + $containerConfigurator->extension('web_profiler', [ + 'toolbar' => false, + 'intercept_redirects' => false, + ]); + $containerConfigurator->extension('framework', [ + 'profiler' => [ + 'collect' => false, + ], + ]); + } +}; diff --git a/config/routes/web_profiler.php b/config/routes/web_profiler.php new file mode 100644 index 0000000..6356a1f --- /dev/null +++ b/config/routes/web_profiler.php @@ -0,0 +1,12 @@ +env() === 'dev') { + $routingConfigurator->import('@WebProfilerBundle/Resources/config/routing/wdt.xml') + ->prefix('/_wdt'); + $routingConfigurator->import('@WebProfilerBundle/Resources/config/routing/profiler.xml') + ->prefix('/_profiler'); + } +}; diff --git a/migrations/Version20250124234947.php b/migrations/Version20250124234947.php new file mode 100644 index 0000000..4c9d782 --- /dev/null +++ b/migrations/Version20250124234947.php @@ -0,0 +1,42 @@ +addSql('CREATE TEMPORARY TABLE __temp__menu_item AS SELECT id, name, food_vendor_id, deleted_at FROM menu_item'); + $this->addSql('DROP TABLE menu_item'); + $this->addSql('CREATE TABLE menu_item (id BLOB NOT NULL, name VARCHAR(255) NOT NULL, food_vendor_id BLOB NOT NULL, deleted_at DATETIME DEFAULT NULL, alias_of_id BLOB DEFAULT NULL, PRIMARY KEY(id), CONSTRAINT FK_D754D5506EF983E8 FOREIGN KEY (food_vendor_id) REFERENCES food_vendor (id) ON UPDATE NO ACTION ON DELETE NO ACTION NOT DEFERRABLE INITIALLY IMMEDIATE, CONSTRAINT FK_D754D55061F0AFC5 FOREIGN KEY (alias_of_id) REFERENCES menu_item (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO menu_item (id, name, food_vendor_id, deleted_at) SELECT id, name, food_vendor_id, deleted_at FROM __temp__menu_item'); + $this->addSql('DROP TABLE __temp__menu_item'); + $this->addSql('CREATE INDEX IDX_D754D5506EF983E8 ON menu_item (food_vendor_id)'); + $this->addSql('CREATE INDEX IDX_D754D55061F0AFC5 ON menu_item (alias_of_id)'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TEMPORARY TABLE __temp__menu_item AS SELECT name, deleted_at, id, food_vendor_id FROM menu_item'); + $this->addSql('DROP TABLE menu_item'); + $this->addSql('CREATE TABLE menu_item (name VARCHAR(255) NOT NULL, deleted_at DATETIME DEFAULT NULL, id BLOB NOT NULL, food_vendor_id BLOB NOT NULL, PRIMARY KEY(id), CONSTRAINT FK_D754D5506EF983E8 FOREIGN KEY (food_vendor_id) REFERENCES food_vendor (id) NOT DEFERRABLE INITIALLY IMMEDIATE)'); + $this->addSql('INSERT INTO menu_item (name, deleted_at, id, food_vendor_id) SELECT name, deleted_at, id, food_vendor_id FROM __temp__menu_item'); + $this->addSql('DROP TABLE __temp__menu_item'); + $this->addSql('CREATE INDEX IDX_D754D5506EF983E8 ON menu_item (food_vendor_id)'); + } +} diff --git a/src/Controller/OrderItemController.php b/src/Controller/OrderItemController.php index ee1ef4b..6cdffda 100644 --- a/src/Controller/OrderItemController.php +++ b/src/Controller/OrderItemController.php @@ -45,6 +45,11 @@ final class OrderItemController extends AbstractController $entityManager->persist($menuItem); } + if ($menuItem->getAliasOf() !== null) { + $menuItem = $menuItem->getAliasOf(); + $orderItem->setName($menuItem->getName()); + } + $orderItem->setMenuItem($menuItem); $orderItem->setFoodOrder($foodOrder); $entityManager->persist($orderItem); diff --git a/src/DataFixtures/AppFixtures.php b/src/DataFixtures/AppFixtures.php new file mode 100644 index 0000000..b392bbb --- /dev/null +++ b/src/DataFixtures/AppFixtures.php @@ -0,0 +1,50 @@ +manager = $manager; + $vendorA = $this->createVendor('Vendor A'); + $this->addMenuItemsToVendor($vendorA); + + $vendorB = $this->createVendor('Vendor B'); + $this->addMenuItemsToVendor($vendorB); + } + + public function createVendor(string $name): FoodVendor + { + $vendorA = new FoodVendor; + $vendorA->setName($name); + $vendorA->setMenuLink('https://vendora.com'); + $vendorA->setPhone('1234567890'); + + $this->manager->persist($vendorA); + $this->manager->flush(); + return $vendorA; + } + + public function addMenuItemsToVendor(FoodVendor $vendor): void + { + foreach (range(1, 10) as $i) { + $item = new MenuItem; + $item->setName("{$vendor->getName()} Item {$i}"); + $item->setFoodVendor($vendor); + $this->manager->persist($item); + $this->manager->flush(); + } + } +} diff --git a/src/Entity/MenuItem.php b/src/Entity/MenuItem.php index 259b175..4430871 100644 --- a/src/Entity/MenuItem.php +++ b/src/Entity/MenuItem.php @@ -4,6 +4,8 @@ namespace App\Entity; use App\Repository\MenuItemRepository; use DateTimeImmutable; +use Doctrine\Common\Collections\ArrayCollection; +use Doctrine\Common\Collections\Collection; use Doctrine\ORM\Mapping as ORM; use Symfony\Bridge\Doctrine\IdGenerator\UlidGenerator; use Symfony\Bridge\Doctrine\Types\UlidType; @@ -22,13 +24,24 @@ class MenuItem #[ORM\Column(nullable: true)] private DateTimeImmutable|null $deletedAt = null; + #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'aliases')] + private self|null $aliasOf = null; + + /** + * @var Collection + */ + #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'aliasOf')] + private Collection $aliases; + public function __construct( #[ORM\Id] #[ORM\GeneratedValue(strategy: 'CUSTOM')] #[ORM\Column(type: UlidType::NAME, unique: true)] #[ORM\CustomIdGenerator(class: UlidGenerator::class)] private Ulid|null $id = new Ulid - ) {} + ) { + $this->aliases = new ArrayCollection; + } public function getId(): Ulid|null { @@ -81,4 +94,44 @@ class MenuItem return $this; } + + public function getAliasOf(): self|null + { + return $this->aliasOf; + } + + public function setAliasOf(self|null $aliasOf): static + { + $this->aliasOf = $aliasOf; + + return $this; + } + + /** + * @return Collection + */ + public function getAliases(): Collection + { + return $this->aliases; + } + + public function addAlias(self $alias): static + { + if (! $this->aliases->contains($alias)) { + $this->aliases->add($alias); + $alias->setAliasOf($this); + } + + return $this; + } + + public function removeAlias(self $alias): static + { + // set the owning side to null (unless already changed) + if ($this->aliases->removeElement($alias) && $alias->getAliasOf() === $this) { + $alias->setAliasOf(null); + } + + return $this; + } } diff --git a/src/Form/MenuItemType.php b/src/Form/MenuItemType.php index 4e17044..96a6020 100644 --- a/src/Form/MenuItemType.php +++ b/src/Form/MenuItemType.php @@ -3,7 +3,11 @@ namespace App\Form; use App\Entity\MenuItem; +use App\Repository\MenuItemRepository; +use Doctrine\ORM\QueryBuilder; use Override; +use Symfony\Bridge\Doctrine\Form\Type\EntityType; +use Symfony\Bridge\Doctrine\Types\UlidType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; @@ -13,8 +17,18 @@ final class MenuItemType extends AbstractType #[Override] public function buildForm(FormBuilderInterface $builder, array $options): void { + $vendor = $options['data']->getFoodVendor(); + $vendorId = $vendor->getId(); $builder ->add('name') + ->add('aliasOf', EntityType::class, [ + 'class' => MenuItem::class, + 'choice_label' => 'name', + 'query_builder' => static fn(MenuItemRepository $repository): QueryBuilder => $repository + ->createQueryBuilder('m') + ->where('m.foodVendor = :vendorId') + ->setParameter(':vendorId', $vendorId, UlidType::NAME), + ]) ; } diff --git a/symfony.lock b/symfony.lock index ff8e7ce..9ad7de1 100644 --- a/symfony.lock +++ b/symfony.lock @@ -13,6 +13,18 @@ "src/Repository/.gitignore" ] }, + "doctrine/doctrine-fixtures-bundle": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "3.0", + "ref": "1f5514cfa15b947298df4d771e694e578d4c204d" + }, + "files": [ + "src/DataFixtures/AppFixtures.php" + ] + }, "doctrine/doctrine-migrations-bundle": { "version": "3.3", "recipe": { @@ -171,5 +183,18 @@ "files": [ "config/packages/validator.yaml" ] + }, + "symfony/web-profiler-bundle": { + "version": "7.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "6.1", + "ref": "e42b3f0177df239add25373083a564e5ead4e13a" + }, + "files": [ + "config/packages/web_profiler.yaml", + "config/routes/web_profiler.yaml" + ] } } diff --git a/templates/food_vendor/show.html.twig b/templates/food_vendor/show.html.twig index c4f76b4..cac8686 100644 --- a/templates/food_vendor/show.html.twig +++ b/templates/food_vendor/show.html.twig @@ -24,6 +24,9 @@ {% for item in food_vendor.menuItems %}
  • {{ item.name }} + {% if(item.aliasOf) %} + (alias of: {{ item.aliasOf.name }}) + {% endif %}
  • {% endfor %} diff --git a/templates/menu_item/show.html.twig b/templates/menu_item/show.html.twig index 16eefd0..80731e6 100644 --- a/templates/menu_item/show.html.twig +++ b/templates/menu_item/show.html.twig @@ -15,6 +15,12 @@ Name {{ menu_item.name }} + {% if(menu_item.aliasOf) %} + + Alias of + {{ menu_item.aliasOf.name }} + + {% endif %}