diff --git a/assets/js/mine-seeker/app.js b/assets/js/mine-seeker/app.js index 9d22647..c0118a8 100644 --- a/assets/js/mine-seeker/app.js +++ b/assets/js/mine-seeker/app.js @@ -6,7 +6,7 @@ class MineSeeker extends React.Component { constructor(props) { super(props); - let gameAssoc = '' !== props.gameId ? props.gameId : this.makeGameAssoc(50); + let gameAssoc = '' !== props.gameId ? props.gameId : crypto.randomUUID(); let channel = 'mineseeker/channel/' + gameAssoc; this.state = { @@ -23,15 +23,6 @@ class MineSeeker extends React.Component { }; } - makeGameAssoc(len) { - let text = ''; - let possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < len; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; - } - currectGridSize() { let $field = $('#mine-wrapper .grid'); $field.height($field.width()); @@ -174,27 +165,6 @@ class MineSeeker extends React.Component { } } - /** - * @see https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus - * @see https://developers.facebook.com/docs/sharing/reference/send-dialog - * @see https://developers.facebook.com/docs/plugins/share-button/ - */ - clickFBShare() { - let display = 'popup'; - - FB.getLoginStatus(function(response) { - display = 'connected' === response.status - ? 'dialog' - : 'popup'; - }); - - FB.ui({ - method: 'send', - display: display, - link: window.location.href + '/' + this.state.gameAssoc, - }); - } - wInit(session, gridServer, gridClient) { this.setState({ session: session }); @@ -227,15 +197,10 @@ class MineSeeker extends React.Component {
- {'dev' !== this.state.env - && Share in Facebook message - } - {'dev' === this.state.env - && Play w/ me! - } + Play w/ me! ) : '', renderGridFields: this.state.gameAssoc, diff --git a/assets/js/mine-seeker/grid/grid.js b/assets/js/mine-seeker/grid/grid.js index d8306a3..7ca5c7b 100644 --- a/assets/js/mine-seeker/grid/grid.js +++ b/assets/js/mine-seeker/grid/grid.js @@ -24,11 +24,7 @@ class Grid extends React.Component { createSet(obj) { for (let i = 0, j = this.state.row * this.state.col; i < j; i++) { - obj.push( - 0 < this.state.mines - ? 'm' - : 'w', - ); + obj.push(0 < this.state.mines ? 'm' : 'w'); this.state.mines--; } @@ -61,15 +57,8 @@ class Grid extends React.Component { return grid; } - checkMine(field, i, j) { - return 'undefined' !== typeof field[i] && 'undefined' !== typeof field[i][j] && 'm' === field[i][j]; - } - isThereMine(obj, row, col) { - if (this.checkMine(obj, row, col)) { - return 1; - } - return 0; + return 'm' === obj?.[row]?.[col] ? 1 : 0; } numberingGrid(obj) { diff --git a/composer.json b/composer.json index 4671257..6fb2dc6 100644 --- a/composer.json +++ b/composer.json @@ -5,28 +5,28 @@ "php": ">=8.1", "ext-iconv": "*", "ext-json": "*", - "doctrine/doctrine-migrations-bundle": "^2.0", + "doctrine/dbal": "^3.7", + "doctrine/doctrine-bundle": ">=2.11 <2.14", + "doctrine/doctrine-migrations-bundle": "^3.0", "doctrine/orm": "^2.6", "gos/web-socket-bundle": "^3.0", - "sensio/framework-extra-bundle": "^6.0", - "sonata-project/admin-bundle": "^4.0", - "sonata-project/doctrine-orm-admin-bundle": "^4.0", - "sonata-project/user-bundle": "^5.0", - "symfony/console": "5.4.*", + "symfony/console": "6.4.*", "symfony/flex": "^2.10.0", - "symfony/framework-bundle": "5.4.*", - "symfony/mailer": "5.4.*", + "symfony/framework-bundle": "6.4.*", + "symfony/mailer": "6.4.*", "symfony/monolog-bundle": "^3.8", - "symfony/orm-pack": "^2.0", - "symfony/twig-bundle": "5.4.*", + "symfony/security-bundle": "6.4.*", + "symfony/translation": "6.4.*", + "symfony/twig-bundle": "6.4.*", "symfony/webpack-encore-bundle": "^1.0", - "symfony/yaml": "5.4.*" + "symfony/yaml": "6.4.*" }, "require-dev": { "roave/security-advisories": "dev-master", - "symfony/dotenv": "5.4.*", - "symfony/profiler-pack": "^1.0", - "symfony/maker-bundle": "^1.5" + "symfony/dotenv": "6.4.*", + "symfony/maker-bundle": "^1.5", + "symfony/stopwatch": "6.4.*", + "symfony/web-profiler-bundle": "6.4.*" }, "config": { "preferred-install": { @@ -75,7 +75,7 @@ "extra": { "symfony": { "allow-contrib": false, - "require": "5.4.*" + "require": "6.4.*" } } } diff --git a/composer.lock b/composer.lock index 4b908bd..e47e3c3 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": "03048fea2703a341080496cdb62939bc", + "content-hash": "ca1c9aca666ca6afdb45abc43022ffa5", "packages": [ { "name": "cboden/ratchet", @@ -69,156 +69,6 @@ }, "time": "2021-12-14T00:20:41+00:00" }, - { - "name": "composer/package-versions-deprecated", - "version": "1.11.99.5", - "source": { - "type": "git", - "url": "https://github.com/composer/package-versions-deprecated.git", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/package-versions-deprecated/zipball/b4f54f74ef3453349c24a845d22392cd31e65f1d", - "reference": "b4f54f74ef3453349c24a845d22392cd31e65f1d", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1.0 || ^2.0", - "php": "^7 || ^8" - }, - "replace": { - "ocramius/package-versions": "1.11.99" - }, - "require-dev": { - "composer/composer": "^1.9.3 || ^2.0@dev", - "ext-zip": "^1.13", - "phpunit/phpunit": "^6.5 || ^7" - }, - "type": "composer-plugin", - "extra": { - "class": "PackageVersions\\Installer", - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "PackageVersions\\": "src/PackageVersions" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "support": { - "issues": "https://github.com/composer/package-versions-deprecated/issues", - "source": "https://github.com/composer/package-versions-deprecated/tree/1.11.99.5" - }, - "funding": [ - { - "url": "https://packagist.com", - "type": "custom" - }, - { - "url": "https://github.com/composer", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" - } - ], - "time": "2022-01-17T14:14:24+00:00" - }, - { - "name": "doctrine/annotations", - "version": "1.14.4", - "source": { - "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915", - "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915", - "shasum": "" - }, - "require": { - "doctrine/lexer": "^1 || ^2", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" - }, - "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "~1.4.10 || ^1.10.28", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7", - "vimeo/psalm": "^4.30 || ^5.14" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" - } - }, - "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": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", - "keywords": [ - "annotations", - "docblock", - "parser" - ], - "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.4" - }, - "abandoned": true, - "time": "2024-09-05T10:15:52+00:00" - }, { "name": "doctrine/cache", "version": "2.2.0", @@ -492,35 +342,41 @@ }, { "name": "doctrine/dbal", - "version": "2.13.9", + "version": "3.10.5", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8" + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/c480849ca3ad6706a39c970cdfe6888fa8a058b8", - "reference": "c480849ca3ad6706a39c970cdfe6888fa8a058b8", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/95d84866bf3c04b2ddca1df7c049714660959aef", + "reference": "95d84866bf3c04b2ddca1df7c049714660959aef", "shasum": "" }, "require": { - "doctrine/cache": "^1.0|^2.0", + "composer-runtime-api": "^2", "doctrine/deprecations": "^0.5.3|^1", - "doctrine/event-manager": "^1.0", - "ext-pdo": "*", - "php": "^7.1 || ^8" + "doctrine/event-manager": "^1|^2", + "php": "^7.4 || ^8.0", + "psr/cache": "^1|^2|^3", + "psr/log": "^1|^2|^3" + }, + "conflict": { + "doctrine/cache": "< 1.11" }, "require-dev": { - "doctrine/coding-standard": "9.0.0", - "jetbrains/phpstorm-stubs": "2021.1", - "phpstan/phpstan": "1.4.6", - "phpunit/phpunit": "^7.5.20|^8.5|9.5.16", - "psalm/plugin-phpunit": "0.16.1", - "squizlabs/php_codesniffer": "3.6.2", - "symfony/cache": "^4.4", - "symfony/console": "^2.0.5|^3.0|^4.0|^5.0", - "vimeo/psalm": "4.22.0" + "doctrine/cache": "^1.11|^2.0", + "doctrine/coding-standard": "14.0.0", + "fig/log-test": "^1", + "jetbrains/phpstorm-stubs": "2023.1", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "9.6.34", + "slevomat/coding-standard": "8.27.1", + "squizlabs/php_codesniffer": "4.0.1", + "symfony/cache": "^5.4|^6.0|^7.0|^8.0", + "symfony/console": "^4.4|^5.4|^6.0|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -531,7 +387,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" + "Doctrine\\DBAL\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -574,14 +430,13 @@ "queryobject", "sasql", "sql", - "sqlanywhere", "sqlite", "sqlserver", "sqlsrv" ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/2.13.9" + "source": "https://github.com/doctrine/dbal/tree/3.10.5" }, "funding": [ { @@ -597,7 +452,7 @@ "type": "tidelift" } ], - "time": "2022-05-02T20:28:55+00:00" + "time": "2026-02-24T08:03:57+00:00" }, { "name": "doctrine/deprecations", @@ -649,56 +504,62 @@ }, { "name": "doctrine/doctrine-bundle", - "version": "2.7.2", + "version": "2.13.3", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "22d53b2c5ad03929628fb4a928b01135585b7179" + "reference": "aac7562c96d117e16cbadfe41bef17d2fc760f74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/22d53b2c5ad03929628fb4a928b01135585b7179", - "reference": "22d53b2c5ad03929628fb4a928b01135585b7179", + "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/aac7562c96d117e16cbadfe41bef17d2fc760f74", + "reference": "aac7562c96d117e16cbadfe41bef17d2fc760f74", "shasum": "" }, "require": { - "doctrine/annotations": "^1", "doctrine/cache": "^1.11 || ^2.0", - "doctrine/dbal": "^2.13.1 || ^3.3.2", + "doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/persistence": "^2.2 || ^3", "doctrine/sql-formatter": "^1.0.1", - "php": "^7.1 || ^8.0", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/config": "^4.4.3 || ^5.4 || ^6.0", - "symfony/console": "^4.4 || ^5.4 || ^6.0", - "symfony/dependency-injection": "^4.4.18 || ^5.4 || ^6.0", + "php": "^7.4 || ^8.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0", + "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": "^4.4.22 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", + "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" }, "conflict": { - "doctrine/orm": "<2.11 || >=3.0", - "twig/twig": "<1.34 || >=2.0,<2.4" + "doctrine/annotations": ">=3.0", + "doctrine/orm": "<2.17 || >=4.0", + "twig/twig": "<1.34 || >=2.0 <2.4" }, "require-dev": { - "doctrine/coding-standard": "^9.0", - "doctrine/orm": "^2.11 || ^3.0", + "doctrine/annotations": "^1 || ^2", + "doctrine/coding-standard": "^12", + "doctrine/deprecations": "^1.0", + "doctrine/orm": "^2.17 || ^3.0", "friendsofphp/proxy-manager-lts": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.0 || ^9.3 || ^10.0", - "psalm/plugin-phpunit": "^0.16.1", - "psalm/plugin-symfony": "^3", + "phpstan/phpstan": "2.1.1", + "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^9.5.26", "psr/log": "^1.1.4 || ^2.0 || ^3.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/property-info": "^4.4 || ^5.4 || ^6.0", - "symfony/proxy-manager-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/validator": "^4.4 || ^5.4 || ^6.0", - "symfony/web-profiler-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0", - "twig/twig": "^1.34 || ^2.12 || ^3.0", - "vimeo/psalm": "^4.7" + "symfony/phpunit-bridge": "^6.1 || ^7.0", + "symfony/property-info": "^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", + "symfony/twig-bridge": "^5.4 || ^6.0 || ^7.0", + "symfony/validator": "^5.4 || ^6.0 || ^7.0", + "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" }, "suggest": { "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", @@ -708,7 +569,7 @@ "type": "symfony-bundle", "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "Doctrine\\Bundle\\DoctrineBundle\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -743,7 +604,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineBundle/issues", - "source": "https://github.com/doctrine/DoctrineBundle/tree/2.7.2" + "source": "https://github.com/doctrine/DoctrineBundle/tree/2.13.3" }, "funding": [ { @@ -759,43 +620,47 @@ "type": "tidelift" } ], - "time": "2022-12-07T12:07:11+00:00" + "time": "2025-03-16T10:55:20+00:00" }, { "name": "doctrine/doctrine-migrations-bundle", - "version": "2.2.3", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/doctrine/DoctrineMigrationsBundle.git", - "reference": "0a081b55a88259a887af7be654743a8c5f703e99" + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/0a081b55a88259a887af7be654743a8c5f703e99", - "reference": "0a081b55a88259a887af7be654743a8c5f703e99", + "url": "https://api.github.com/repos/doctrine/DoctrineMigrationsBundle/zipball/1e380c6dd8ac8488217f39cff6b77e367f1a644b", + "reference": "1e380c6dd8ac8488217f39cff6b77e367f1a644b", "shasum": "" }, "require": { - "doctrine/doctrine-bundle": "~1.0|~2.0", - "doctrine/migrations": "^2.2", - "php": "^7.1|^8.0", - "symfony/framework-bundle": "~3.4|~4.0|~5.0" + "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": { - "doctrine/coding-standard": "^8.0", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0|^8.0|^9.0" + "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\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Doctrine\\Bundle\\MigrationsBundle\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -808,11 +673,11 @@ }, { "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org" + "homepage": "https://www.doctrine-project.org" }, { "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "homepage": "https://symfony.com/contributors" } ], "description": "Symfony DoctrineMigrationsBundle", @@ -824,7 +689,7 @@ ], "support": { "issues": "https://github.com/doctrine/DoctrineMigrationsBundle/issues", - "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/2.2.3" + "source": "https://github.com/doctrine/DoctrineMigrationsBundle/tree/3.7.0" }, "funding": [ { @@ -840,34 +705,33 @@ "type": "tidelift" } ], - "time": "2021-03-18T20:55:50+00:00" + "time": "2025-11-15T19:02:59+00:00" }, { "name": "doctrine/event-manager", - "version": "1.2.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", - "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/dda33921b198841ca8dbad2eaa5d4d34769d18cf", + "reference": "dda33921b198841ca8dbad2eaa5d4d34769d18cf", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.24" + "doctrine/coding-standard": "^14", + "phpdocumentor/guides-cli": "^1.4", + "phpstan/phpstan": "^2.1.32", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -916,7 +780,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.2.0" + "source": "https://github.com/doctrine/event-manager/tree/2.1.1" }, "funding": [ { @@ -932,7 +796,7 @@ "type": "tidelift" } ], - "time": "2022-10-12T20:51:15+00:00" + "time": "2026-01-29T07:11:08+00:00" }, { "name": "doctrine/inflector", @@ -1095,28 +959,27 @@ }, { "name": "doctrine/lexer", - "version": "2.1.1", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", - "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", + "doctrine/coding-standard": "^12", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^10.5", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.21" + "vimeo/psalm": "^5.21" }, "type": "library", "autoload": { @@ -1153,7 +1016,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.1" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -1169,47 +1032,55 @@ "type": "tidelift" } ], - "time": "2024-02-05T11:35:39+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "doctrine/migrations", - "version": "2.3.5", + "version": "3.9.6", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "28d92a34348fee5daeb80879e56461b2e862fc05" + "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/28d92a34348fee5daeb80879e56461b2e862fc05", - "reference": "28d92a34348fee5daeb80879e56461b2e862fc05", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/ffd8355cdd8505fc650d9604f058bf62aedd80a1", + "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1", "shasum": "" }, "require": { - "composer/package-versions-deprecated": "^1.8", - "doctrine/dbal": "^2.9", - "friendsofphp/proxy-manager-lts": "^1.0", - "php": "^7.1 || ^8.0", - "symfony/console": "^3.4||^4.4.16||^5.0", - "symfony/stopwatch": "^3.4||^4.0||^5.0" + "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": "^8.2", - "doctrine/orm": "^2.6", + "doctrine/coding-standard": "^14", + "doctrine/orm": "^2.13 || ^3", + "doctrine/persistence": "^2 || ^3 || ^4", + "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", - "jdorn/sql-formatter": "^1.1", - "mikey179/vfsstream": "^1.6", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-deprecation-rules": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.4", - "symfony/cache": "^4.4. || ^5.3", - "symfony/process": "^3.4||^4.0||^5.0", - "symfony/yaml": "^3.4||^4.0||^5.0" + "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": { - "jdorn/sql-formatter": "Allows to generate formatted SQL with the diff command.", + "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", "symfony/yaml": "Allows the use of yaml for migration configuration files." }, "bin": [ @@ -1218,7 +1089,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Migrations\\": "lib/Doctrine/Migrations" + "Doctrine\\Migrations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1244,12 +1115,11 @@ "keywords": [ "database", "dbal", - "migrations", - "php" + "migrations" ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/2.3.5" + "source": "https://github.com/doctrine/migrations/tree/3.9.6" }, "funding": [ { @@ -1265,7 +1135,7 @@ "type": "tidelift" } ], - "time": "2021-10-19T19:55:20+00:00" + "time": "2026-02-11T06:46:11+00:00" }, { "name": "doctrine/orm", @@ -1633,88 +1503,6 @@ }, "time": "2023-08-08T05:53:35+00:00" }, - { - "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.19", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "c20299aa9f48a622052964a75c5a4cef017398b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/c20299aa9f48a622052964a75c5a4cef017398b2", - "reference": "c20299aa9f48a622052964a75c5a4cef017398b2", - "shasum": "" - }, - "require": { - "laminas/laminas-code": "~3.4.1|^4.0", - "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0|^8.0" - }, - "conflict": { - "laminas/laminas-stdlib": "<3.2.1", - "zendframework/zend-stdlib": "<3.2.1" - }, - "replace": { - "ocramius/proxy-manager": "^2.1" - }, - "require-dev": { - "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/Ocramius/ProxyManager", - "name": "ocramius/proxy-manager" - } - }, - "autoload": { - "psr-4": { - "ProxyManager\\": "src/ProxyManager" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - } - ], - "description": "Adding support for a wider range of PHP versions to ocramius/proxy-manager", - "homepage": "https://github.com/FriendsOfPHP/proxy-manager-lts", - "keywords": [ - "aop", - "lazy loading", - "proxy", - "proxy pattern", - "service proxies" - ], - "support": { - "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.19" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ocramius/proxy-manager", - "type": "tidelift" - } - ], - "time": "2025-10-28T10:28:17+00:00" - }, { "name": "gos/pubsub-router-bundle", "version": "v2.8.0", @@ -2087,375 +1875,6 @@ ], "time": "2026-03-10T16:41:02+00:00" }, - { - "name": "jms/metadata", - "version": "2.9.0", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/metadata.git", - "reference": "554319d2e5f0c5d8ccaeffe755eac924e14da330" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/metadata/zipball/554319d2e5f0c5d8ccaeffe755eac924e14da330", - "reference": "554319d2e5f0c5d8ccaeffe755eac924e14da330", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "require-dev": { - "doctrine/cache": "^1.0|^2.0", - "doctrine/coding-standard": "^8.0", - "mikey179/vfsstream": "^1.6.7", - "phpunit/phpunit": "^8.5.42|^9.6.23", - "psr/container": "^1.0|^2.0", - "symfony/cache": "^3.1|^4.0|^5.0|^6.0|^7.0|^8.0", - "symfony/dependency-injection": "^3.1|^4.0|^5.0|^6.0|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Metadata\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "Class/method/property metadata management in PHP", - "keywords": [ - "annotations", - "metadata", - "xml", - "yaml" - ], - "support": { - "issues": "https://github.com/schmittjoh/metadata/issues", - "source": "https://github.com/schmittjoh/metadata/tree/2.9.0" - }, - "time": "2025-11-30T20:12:26+00:00" - }, - { - "name": "jms/serializer", - "version": "3.32.7", - "source": { - "type": "git", - "url": "https://github.com/schmittjoh/serializer.git", - "reference": "d725ebd288688bb24f47ee467b1299b0fc6d04f8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/d725ebd288688bb24f47ee467b1299b0fc6d04f8", - "reference": "d725ebd288688bb24f47ee467b1299b0fc6d04f8", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1 || ^2.0", - "doctrine/lexer": "^2.0 || ^3.0", - "jms/metadata": "^2.6", - "php": "^7.4 || ^8.0", - "phpstan/phpdoc-parser": "^1.20 || ^2.0" - }, - "require-dev": { - "doctrine/annotations": "^1.14 || ^2.0", - "doctrine/coding-standard": "^12.0", - "doctrine/orm": "^2.14 || ^3.0", - "doctrine/persistence": "^2.5.2 || ^3.0", - "doctrine/phpcr-odm": "^1.5.2 || ^2.0", - "ext-pdo_sqlite": "*", - "jackalope/jackalope-doctrine-dbal": "^1.3", - "ocramius/proxy-manager": "^1.0 || ^2.0", - "phpbench/phpbench": "^1.0", - "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^9.0 || ^10.0 || ^11.0", - "psr/container": "^1.0 || ^2.0", - "rector/rector": "^1.0.0 || ^2.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/expression-language": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/filesystem": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/form": "^5.4.45 || ^6.4.27 || ^7.0 || ^8.0", - "symfony/translation": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/uid": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/validator": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0", - "twig/twig": "^1.34 || ^2.4 || ^3.0" - }, - "suggest": { - "doctrine/collections": "Required if you like to use doctrine collection types as ArrayCollection.", - "symfony/cache": "Required if you like to use cache functionality.", - "symfony/uid": "Required if you'd like to serialize UID objects.", - "symfony/yaml": "Required if you'd like to use the YAML metadata format." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "JMS\\Serializer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" - }, - { - "name": "Asmir Mustafic", - "email": "goetas@gmail.com" - } - ], - "description": "Library for (de-)serializing data of any complexity; supports XML, and JSON.", - "homepage": "http://jmsyst.com/libs/serializer", - "keywords": [ - "deserialization", - "jaxb", - "json", - "serialization", - "xml" - ], - "support": { - "issues": "https://github.com/schmittjoh/serializer/issues", - "source": "https://github.com/schmittjoh/serializer/tree/3.32.7" - }, - "funding": [ - { - "url": "https://github.com/goetas", - "type": "github" - }, - { - "url": "https://github.com/scyzoryck", - "type": "github" - } - ], - "time": "2026-03-11T20:11:17+00:00" - }, - { - "name": "knplabs/knp-menu", - "version": "v3.8.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/KnpMenu.git", - "reference": "79d325909a1d428a93f1a0f55e90177830e283bb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenu/zipball/79d325909a1d428a93f1a0f55e90177830e283bb", - "reference": "79d325909a1d428a93f1a0f55e90177830e283bb", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "conflict": { - "symfony/http-foundation": "<5.4", - "twig/twig": "<2.16" - }, - "require-dev": { - "phpstan/phpstan": "^2.1", - "phpunit/phpunit": "^9.6", - "psr/container": "^1.0 || ^2.0", - "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^7.0", - "symfony/routing": "^5.4 || ^6.0 || ^7.0", - "twig/twig": "^2.16 || ^3.0" - }, - "suggest": { - "twig/twig": "for the TwigRenderer and the integration with your templates" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Knp\\Menu\\": "src/Knp/Menu" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "KnpLabs", - "homepage": "https://knplabs.com" - }, - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "The Community", - "homepage": "https://github.com/KnpLabs/KnpMenu/contributors" - } - ], - "description": "An object oriented menu library", - "homepage": "https://knplabs.com", - "keywords": [ - "menu", - "tree" - ], - "support": { - "issues": "https://github.com/KnpLabs/KnpMenu/issues", - "source": "https://github.com/KnpLabs/KnpMenu/tree/v3.8.0" - }, - "time": "2025-06-13T15:03:33+00:00" - }, - { - "name": "knplabs/knp-menu-bundle", - "version": "v3.7.0", - "source": { - "type": "git", - "url": "https://github.com/KnpLabs/KnpMenuBundle.git", - "reference": "aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/KnpMenuBundle/zipball/aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a", - "reference": "aa22e57f8f41c34ad5e382aae4d0c12998c0eb5a", - "shasum": "" - }, - "require": { - "knplabs/knp-menu": "^3.8", - "php": "^8.1", - "symfony/config": "^6.4 | ^7.0 | ^8.0", - "symfony/dependency-injection": "^6.4 | ^7.0 | ^8.0", - "symfony/deprecation-contracts": "^2.5 | ^3.3", - "symfony/http-kernel": "^6.4 | ^7.0 | ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^10.5 | ^11.5 | ^12.4", - "symfony/expression-language": "^6.4 | ^7.0 | ^8.0", - "symfony/phpunit-bridge": "^7.0 | ^8.0", - "symfony/templating": "^6.4 | ^7.0 | ^8.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Knp\\Bundle\\MenuBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Knplabs", - "homepage": "http://knplabs.com" - }, - { - "name": "Christophe Coevoet", - "email": "stof@notk.org" - }, - { - "name": "Symfony Community", - "homepage": "https://github.com/KnpLabs/KnpMenuBundle/contributors" - } - ], - "description": "This bundle provides an integration of the KnpMenu library", - "keywords": [ - "menu" - ], - "support": { - "issues": "https://github.com/KnpLabs/KnpMenuBundle/issues", - "source": "https://github.com/KnpLabs/KnpMenuBundle/tree/v3.7.0" - }, - "time": "2025-11-30T08:30:04+00:00" - }, - { - "name": "laminas/laminas-code", - "version": "4.17.0", - "source": { - "type": "git", - "url": "https://github.com/laminas/laminas-code.git", - "reference": "40d61e2899ec17c5d08bbc0a2d586b3ca17ab9bd" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-code/zipball/40d61e2899ec17c5d08bbc0a2d586b3ca17ab9bd", - "reference": "40d61e2899ec17c5d08bbc0a2d586b3ca17ab9bd", - "shasum": "" - }, - "require": { - "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0.1", - "ext-phar": "*", - "laminas/laminas-coding-standard": "^3.0.0", - "laminas/laminas-stdlib": "^3.18.0", - "phpunit/phpunit": "^10.5.58", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.15.0" - }, - "suggest": { - "doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features", - "laminas/laminas-stdlib": "Laminas\\Stdlib component" - }, - "type": "library", - "autoload": { - "psr-4": { - "Laminas\\Code\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "description": "Extensions to the PHP Reflection API, static code scanning, and code generation", - "homepage": "https://laminas.dev", - "keywords": [ - "code", - "laminas", - "laminasframework" - ], - "support": { - "chat": "https://laminas.dev/chat", - "docs": "https://docs.laminas.dev/laminas-code/", - "forum": "https://discourse.laminas.dev", - "issues": "https://github.com/laminas/laminas-code/issues", - "rss": "https://github.com/laminas/laminas-code/releases.atom", - "source": "https://github.com/laminas/laminas-code" - }, - "funding": [ - { - "url": "https://funding.communitybridge.org/projects/laminas-project", - "type": "community_bridge" - } - ], - "time": "2025-11-01T09:38:14+00:00" - }, { "name": "monolog/monolog", "version": "3.10.0", @@ -2559,53 +1978,6 @@ ], "time": "2026-01-02T08:56:05+00:00" }, - { - "name": "phpstan/phpdoc-parser", - "version": "2.3.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/a004701b11273a26cd7955a61d67a7f1e525a45a", - "reference": "a004701b11273a26cd7955a61d67a7f1e525a45a", - "shasum": "" - }, - "require": { - "php": "^7.4 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^5.3.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^2.0", - "phpstan/phpstan-phpunit": "^2.0", - "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.2" - }, - "time": "2026-01-25T14:56:51+00:00" - }, { "name": "psr/cache", "version": "3.0.0", @@ -2656,23 +2028,76 @@ "time": "2021-02-03T23:26:27+00:00" }, { - "name": "psr/container", - "version": "1.1.2", + "name": "psr/clock", + "version": "1.0.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", - "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" + }, + { + "name": "psr/container", + "version": "2.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -2699,9 +2124,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.2" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2021-11-05T16:50:12+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", @@ -2863,16 +2288,16 @@ }, { "name": "psr/log", - "version": "2.0.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376" + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376", - "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376", + "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", + "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3", "shasum": "" }, "require": { @@ -2881,7 +2306,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { @@ -2907,9 +2332,9 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/2.0.0" + "source": "https://github.com/php-fig/log/tree/3.0.2" }, - "time": "2021-07-14T16:41:46+00:00" + "time": "2024-09-11T13:17:53+00:00" }, { "name": "ralouphie/getallheaders", @@ -3463,1132 +2888,6 @@ ], "time": "2024-06-11T12:45:25+00:00" }, - { - "name": "sensio/framework-extra-bundle", - "version": "v6.2.10", - "source": { - "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/2f886f4b31f23c76496901acaedfedb6936ba61f", - "reference": "2f886f4b31f23c76496901acaedfedb6936ba61f", - "shasum": "" - }, - "require": { - "doctrine/annotations": "^1.0|^2.0", - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^4.4|^5.0|^6.0" - }, - "conflict": { - "doctrine/doctrine-cache-bundle": "<1.3.1", - "doctrine/persistence": "<1.3" - }, - "require-dev": { - "doctrine/dbal": "^2.10|^3.0", - "doctrine/doctrine-bundle": "^1.11|^2.0", - "doctrine/orm": "^2.5", - "symfony/browser-kit": "^4.4|^5.0|^6.0", - "symfony/doctrine-bridge": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/monolog-bridge": "^4.0|^5.0|^6.0", - "symfony/monolog-bundle": "^3.2", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9|^6.0", - "symfony/security-bundle": "^4.4|^5.0|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", - "twig/twig": "^1.34|^2.4|^3.0" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "6.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "src/" - }, - "exclude-from-classmap": [ - "/tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "This bundle provides a way to configure your controllers with annotations", - "keywords": [ - "annotations", - "controllers" - ], - "support": { - "source": "https://github.com/sensiolabs/SensioFrameworkExtraBundle/tree/v6.2.10" - }, - "abandoned": "Symfony", - "time": "2023-02-24T14:57:12+00:00" - }, - { - "name": "sonata-project/admin-bundle", - "version": "4.22.4", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/SonataAdminBundle.git", - "reference": "e3a845e9c9bdb3848fa896ed106f1645b6336005" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataAdminBundle/zipball/e3a845e9c9bdb3848fa896ed106f1645b6336005", - "reference": "e3a845e9c9bdb3848fa896ed106f1645b6336005", - "shasum": "" - }, - "require": { - "doctrine/collections": "^1.6 || ^2.0", - "doctrine/common": "^3.0", - "doctrine/inflector": "^2.0", - "ext-json": "*", - "knplabs/knp-menu": "^3.1", - "knplabs/knp-menu-bundle": "^3.0", - "php": "^7.4 || ^8.0", - "psr/container": "^1.0 || ^2.0", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "sonata-project/block-bundle": "^4.11", - "sonata-project/doctrine-extensions": "^1.8 || ^2.0", - "sonata-project/exporter": "^2.14 || ^3.1.1", - "sonata-project/form-extensions": "^1.15", - "sonata-project/twig-extensions": "^1.4.1 || ^2.0", - "symfony/asset": "^4.4 || ^5.4 || ^6.0", - "symfony/config": "^4.4 || ^5.4 || ^6.0", - "symfony/console": "^4.4 || ^5.4 || ^6.0", - "symfony/dependency-injection": "^4.4.8 || ^5.4 || ^6.0", - "symfony/doctrine-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/event-dispatcher": "^4.4 || ^5.4 || ^6.0", - "symfony/event-dispatcher-contracts": "^1.1 || ^2.0 || ^3.0", - "symfony/expression-language": "^4.4 || ^5.4 || ^6.0", - "symfony/form": "^4.4.12 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4.6 || ^5.4 || ^6.0", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", - "symfony/options-resolver": "^4.4 || ^5.4 || ^6.0", - "symfony/property-access": "^4.4 || ^5.4 || ^6.0", - "symfony/routing": "^4.4 || ^5.4 || ^6.0", - "symfony/security-acl": "^3.1", - "symfony/security-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/security-core": "^4.4.24 || ^5.4 || ^6.0", - "symfony/security-csrf": "^4.4 || ^5.4 || ^6.0", - "symfony/serializer": "^4.4 || ^5.4 || ^6.0", - "symfony/string": "^5.4 || ^6.0", - "symfony/translation": "^4.4 || ^5.4 || ^6.0", - "symfony/translation-contracts": "^1.1.10 || ^2.3 || ^3.0", - "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/twig-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/validator": "^4.4 || ^5.4 || ^6.0", - "twig/string-extra": "^3.0", - "twig/twig": "^2.12.1 || ^3.0" - }, - "require-dev": { - "doctrine/annotations": "^1.7", - "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0", - "psr/event-dispatcher": "^1.0", - "rector/rector": "^0.15", - "symfony/browser-kit": "^4.4 || ^5.4 || ^6.0", - "symfony/css-selector": "^4.4 || ^5.4 || ^6.0", - "symfony/filesystem": "^4.4 || ^5.4 || ^6.0", - "symfony/maker-bundle": "^1.25", - "symfony/phpunit-bridge": "^6.1", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "^4.9.2" - }, - "suggest": { - "twig/extra-bundle": "Auto configures the Twig Intl extension" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Sonata\\AdminBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/SonataAdminBundle/contributors" - } - ], - "description": "The missing Symfony Admin Generator", - "homepage": "https://docs.sonata-project.org/projects/SonataAdminBundle", - "keywords": [ - "admin", - "admin-generator", - "admin-lte", - "bundle", - "sonata", - "symfony" - ], - "support": { - "issues": "https://github.com/sonata-project/SonataAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataAdminBundle/tree/4.22.4" - }, - "funding": [ - { - "url": "https://github.com/OskarStark", - "type": "github" - }, - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - } - ], - "time": "2023-01-26T22:07:22+00:00" - }, - { - "name": "sonata-project/block-bundle", - "version": "4.21.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/SonataBlockBundle.git", - "reference": "62f0b80987a20e9e386aba8b744b2807a5ddfad3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataBlockBundle/zipball/62f0b80987a20e9e386aba8b744b2807a5ddfad3", - "reference": "62f0b80987a20e9e386aba8b744b2807a5ddfad3", - "shasum": "" - }, - "require": { - "doctrine/collections": "^1.8 || ^2.0", - "doctrine/common": "^2.7.1 || ^3.0", - "php": "^8.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", - "psr/container": "^1.0 || ^2.0", - "psr/log": "^1.1 || ^2.0 || ^3.0", - "sonata-project/cache": "^2.0", - "sonata-project/form-extensions": "^1.4 || ^2.0", - "symfony/asset": "^4.4 || ^5.4 || ^6.2", - "symfony/config": "^4.4 || ^5.4 || ^6.2", - "symfony/console": "^4.4 || ^5.4 || ^6.2", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.2", - "symfony/event-dispatcher": "^4.4 || ^5.4 || ^6.2", - "symfony/event-dispatcher-contracts": "^1.1 || ^2.0 || ^3.0", - "symfony/form": "^4.4 || ^5.4 || ^6.2", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.2", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.2", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.2", - "symfony/options-resolver": "^4.4 || ^5.4 || ^6.2", - "symfony/twig-bundle": "^4.4 || ^5.4 || ^6.2", - "symfony/validator": "^4.4 || ^5.4 || ^6.2", - "twig/twig": "^2.12.1 || ^3.0" - }, - "conflict": { - "doctrine/annotations": "<1.7", - "knplabs/knp-menu-bundle": "<3.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.4", - "knplabs/knp-menu": "^3.1", - "knplabs/knp-menu-bundle": "^3.0", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.1", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5.13", - "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0 || ^5.0", - "rector/rector": "^0.16", - "sonata-project/doctrine-extensions": "^1.10.1", - "symfony/browser-kit": "^4.4 || ^5.4 || ^6.2", - "symfony/debug": "^4.4 || ^5.4 || ^6.2", - "symfony/phpunit-bridge": "^6.2", - "symfony/routing": "^4.4.12 || ^5.4 || ^6.2", - "symfony/stopwatch": "^4.4 || ^5.4 || ^6.2", - "symfony/yaml": "^4.4 || ^5.4 || ^6.2", - "vimeo/psalm": "^4.1 || ^5.8.0" - }, - "suggest": { - "knplabs/knp-menu-bundle": "Required to use the menu block" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sonata\\BlockBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/SonataBlockBundle/contributors" - } - ], - "description": "Symfony SonataBlockBundle", - "homepage": "https://docs.sonata-project.org/projects/SonataBlockBundle", - "keywords": [ - "block", - "sonata" - ], - "support": { - "issues": "https://github.com/sonata-project/SonataBlockBundle/issues", - "source": "https://github.com/sonata-project/SonataBlockBundle/tree/4.21.0" - }, - "funding": [ - { - "url": "https://github.com/OskarStark", - "type": "github" - }, - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - } - ], - "time": "2023-05-13T14:38:22+00:00" - }, - { - "name": "sonata-project/cache", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/cache.git", - "reference": "296a257c679cffd91b4a5183e55ed1200db79ea4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/cache/zipball/296a257c679cffd91b4a5183e55ed1200db79ea4", - "reference": "296a257c679cffd91b4a5183e55ed1200db79ea4", - "shasum": "" - }, - "require": { - "php": "^7.3 || ^8.0", - "psr/log": "^1.0 || ^2.0 || ^3.0" - }, - "conflict": { - "doctrine/orm": "<2.8", - "doctrine/phpcr-odm": "<1.4", - "predis/predis": "<1.1" - }, - "require-dev": { - "doctrine/orm": "^2.8", - "doctrine/phpcr-odm": "^1.4", - "jackalope/jackalope-doctrine-dbal": "^1.2", - "predis/predis": "^1.1", - "symfony/phpunit-bridge": "^5.3" - }, - "suggest": { - "doctrine/orm": "ORM support", - "doctrine/phpcr-odm": "PHPCR ODM support", - "ext-apc": "Caching with ext/apc", - "ext-memcached": "Caching with ext/memcached", - "predis/predis": "Install redis php" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sonata\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@gmail.com", - "homepage": "https://sonata-project.org/" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/cache/contributors" - } - ], - "description": "Cache library", - "homepage": "https://github.com/sonata-project/cache", - "keywords": [ - "cache", - "memcached", - "mongodb", - "redis" - ], - "support": { - "issues": "https://github.com/sonata-project/cache/issues", - "source": "https://github.com/sonata-project/cache/tree/2.2.0" - }, - "funding": [ - { - "url": "https://github.com/OskarStark", - "type": "github" - }, - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/wbloszyk", - "type": "github" - } - ], - "abandoned": true, - "time": "2021-08-03T08:06:40+00:00" - }, - { - "name": "sonata-project/doctrine-extensions", - "version": "1.18.1", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/sonata-doctrine-extensions.git", - "reference": "692b7e3387deaa7c4d1412c3f1a5497fe8a00f14" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/sonata-doctrine-extensions/zipball/692b7e3387deaa7c4d1412c3f1a5497fe8a00f14", - "reference": "692b7e3387deaa7c4d1412c3f1a5497fe8a00f14", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^2.13 || ^3.1", - "doctrine/persistence": "^1.3.6 || ^2.0 || ^3.0", - "php": "^7.4 || ^8.0" - }, - "conflict": { - "doctrine/annotations": "<1.7", - "doctrine/doctrine-bundle": "<2.0", - "doctrine/mongodb-odm": "<2.0", - "doctrine/orm": "<2.5" - }, - "require-dev": { - "doctrine/common": "^2.7 || ^3.0", - "doctrine/doctrine-bundle": "^2.0", - "doctrine/mongodb-odm": "^2.0", - "doctrine/orm": "^2.5", - "friendsofphp/php-cs-fixer": "^3.4", - "jackalope/jackalope-doctrine-dbal": "^1.0", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5.13", - "psalm/plugin-phpunit": "^0.16", - "rector/rector": "^0.13", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.0", - "symfony/expression-language": "^4.4 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/phpunit-bridge": "^6.1", - "vimeo/psalm": "^4.1" - }, - "suggest": { - "doctrine/orm": "If you use doctrine orm", - "doctrine/phpcr-odm": "If you use doctrine phpcr", - "symfony/framework-bundle": "If you want to use symfony" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sonata\\Doctrine\\": "src/", - "Sonata\\Doctrine\\Bridge\\Symfony\\": "src/Bridge/Symfony/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "http://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/sonata-doctrine-extensions/contributors" - } - ], - "description": "Doctrine2 behavioral extensions", - "homepage": "https://github.com/sonata-project/sonata-doctrine-extensions", - "keywords": [ - "doctrine", - "doctrine2", - "json" - ], - "support": { - "issues": "https://github.com/sonata-project/sonata-doctrine-extensions/issues", - "source": "https://github.com/sonata-project/sonata-doctrine-extensions/tree/1.18.1" - }, - "funding": [ - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2022-09-02T07:07:59+00:00" - }, - { - "name": "sonata-project/doctrine-orm-admin-bundle", - "version": "4.9.1", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle.git", - "reference": "81bfbcb7d22f4df2f8e67b4dee087cfd9c2f663b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataDoctrineORMAdminBundle/zipball/81bfbcb7d22f4df2f8e67b4dee087cfd9c2f663b", - "reference": "81bfbcb7d22f4df2f8e67b4dee087cfd9c2f663b", - "shasum": "" - }, - "require": { - "doctrine/dbal": "^2.13 || ^3.0", - "doctrine/doctrine-bundle": "^2.4", - "doctrine/orm": "^2.8", - "doctrine/persistence": "^2.1 || ^3.0", - "php": "^7.4 || ^8.0", - "sonata-project/admin-bundle": "^4.18", - "sonata-project/exporter": "^2.0 || ^3.0", - "sonata-project/form-extensions": "^1.4", - "symfony/config": "^4.4 || ^5.4 || ^6.0", - "symfony/console": "^4.4 || ^5.4 || ^6.0", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.0", - "symfony/doctrine-bridge": "^4.4 || ^5.4 || ^6.0", - "symfony/form": "^4.4 || ^5.4 || ^6.0", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.0", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.0", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.0", - "symfony/options-resolver": "^4.4 || ^5.4 || ^6.0", - "symfony/property-access": "^4.4 || ^5.4 || ^6.0", - "symfony/security-acl": "^3.0", - "twig/twig": "^2.10 || ^3.0" - }, - "conflict": { - "sonata-project/block-bundle": "<4.2", - "sonata-project/entity-audit-bundle": ">=2.0" - }, - "provide": { - "sonata-project/admin-bundle-persistency-layer": "1.0.0" - }, - "require-dev": { - "dama/doctrine-test-bundle": "^6.7", - "doctrine/doctrine-fixtures-bundle": "^3.4", - "friendsofphp/php-cs-fixer": "^3.4", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0", - "rector/rector": "^0.15", - "sonata-project/block-bundle": "^4.2", - "sonata-project/entity-audit-bundle": "^1.1", - "symfony/browser-kit": "^4.4 || ^5.4 || ^6.0", - "symfony/css-selector": "^4.4 || ^5.4 || ^6.0", - "symfony/panther": "^1.0 || ^2.0", - "symfony/phpunit-bridge": "^6.1", - "symfony/templating": "^4.4 || ^5.4 || ^6.0", - "symfony/yaml": "^4.4 || ^5.4 || ^6.0", - "vimeo/psalm": "^4.1.1", - "weirdan/doctrine-psalm-plugin": "^2.0" - }, - "suggest": { - "sonata-project/entity-audit-bundle": "If you want to support for versioning of entities and their associations." - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sonata\\DoctrineORMAdminBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/contributors" - } - ], - "description": "Integrate Doctrine ORM into the SonataAdminBundle", - "homepage": "https://docs.sonata-project.org/projects/SonataDoctrineORMAdminBundle", - "keywords": [ - "admin", - "admin-generator", - "bundle", - "doctrine", - "orm", - "sonata", - "symfony" - ], - "support": { - "issues": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/issues", - "source": "https://github.com/sonata-project/SonataDoctrineORMAdminBundle/tree/4.9.1" - }, - "funding": [ - { - "url": "https://github.com/OskarStark", - "type": "github" - }, - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2022-12-29T19:26:26+00:00" - }, - { - "name": "sonata-project/exporter", - "version": "3.4.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/exporter.git", - "reference": "ff9f0c116d8cdf08a05ac98a6eb8fb4cd94f73d0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/exporter/zipball/ff9f0c116d8cdf08a05ac98a6eb8fb4cd94f73d0", - "reference": "ff9f0c116d8cdf08a05ac98a6eb8fb4cd94f73d0", - "shasum": "" - }, - "require": { - "php": "^8.2" - }, - "conflict": { - "doctrine/mongodb-odm": "<2.3", - "doctrine/orm": "<2.14", - "phpoffice/phpspreadsheet": "<1.23", - "symfony/config": "<5.4" - }, - "require-dev": { - "doctrine/dbal": "^3.1 || ^4.0", - "doctrine/mongodb-odm": "^2.15.1", - "doctrine/orm": "^2.14 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^6.1", - "matthiasnoback/symfony-dependency-injection-test": "dev-ci-updates as 6.1.0.1", - "phpoffice/phpspreadsheet": "^1.23", - "phpstan/extension-installer": "^1.0", - "phpstan/phpdoc-parser": "^1.0", - "phpstan/phpstan": "^1.0 || ^2.0", - "phpstan/phpstan-phpunit": "^1.0 || ^2.0", - "phpstan/phpstan-strict-rules": "^1.0 || ^2.0", - "phpstan/phpstan-symfony": "^1.0 || ^2.0", - "phpunit/phpunit": "^11.5.38 || ^12.3.10", - "rector/rector": "^1.1 || ^2.0", - "symfony/cache": "^6.4 || ^7.3 || ^8.0", - "symfony/config": "^6.4 || ^7.3 || ^8.0", - "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0", - "symfony/http-foundation": "^6.4 || ^7.3 || ^8.0", - "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0", - "symfony/property-access": "^6.4 || ^7.3 || ^8.0", - "symfony/routing": "^6.4 || ^7.3 || ^8.0" - }, - "suggest": { - "phpoffice/phpspreadsheet": "To be able to export the data in XLSX", - "symfony/property-access": "To be able to export from database entities", - "symfony/routing": "To be able to export the routes of a Symfony app" - }, - "type": "library", - "autoload": { - "psr-4": { - "Sonata\\Exporter\\": "src/", - "Sonata\\Exporter\\Bridge\\Symfony\\": "src/Bridge/Symfony/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@gmail.com", - "homepage": "https://sonata-project.org/" - } - ], - "description": "Lightweight Exporter library", - "homepage": "https://docs.sonata-project.org/projects/exporter", - "keywords": [ - "bundle", - "client", - "csv", - "data", - "export", - "symfony-bundle", - "xls", - "xlsx" - ], - "support": { - "issues": "https://github.com/sonata-project/exporter/issues", - "source": "https://github.com/sonata-project/exporter/tree/3.4.0" - }, - "funding": [ - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2025-11-23T16:46:42+00:00" - }, - { - "name": "sonata-project/form-extensions", - "version": "1.20.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/form-extensions.git", - "reference": "76e1278553e29879cfc6e9be91be119a7f4a8332" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/form-extensions/zipball/76e1278553e29879cfc6e9be91be119a7f4a8332", - "reference": "76e1278553e29879cfc6e9be91be119a7f4a8332", - "shasum": "" - }, - "require": { - "jms/metadata": "^2.1", - "jms/serializer": "^2.0 || ^3.0", - "php": "^8.0", - "sonata-project/doctrine-extensions": "^1.10.1 || ^2.0", - "symfony/event-dispatcher": "^4.4 || ^5.4 || ^6.2", - "symfony/form": "^4.4 || ^5.4 || ^6.2", - "symfony/options-resolver": "^4.4 || ^5.4 || ^6.2", - "symfony/property-access": "^4.4 || ^5.4 || ^6.2", - "symfony/security-csrf": "^4.4 || ^5.4 || ^6.2", - "symfony/translation": "^4.4 || ^5.4 || ^6.2", - "symfony/translation-contracts": "^1.1 || ^2.5 || ^3.0", - "symfony/validator": "^4.4 || ^5.4 || ^6.2", - "twig/twig": "^2.12 || ^3.0" - }, - "conflict": { - "doctrine/orm": "<2.0", - "doctrine/persistence": "<3.0.2", - "sonata-project/core-bundle": ">=3.13" - }, - "require-dev": { - "doctrine/orm": "^2.0", - "doctrine/persistence": "^3.0.2", - "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^4.2", - "matthiasnoback/symfony-dependency-injection-test": "^4.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^4.0 || ^5.0", - "rector/rector": "^0.16", - "symfony/config": "^4.4 || ^5.4 || ^6.2", - "symfony/dependency-injection": "^4.4 || ^5.4 || ^6.2", - "symfony/framework-bundle": "^4.4 || ^5.4 || ^6.2", - "symfony/http-foundation": "^4.4 || ^5.4 || ^6.2", - "symfony/http-kernel": "^4.4 || ^5.4 || ^6.2", - "symfony/phpunit-bridge": "^6.2", - "symfony/twig-bridge": "^4.4 || ^5.4 || ^6.2", - "vimeo/psalm": "^4.7.2 || ^5.8" - }, - "suggest": { - "doctrine/persistence": "If you want to use BaseDoctrineORMSerializationType" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Sonata\\Form\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/form-extensions/contributors" - } - ], - "description": "Symfony form extensions", - "homepage": "https://docs.sonata-project.org/projects/form-extensions", - "keywords": [ - "form", - "symfony" - ], - "support": { - "issues": "https://github.com/sonata-project/form-extensions/issues", - "source": "https://github.com/sonata-project/form-extensions/tree/1.20.0" - }, - "funding": [ - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2023-07-08T15:15:50+00:00" - }, - { - "name": "sonata-project/twig-extensions", - "version": "2.6.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/twig-extensions.git", - "reference": "bbc173ad144d30f87e94f544cbec4ab8de1b4b20" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/twig-extensions/zipball/bbc173ad144d30f87e94f544cbec4ab8de1b4b20", - "reference": "bbc173ad144d30f87e94f544cbec4ab8de1b4b20", - "shasum": "" - }, - "require": { - "php": "^8.2", - "symfony/config": "^6.4 || ^7.3 || ^8.0", - "symfony/twig-bridge": "^6.4 || ^7.3 || ^8.0", - "twig/twig": "^3.13" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^6.1", - "matthiasnoback/symfony-dependency-injection-test": "dev-ci-updates as 6.1.0.1", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0 || ^2.0", - "phpstan/phpstan-phpunit": "^1.0 || ^2.0", - "phpstan/phpstan-strict-rules": "^1.0 || ^2.0", - "phpstan/phpstan-symfony": "^1.0 || ^2.0", - "phpunit/phpunit": "^11.5.38 || ^12.3.10", - "rector/rector": "^1.1 || ^2.0", - "symfony/browser-kit": "^6.4 || ^7.3 || ^8.0", - "symfony/dependency-injection": "^6.4 || ^7.3 || ^8.0", - "symfony/framework-bundle": "^6.4 || ^7.3 || ^8.0", - "symfony/http-foundation": "^6.4 || ^7.3 || ^8.0", - "symfony/http-kernel": "^6.4 || ^7.3 || ^8.0", - "symfony/translation": "^6.4 || ^7.3 || ^8.0", - "symfony/twig-bundle": "^6.4 || ^7.3 || ^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Sonata\\Twig\\": "src/", - "Sonata\\Twig\\Bridge\\Symfony\\": "src/Bridge/Symfony/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/twig-extensions/contributors" - } - ], - "description": "Sonata twig extensions", - "homepage": "https://docs.sonata-project.org/projects/twig-extensions", - "keywords": [ - "sonata", - "twig", - "twig-extensions" - ], - "support": { - "issues": "https://github.com/sonata-project/twig-extensions/issues", - "source": "https://github.com/sonata-project/twig-extensions/tree/2.6.0" - }, - "funding": [ - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/greg0ire", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2025-11-23T16:41:45+00:00" - }, - { - "name": "sonata-project/user-bundle", - "version": "5.14.0", - "source": { - "type": "git", - "url": "https://github.com/sonata-project/SonataUserBundle.git", - "reference": "724564aa81194ef8ef81fecbafd81d0c1417b639" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sonata-project/SonataUserBundle/zipball/724564aa81194ef8ef81fecbafd81d0c1417b639", - "reference": "724564aa81194ef8ef81fecbafd81d0c1417b639", - "shasum": "" - }, - "require": { - "doctrine/collections": "^1.6 || ^2.0", - "doctrine/common": "^3.1", - "doctrine/persistence": "^3.0.2", - "php": "^8.0", - "sonata-project/doctrine-extensions": "^1.13 || ^2.0", - "sonata-project/form-extensions": "^1.4 || ^2.0", - "sonata-project/twig-extensions": "^1.3 || ^2.0", - "symfony/config": "^5.4 || ^6.2 || ^7.0", - "symfony/console": "^5.4 || ^6.2 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.2 || ^7.0", - "symfony/event-dispatcher": "^5.4 || ^6.2 || ^7.0", - "symfony/form": "^5.4 || ^6.2 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.2 || ^7.0", - "symfony/http-foundation": "^5.4 || ^6.2 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.2 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.2 || ^7.0", - "symfony/routing": "^5.4 || ^6.2 || ^7.0", - "symfony/security-acl": "^3.0", - "symfony/security-core": "^5.4 || ^6.2 || ^7.0", - "symfony/security-csrf": "^5.4 || ^6.2 || ^7.0", - "symfony/translation": "^5.4 || ^6.2 || ^7.0", - "symfony/translation-contracts": "^2.5 || ^3.0", - "symfony/validator": "^5.4 || ^6.2 || ^7.0", - "twig/twig": "^3.0" - }, - "conflict": { - "sonata-project/admin-bundle": "<4.20", - "sonata-project/block-bundle": "<4.11", - "sonata-project/doctrine-orm-admin-bundle": "<4.0" - }, - "require-dev": { - "dama/doctrine-test-bundle": "^8.0", - "doctrine/doctrine-bundle": "^2.7", - "doctrine/mongodb-odm": "^2.3", - "doctrine/orm": "^2.14 || ^3.0", - "egulias/email-validator": "^3.1 || ^4.0", - "friendsofphp/php-cs-fixer": "^3.4", - "matthiasnoback/symfony-config-test": "^4.2 || ^5.0", - "matthiasnoback/symfony-dependency-injection-test": "^4.0 || ^5.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", - "phpstan/phpstan-symfony": "^1.0", - "phpunit/phpunit": "^9.5", - "psalm/plugin-phpunit": "^0.18", - "psalm/plugin-symfony": "^5.0", - "rector/rector": "^1.1", - "sonata-project/admin-bundle": "^4.20", - "sonata-project/block-bundle": "^4.11 || ^5.0", - "sonata-project/doctrine-orm-admin-bundle": "^4.0", - "symfony/browser-kit": "^5.4 || ^6.2 || ^7.0", - "symfony/console": "^5.4 || ^6.2 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.2 || ^7.0", - "symfony/intl": "^5.4 || ^6.2 || ^7.0", - "symfony/mailer": "^5.4 || ^6.2 || ^7.0", - "symfony/mime": "^5.4 || ^6.2 || ^7.0", - "symfony/phpunit-bridge": "^6.2 || ^7.0", - "vimeo/psalm": "^5.0" - }, - "suggest": { - "sonata-project/admin-bundle": "For admin dashboard to manage users and other entities", - "sonata-project/doctrine-orm-admin-bundle": "For persisting entities", - "symfony/mailer": "For sending reset emails", - "symfony/mime": "For sending reset emails" - }, - "type": "symfony-bundle", - "autoload": { - "psr-4": { - "Sonata\\UserBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Thomas Rabaix", - "email": "thomas.rabaix@sonata-project.org", - "homepage": "https://sonata-project.org" - }, - { - "name": "Sonata Community", - "homepage": "https://github.com/sonata-project/SonataUserBundle/contributors" - } - ], - "description": "Symfony SonataUserBundle", - "homepage": "https://docs.sonata-project.org/projects/SonataUserBundle", - "keywords": [ - "sonata", - "user" - ], - "support": { - "issues": "https://github.com/sonata-project/SonataUserBundle/issues", - "source": "https://github.com/sonata-project/SonataUserBundle/tree/5.14.0" - }, - "funding": [ - { - "url": "https://github.com/OskarStark", - "type": "github" - }, - { - "url": "https://github.com/VincentLanglet", - "type": "github" - }, - { - "url": "https://github.com/core23", - "type": "github" - }, - { - "url": "https://github.com/jordisala1991", - "type": "github" - } - ], - "time": "2024-10-18T08:14:07+00:00" - }, { "name": "symfony/asset", "version": "v6.4.34", @@ -4838,6 +3137,84 @@ ], "time": "2025-03-13T15:25:07+00:00" }, + { + "name": "symfony/clock", + "version": "v6.4.30", + "source": { + "type": "git", + "url": "https://github.com/symfony/clock.git", + "reference": "fb2df4bc9e3037c4765ba7fd29e00167001a9b68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/clock/zipball/fb2df4bc9e3037c4765ba7fd29e00167001a9b68", + "reference": "fb2df4bc9e3037c4765ba7fd29e00167001a9b68", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" + }, + "provide": { + "psr/clock-implementation": "1.0" + }, + "type": "library", + "autoload": { + "files": [ + "Resources/now.php" + ], + "psr-4": { + "Symfony\\Component\\Clock\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Decouples applications from the system clock", + "homepage": "https://symfony.com", + "keywords": [ + "clock", + "psr20", + "time" + ], + "support": { + "source": "https://github.com/symfony/clock/tree/v6.4.30" + }, + "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-11-11T21:24:34+00:00" + }, { "name": "symfony/config", "version": "v6.4.34", @@ -4919,52 +3296,47 @@ }, { "name": "symfony/console", - "version": "v5.4.47", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed" + "reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", - "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "url": "https://api.github.com/repos/symfony/console/zipball/9f481cfb580db8bcecc9b2d4c63f3e13df022ad5", + "reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -4998,7 +3370,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.47" + "source": "https://github.com/symfony/console/tree/v6.4.36" }, "funding": [ { @@ -5009,12 +3381,16 @@ "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": "2024-11-06T11:30:55+00:00" + "time": "2026-03-27T15:30:51+00:00" }, { "name": "symfony/dependency-injection", @@ -5519,74 +3895,6 @@ ], "time": "2024-09-25T14:21:43+00:00" }, - { - "name": "symfony/expression-language", - "version": "v6.4.32", - "source": { - "type": "git", - "url": "https://github.com/symfony/expression-language.git", - "reference": "89c10ef5ca65968ec7ce7ce033c7f36eeb1b0312" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/89c10ef5ca65968ec7ce7ce033c7f36eeb1b0312", - "reference": "89c10ef5ca65968ec7ce7ce033c7f36eeb1b0312", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/cache": "^5.4|^6.0|^7.0", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\ExpressionLanguage\\": "" - }, - "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 an engine that can compile and evaluate expressions", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/expression-language/tree/v6.4.32" - }, - "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-04T11:52:13+00:00" - }, { "name": "symfony/filesystem", "version": "v6.4.34", @@ -5799,213 +4107,110 @@ "time": "2025-11-16T09:38:19+00:00" }, { - "name": "symfony/form", + "name": "symfony/framework-bundle", "version": "v6.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/form.git", - "reference": "3a38a81150400f0a486f8963e21a195311b30b27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/form/zipball/3a38a81150400f0a486f8963e21a195311b30b27", - "reference": "3a38a81150400f0a486f8963e21a195311b30b27", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/options-resolver": "^5.4|^6.0|^7.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-icu": "^1.21", - "symfony/polyfill-mbstring": "~1.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "symfony/console": "<5.4", - "symfony/dependency-injection": "<5.4", - "symfony/doctrine-bridge": "<5.4.21|>=6,<6.2.7", - "symfony/error-handler": "<5.4", - "symfony/framework-bundle": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.3" - }, - "require-dev": { - "doctrine/collections": "^1.0|^2.0", - "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/expression-language": "^5.4|^6.0|^7.0", - "symfony/html-sanitizer": "^6.1|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/security-core": "^6.2|^7.0", - "symfony/security-csrf": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/uid": "^5.4|^6.0|^7.0", - "symfony/validator": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Form\\": "" - }, - "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": "Allows to easily create, process and reuse HTML forms", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/form/tree/v6.4.36" - }, - "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-03-13T14:59:02+00:00" - }, - { - "name": "symfony/framework-bundle", - "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "3d70f14176422d4d8ee400b6acae4e21f7c25ca2" + "reference": "147b02cfa45dcc74a290462551f5ee5c7fa8ab17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/3d70f14176422d4d8ee400b6acae4e21f7c25ca2", - "reference": "3d70f14176422d4d8ee400b6acae4e21f7c25ca2", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/147b02cfa45dcc74a290462551f5ee5c7fa8ab17", + "reference": "147b02cfa45dcc74a290462551f5ee5c7fa8ab17", "shasum": "" }, "require": { + "composer-runtime-api": ">=2.1", "ext-xml": "*", - "php": ">=7.2.5", - "symfony/cache": "^5.2|^6.0", - "symfony/config": "^5.3|^6.0", - "symfony/dependency-injection": "^5.4.44|^6.0.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/error-handler": "^4.4.1|^5.0.1|^6.0", - "symfony/event-dispatcher": "^5.1|^6.0", - "symfony/filesystem": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/http-foundation": "^5.4.24|^6.2.11", - "symfony/http-kernel": "^5.4|^6.0", + "php": ">=8.1", + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4.12|^7.0", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.1|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/filesystem": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16", - "symfony/polyfill-php81": "^1.22", - "symfony/routing": "^5.3|^6.0" + "symfony/routing": "^6.4|^7.0" }, "conflict": { "doctrine/annotations": "<1.13.1", - "doctrine/cache": "<1.11", "doctrine/persistence": "<1.3", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/asset": "<5.3", - "symfony/console": "<5.2.5|>=7.0", - "symfony/dom-crawler": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/form": "<5.2", - "symfony/http-client": "<4.4", - "symfony/lock": "<4.4", - "symfony/mailer": "<5.2", - "symfony/messenger": "<5.4", - "symfony/mime": "<4.4", - "symfony/property-access": "<5.3", - "symfony/property-info": "<4.4", + "symfony/asset": "<5.4", + "symfony/asset-mapper": "<6.4", + "symfony/clock": "<6.3", + "symfony/console": "<5.4|>=7.0", + "symfony/dom-crawler": "<6.4", + "symfony/dotenv": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<6.3", + "symfony/lock": "<5.4", + "symfony/mailer": "<5.4", + "symfony/messenger": "<6.3", + "symfony/mime": "<6.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4", "symfony/runtime": "<5.4.45|>=6.0,<6.4.13|>=7.0,<7.1.6", - "symfony/security-csrf": "<5.3", - "symfony/serializer": "<5.2", - "symfony/service-contracts": ">=3.0", - "symfony/stopwatch": "<4.4", - "symfony/translation": "<5.3", - "symfony/twig-bridge": "<4.4", - "symfony/twig-bundle": "<4.4", - "symfony/validator": "<5.3.11", - "symfony/web-profiler-bundle": "<4.4", - "symfony/workflow": "<5.2" + "symfony/scheduler": "<6.4.4|>=7.0.0,<7.0.4", + "symfony/security-core": "<5.4", + "symfony/security-csrf": "<5.4", + "symfony/serializer": "<6.4", + "symfony/stopwatch": "<5.4", + "symfony/translation": "<6.4", + "symfony/twig-bridge": "<5.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4", + "symfony/web-profiler-bundle": "<6.4", + "symfony/workflow": "<6.4" }, "require-dev": { "doctrine/annotations": "^1.13.1|^2", - "doctrine/cache": "^1.11|^2.0", "doctrine/persistence": "^1.3|^2|^3", + "dragonmantank/cron-expression": "^3.1", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/asset": "^5.3|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4.9|^6.0.9", - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/dom-crawler": "^4.4.30|^5.3.7|^6.0", - "symfony/dotenv": "^5.1|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/form": "^5.2|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/mailer": "^5.2|^6.0", - "symfony/messenger": "^5.4|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/notifier": "^5.4|^6.0", + "seld/jsonlint": "^1.10", + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/asset-mapper": "^6.4|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/clock": "^6.2|^7.0", + "symfony/console": "^5.4.9|^6.0.9|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^6.4|^7.0", + "symfony/dotenv": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/html-sanitizer": "^6.1|^7.0", + "symfony/http-client": "^6.3|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/mailer": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.3|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/notifier": "^5.4|^6.0|^7.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/property-info": "^4.4|^5.0|^6.0", - "symfony/rate-limiter": "^5.2|^6.0", - "symfony/security-bundle": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/string": "^5.0|^6.0", - "symfony/translation": "^5.3|^6.0", - "symfony/twig-bundle": "^4.4|^5.0|^6.0", - "symfony/validator": "^5.3.11|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/workflow": "^5.2|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/property-info": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/scheduler": "^6.4.4|^7.0.4", + "symfony/security-bundle": "^5.4|^6.0|^7.0", + "symfony/semaphore": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/string": "^5.4|^6.0|^7.0", + "symfony/translation": "^6.4|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/workflow": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", "twig/twig": "^2.10|^3.0.4" }, - "suggest": { - "ext-apcu": "For best performance of the system caches", - "symfony/console": "For using the console commands", - "symfony/form": "For using forms", - "symfony/property-info": "For using the property_info service", - "symfony/serializer": "For using the serializer service", - "symfony/validator": "For using validation", - "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", - "symfony/yaml": "For using the debug:config and lint:yaml commands" - }, "type": "symfony-bundle", "autoload": { "psr-4": { @@ -6032,7 +4237,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/v5.4.45" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.36" }, "funding": [ { @@ -6043,12 +4248,16 @@ "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": "2024-10-22T13:05:35+00:00" + "time": "2026-03-25T17:41:29+00:00" }, { "name": "symfony/http-foundation", @@ -6251,35 +4460,39 @@ }, { "name": "symfony/mailer", - "version": "v5.4.45", + "version": "v6.4.34", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f732e1fafdf0f4a2d865e91f1018aaca174aeed9" + "reference": "01b846f48e53ee4096692a383637a1fa4d577301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f732e1fafdf0f4a2d865e91f1018aaca174aeed9", - "reference": "f732e1fafdf0f4a2d865e91f1018aaca174aeed9", + "url": "https://api.github.com/repos/symfony/mailer/zipball/01b846f48e53ee4096692a383637a1fa4d577301", + "reference": "01b846f48e53ee4096692a383637a1fa4d577301", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=7.2.5", + "php": ">=8.1", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/mime": "^5.2.6|^6.0", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3" + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/mime": "^6.2|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-kernel": "<4.4" + "symfony/http-client-contracts": "<2.5", + "symfony/http-kernel": "<5.4", + "symfony/messenger": "<6.2", + "symfony/mime": "<6.2", + "symfony/twig-bridge": "<6.2.1" }, "require-dev": { - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/messenger": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/messenger": "^6.2|^7.0", + "symfony/twig-bridge": "^6.2|^7.0" }, "type": "library", "autoload": { @@ -6307,7 +4520,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v5.4.45" + "source": "https://github.com/symfony/mailer/tree/v6.4.34" }, "funding": [ { @@ -6318,12 +4531,16 @@ "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": "2024-09-25T14:11:13+00:00" + "time": "2026-02-24T09:34:36+00:00" }, { "name": "symfony/mime", @@ -6648,58 +4865,6 @@ ], "time": "2025-11-12T13:06:53+00:00" }, - { - "name": "symfony/orm-pack", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/orm-pack.git", - "reference": "79a540bbaf8bf386ea112d35694dd4ea3911277e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/orm-pack/zipball/79a540bbaf8bf386ea112d35694dd4ea3911277e", - "reference": "79a540bbaf8bf386ea112d35694dd4ea3911277e", - "shasum": "" - }, - "require": { - "doctrine/doctrine-bundle": "*", - "doctrine/doctrine-migrations-bundle": "*", - "doctrine/orm": "*" - }, - "conflict": { - "php": "<8.1" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for the Doctrine ORM", - "support": { - "issues": "https://github.com/symfony/orm-pack/issues", - "source": "https://github.com/symfony/orm-pack/tree/v2.7.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": "2026-01-07T18:00:45+00:00" - }, { "name": "symfony/password-hasher", "version": "v6.4.32", @@ -6858,94 +5023,6 @@ ], "time": "2025-06-27T09:58:17+00:00" }, - { - "name": "symfony/polyfill-intl-icu", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", - "reference": "bfc8fa13dbaf21d69114b0efcd72ab700fb04d0c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "suggest": { - "ext-intl": "For best performance and support of other locales than \"en\"" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Icu\\": "" - }, - "classmap": [ - "Resources/stubs" - ], - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's ICU-related data and classes", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-icu/tree/v1.33.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-06-20T22:24:30+00:00" - }, { "name": "symfony/polyfill-intl-idn", "version": "v1.33.0", @@ -7287,86 +5364,6 @@ ], "time": "2025-01-02T08:10:11+00:00" }, - { - "name": "symfony/polyfill-php81", - "version": "v1.33.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "shasum": "" - }, - "require": { - "php": ">=7.2" - }, - "type": "library", - "extra": { - "thanks": { - "url": "https://github.com/symfony/polyfill", - "name": "symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.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": "2024-09-09T11:45:10+00:00" - }, { "name": "symfony/polyfill-php83", "version": "v1.33.0", @@ -7610,37 +5607,37 @@ }, { "name": "symfony/property-info", - "version": "v7.4.8", + "version": "v6.4.34", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175" + "reference": "916455e4c9dcddbebfd101f29d7983841c3564e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/ac5e82528b986c4f7cfccbf7764b5d2e824d6175", - "reference": "ac5e82528b986c4f7cfccbf7764b5d2e824d6175", + "url": "https://api.github.com/repos/symfony/property-info/zipball/916455e4c9dcddbebfd101f29d7983841c3564e0", + "reference": "916455e4c9dcddbebfd101f29d7983841c3564e0", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "^7.4.7|^8.0.7" + "php": ">=8.1", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2|>=7", + "doctrine/annotations": "<1.12", + "phpdocumentor/reflection-docblock": "<5.2|>=6", "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/serializer": "<6.4" + "symfony/cache": "<5.4", + "symfony/dependency-injection": "<5.4|>=6.0,<6.4", + "symfony/serializer": "<5.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^5.2|^6.0", + "doctrine/annotations": "^1.12|^2", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0" + "symfony/cache": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/serializer": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -7676,7 +5673,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.8" + "source": "https://github.com/symfony/property-info/tree/v6.4.34" }, "funding": [ { @@ -7696,7 +5693,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-02-13T09:42:46+00:00" }, { "name": "symfony/routing", @@ -7785,147 +5782,73 @@ ], "time": "2026-02-24T17:34:50+00:00" }, - { - "name": "symfony/security-acl", - "version": "v3.4.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/security-acl.git", - "reference": "4baa5372d2c77f1003dc0fca09d16d3650f10c4a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/security-acl/zipball/4baa5372d2c77f1003dc0fca09d16d3650f10c4a", - "reference": "4baa5372d2c77f1003dc0fca09d16d3650f10c4a", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/security-core": "^4.4|^5.0|^6.0|^7.0|^8.0" - }, - "conflict": { - "doctrine/cache": "<1.11", - "doctrine/dbal": "<2.13.1|~3.0.0" - }, - "require-dev": { - "doctrine/cache": "^1.11|^2.0", - "doctrine/common": "^2.2|^3", - "doctrine/dbal": "^2.13.1|^3.1", - "doctrine/persistence": "^1.3.3|^2|^3", - "psr/log": "^1|^2|^3", - "symfony/cache": "^4.4|^5.0|^6.0|^7.0|^8.0", - "symfony/finder": "^4.4|^5.0|^6.0|^7.0|^8.0", - "symfony/phpunit-bridge": "^5.2|^6.0|^7.0|^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Security\\Acl\\": "" - }, - "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": "Symfony Security Component - ACL (Access Control List)", - "homepage": "https://symfony.com", - "support": { - "issues": "https://github.com/symfony/security-acl/issues", - "source": "https://github.com/symfony/security-acl/tree/v3.4.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-05T12:03:05+00:00" - }, { "name": "symfony/security-bundle", - "version": "v6.1.12", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "5c790f769c0cdfeebc237573b929ce6c121eb657" + "reference": "00ce7236da125b39a24784958861678f7d09ce4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/5c790f769c0cdfeebc237573b929ce6c121eb657", - "reference": "5c790f769c0cdfeebc237573b929ce6c121eb657", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/00ce7236da125b39a24784958861678f7d09ce4c", + "reference": "00ce7236da125b39a24784958861678f7d09ce4c", "shasum": "" }, "require": { "composer-runtime-api": ">=2.1", "ext-xml": "*", "php": ">=8.1", - "symfony/config": "^5.4|^6.0", - "symfony/dependency-injection": "^5.4|^6.0", - "symfony/event-dispatcher": "^5.4|^6.0", - "symfony/http-foundation": "^5.4|^6.0", - "symfony/http-kernel": "^5.4|^6.0", - "symfony/password-hasher": "^5.4|^6.0", - "symfony/security-core": "^5.4|^6.0", - "symfony/security-csrf": "^5.4|^6.0", - "symfony/security-http": "^5.4.20|~6.0.20|~6.1.12|^6.2.6" + "symfony/clock": "^6.3|^7.0", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.4.11|^7.1.4", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.2|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/password-hasher": "^5.4|^6.0|^7.0", + "symfony/security-core": "^6.2|^7.0", + "symfony/security-csrf": "^5.4|^6.0|^7.0", + "symfony/security-http": "^6.3.6|^7.0", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { "symfony/browser-kit": "<5.4", "symfony/console": "<5.4", - "symfony/framework-bundle": "<5.4", + "symfony/framework-bundle": "<6.4", + "symfony/http-client": "<5.4", "symfony/ldap": "<5.4", - "symfony/twig-bundle": "<5.4" + "symfony/serializer": "<6.4", + "symfony/twig-bundle": "<5.4", + "symfony/validator": "<6.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "symfony/asset": "^5.4|^6.0", - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/dom-crawler": "^5.4|^6.0", - "symfony/expression-language": "^5.4|^6.0", - "symfony/form": "^5.4|^6.0", - "symfony/framework-bundle": "^5.4|^6.0", - "symfony/ldap": "^5.4|^6.0", - "symfony/process": "^5.4|^6.0", - "symfony/rate-limiter": "^5.4|^6.0", - "symfony/serializer": "^5.4|^6.0", - "symfony/translation": "^5.4|^6.0", - "symfony/twig-bridge": "^5.4|^6.0", - "symfony/twig-bundle": "^5.4|^6.0", - "symfony/validator": "^5.4|^6.0", - "symfony/yaml": "^5.4|^6.0", - "twig/twig": "^2.13|^3.0.4" + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/dom-crawler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/ldap": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/twig-bridge": "^5.4|^6.0|^7.0", + "symfony/twig-bundle": "^5.4|^6.0|^7.0", + "symfony/validator": "^6.4|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4", + "web-token/jwt-checker": "^3.1", + "web-token/jwt-signature-algorithm-ecdsa": "^3.1", + "web-token/jwt-signature-algorithm-eddsa": "^3.1", + "web-token/jwt-signature-algorithm-hmac": "^3.1", + "web-token/jwt-signature-algorithm-none": "^3.1", + "web-token/jwt-signature-algorithm-rsa": "^3.1" }, "type": "symfony-bundle", "autoload": { @@ -7953,7 +5876,7 @@ "description": "Provides a tight integration of the Security component into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/security-bundle/tree/v6.1.12" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.36" }, "funding": [ { @@ -7964,12 +5887,16 @@ "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": "2023-01-30T15:43:30+00:00" + "time": "2026-03-30T13:20:55+00:00" }, { "name": "symfony/security-core", @@ -8329,29 +6256,26 @@ }, { "name": "symfony/service-contracts", - "version": "v2.5.4", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f37b419f7aea2e9abf10abd261832cace12e3300" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300", - "reference": "f37b419f7aea2e9abf10abd261832cace12e3300", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, - "suggest": { - "symfony/service-implementation": "" - }, "type": "library", "extra": { "thanks": { @@ -8359,13 +6283,16 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - } + }, + "exclude-from-classmap": [ + "/Test/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -8392,7 +6319,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.4" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -8403,30 +6330,34 @@ "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": "2024-09-25T14:11:13+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.45", + "version": "v6.4.24", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004" + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb2c199cf302eb207f8c23e7ee174c1c31a5c004", - "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/b67e94e06a05d9572c2fa354483b3e13e3cb1898", + "reference": "b67e94e06a05d9572c2fa354483b3e13e3cb1898", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/service-contracts": "^1|^2|^3" + "php": ">=8.1", + "symfony/service-contracts": "^2.5|^3" }, "type": "library", "autoload": { @@ -8454,7 +6385,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.45" + "source": "https://github.com/symfony/stopwatch/tree/v6.4.24" }, "funding": [ { @@ -8465,12 +6396,16 @@ "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": "2024-09-25T14:11:13+00:00" + "time": "2025-07-10T08:14:14+00:00" }, { "name": "symfony/string", @@ -8857,49 +6792,43 @@ }, { "name": "symfony/twig-bundle", - "version": "v5.4.45", + "version": "v6.4.32", "source": { "type": "git", "url": "https://github.com/symfony/twig-bundle.git", - "reference": "e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9" + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9", - "reference": "e1ca56e1dc7791eb19f0aff71d3d94e6a91cc8f9", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", + "reference": "a5c8dcc11a5bf9c96320da20070d2e158a4e0b30", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/http-foundation": "^4.4|^5.0|^6.0", - "symfony/http-kernel": "^5.0|^6.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/twig-bridge": "^5.3|^6.0", + "composer-runtime-api": ">=2.1", + "php": ">=8.1", + "symfony/config": "^6.1|^7.0", + "symfony/dependency-injection": "^6.1|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^6.2", + "symfony/twig-bridge": "^6.4", "twig/twig": "^2.13|^3.0.4" }, "conflict": { - "symfony/dependency-injection": "<5.3", - "symfony/framework-bundle": "<5.0", - "symfony/service-contracts": ">=3.0", - "symfony/translation": "<5.0" + "symfony/framework-bundle": "<5.4", + "symfony/translation": "<5.4" }, "require-dev": { - "doctrine/annotations": "^1.10.4|^2", - "doctrine/cache": "^1.0|^2.0", - "symfony/asset": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^5.3|^6.0", - "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/finder": "^4.4|^5.0|^6.0", - "symfony/form": "^4.4|^5.0|^6.0", - "symfony/framework-bundle": "^5.0|^6.0", - "symfony/routing": "^4.4|^5.0|^6.0", - "symfony/stopwatch": "^4.4|^5.0|^6.0", - "symfony/translation": "^5.0|^6.0", - "symfony/web-link": "^4.4|^5.0|^6.0", - "symfony/yaml": "^4.4|^5.0|^6.0" + "symfony/asset": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/finder": "^5.4|^6.0|^7.0", + "symfony/form": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^5.4|^6.0|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/translation": "^5.4|^6.0|^7.0", + "symfony/web-link": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -8927,85 +6856,7 @@ "description": "Provides a tight integration of Twig into the Symfony full-stack framework", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bundle/tree/v5.4.45" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:11:13+00:00" - }, - { - "name": "symfony/type-info", - "version": "v8.0.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/type-info.git", - "reference": "622d81551770029d44d16be68969712eb47892f1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/622d81551770029d44d16be68969712eb47892f1", - "reference": "622d81551770029d44d16be68969712eb47892f1", - "shasum": "" - }, - "require": { - "php": ">=8.4", - "psr/container": "^1.1|^2.0" - }, - "conflict": { - "phpstan/phpdoc-parser": "<1.30" - }, - "require-dev": { - "phpstan/phpdoc-parser": "^1.30|^2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\TypeInfo\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mathias Arlaud", - "email": "mathias.arlaud@gmail.com" - }, - { - "name": "Baptiste LEDUC", - "email": "baptiste.leduc@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Extracts PHP types information.", - "homepage": "https://symfony.com", - "keywords": [ - "PHPStan", - "phpdoc", - "symfony", - "type" - ], - "support": { - "source": "https://github.com/symfony/type-info/tree/v8.0.8" + "source": "https://github.com/symfony/twig-bundle/tree/v6.4.32" }, "funding": [ { @@ -9025,108 +6876,7 @@ "type": "tidelift" } ], - "time": "2026-03-30T15:14:47+00:00" - }, - { - "name": "symfony/validator", - "version": "v6.4.36", - "source": { - "type": "git", - "url": "https://github.com/symfony/validator.git", - "reference": "14921e87b2bd69dfbd9757cdb1c6974a1316aac5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/14921e87b2bd69dfbd9757cdb1c6974a1316aac5", - "reference": "14921e87b2bd69dfbd9757cdb1c6974a1316aac5", - "shasum": "" - }, - "require": { - "php": ">=8.1", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php83": "^1.27", - "symfony/translation-contracts": "^2.5|^3" - }, - "conflict": { - "doctrine/annotations": "<1.13", - "doctrine/lexer": "<1.1", - "symfony/dependency-injection": "<5.4", - "symfony/expression-language": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/intl": "<5.4", - "symfony/property-info": "<5.4", - "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3|>=7.0,<7.0.3", - "symfony/yaml": "<5.4" - }, - "require-dev": { - "doctrine/annotations": "^1.13|^2", - "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^5.4|^6.0|^7.0", - "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/expression-language": "^5.4|^6.0|^7.0", - "symfony/finder": "^5.4|^6.0|^7.0", - "symfony/http-client": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/intl": "^5.4|^6.0|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/property-access": "^5.4|^6.0|^7.0", - "symfony/property-info": "^5.4|^6.0|^7.0", - "symfony/translation": "^5.4.35|~6.3.12|^6.4.3|^7.0.3", - "symfony/yaml": "^5.4|^6.0|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Validator\\": "" - }, - "exclude-from-classmap": [ - "/Tests/", - "/Resources/bin/" - ] - }, - "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 tools to validate values", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.36" - }, - "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-03-26T15:58:46+00:00" + "time": "2026-01-05T12:44:39+00:00" }, { "name": "symfony/var-dumper", @@ -9218,26 +6968,26 @@ }, { "name": "symfony/var-exporter", - "version": "v7.4.8", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225" + "reference": "f9c4a9695a9e2bbc65c920e147d8d7ae28f8d79a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/398907e89a2a56fe426f7955c6fa943ec0c77225", - "reference": "398907e89a2a56fe426f7955c6fa943ec0c77225", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f9c4a9695a9e2bbc65c920e147d8d7ae28f8d79a", + "reference": "f9c4a9695a9e2bbc65c920e147d8d7ae28f8d79a", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.1", "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -9275,7 +7025,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.4.8" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.36" }, "funding": [ { @@ -9295,7 +7045,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-03-10T15:06:19+00:00" }, { "name": "symfony/webpack-encore-bundle", @@ -9372,31 +7122,28 @@ }, { "name": "symfony/yaml", - "version": "v5.4.45", + "version": "v6.4.34", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a454d47278cc16a5db371fe73ae66a78a633371e" + "reference": "7bca30dabed7900a08c5ad4f1d6483f881a64d0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e", - "reference": "a454d47278cc16a5db371fe73ae66a78a633371e", + "url": "https://api.github.com/repos/symfony/yaml/zipball/7bca30dabed7900a08c5ad4f1d6483f881a64d0f", + "reference": "7bca30dabed7900a08c5ad4f1d6483f881a64d0f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<5.3" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, "bin": [ "Resources/bin/yaml-lint" @@ -9427,7 +7174,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.45" + "source": "https://github.com/symfony/yaml/tree/v6.4.34" }, "funding": [ { @@ -9438,79 +7185,16 @@ "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": "2024-09-25T14:11:13+00:00" - }, - { - "name": "twig/string-extra", - "version": "v3.24.0", - "source": { - "type": "git", - "url": "https://github.com/twigphp/string-extra.git", - "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/twigphp/string-extra/zipball/6ec8f2e8ca9b2193221a02cb599dc92c36384368", - "reference": "6ec8f2e8ca9b2193221a02cb599dc92c36384368", - "shasum": "" - }, - "require": { - "php": ">=8.1.0", - "symfony/string": "^5.4|^6.4|^7.0|^8.0", - "symfony/translation-contracts": "^1.1|^2|^3", - "twig/twig": "^3.13|^4.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^6.4|^7.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Twig\\Extra\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com", - "homepage": "http://fabien.potencier.org", - "role": "Lead Developer" - } - ], - "description": "A Twig extension for Symfony String", - "homepage": "https://twig.symfony.com", - "keywords": [ - "html", - "string", - "twig", - "unicode" - ], - "support": { - "source": "https://github.com/twigphp/string-extra/tree/v3.24.0" - }, - "funding": [ - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/twig/twig", - "type": "tidelift" - } - ], - "time": "2025-12-02T14:45:16+00:00" + "time": "2026-02-06T18:32:11+00:00" }, { "name": "twig/twig", @@ -9596,30 +7280,37 @@ "packages-dev": [ { "name": "nikic/php-parser", - "version": "v4.19.5", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", - "reference": "51bd93cc741b7fc3d63d20b6bdcd99fdaa359837", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { "psr-4": { "PhpParser\\": "lib/PhpParser" @@ -9641,9 +7332,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.5" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-12-06T11:45:25+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "roave/security-advisories", @@ -10696,25 +8387,28 @@ }, { "name": "symfony/dotenv", - "version": "v5.4.48", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "08013403089c8a126c968179179b817a552841ab" + "reference": "cae019cc92a46fe9e498ea011107f26bdf5d897f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/08013403089c8a126c968179179b817a552841ab", - "reference": "08013403089c8a126c968179179b817a552841ab", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/cae019cc92a46fe9e498ea011107f26bdf5d897f", + "reference": "cae019cc92a46fe9e498ea011107f26bdf5d897f", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3" + "php": ">=8.1" + }, + "conflict": { + "symfony/console": "<5.4", + "symfony/process": "<5.4" }, "require-dev": { - "symfony/console": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -10747,7 +8441,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v5.4.48" + "source": "https://github.com/symfony/dotenv/tree/v6.4.36" }, "funding": [ { @@ -10758,61 +8452,66 @@ "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": "2024-11-27T09:33:00+00:00" + "time": "2026-03-30T07:25:04+00:00" }, { "name": "symfony/maker-bundle", - "version": "v1.50.0", + "version": "v1.67.0", "source": { "type": "git", "url": "https://github.com/symfony/maker-bundle.git", - "reference": "a1733f849b999460c308e66f6392fb09b621fa86" + "reference": "6ce8b313845f16bcf385ee3cb31d8b24e30d5516" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/a1733f849b999460c308e66f6392fb09b621fa86", - "reference": "a1733f849b999460c308e66f6392fb09b621fa86", + "url": "https://api.github.com/repos/symfony/maker-bundle/zipball/6ce8b313845f16bcf385ee3cb31d8b24e30d5516", + "reference": "6ce8b313845f16bcf385ee3cb31d8b24e30d5516", "shasum": "" }, "require": { + "composer-runtime-api": "^2.1", "doctrine/inflector": "^2.0", - "nikic/php-parser": "^4.11", - "php": ">=8.0", - "symfony/config": "^5.4.7|^6.0", - "symfony/console": "^5.4.7|^6.0", - "symfony/dependency-injection": "^5.4.7|^6.0", + "nikic/php-parser": "^5.0", + "php": ">=8.1", + "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/deprecation-contracts": "^2.2|^3", - "symfony/filesystem": "^5.4.7|^6.0", - "symfony/finder": "^5.4.3|^6.0", - "symfony/framework-bundle": "^5.4.7|^6.0", - "symfony/http-kernel": "^5.4.7|^6.0", - "symfony/process": "^5.4.7|^6.0" + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/finder": "^6.4|^7.0|^8.0", + "symfony/framework-bundle": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/process": "^6.4|^7.0|^8.0" }, "conflict": { - "doctrine/doctrine-bundle": "<2.4", - "doctrine/orm": "<2.10", - "symfony/doctrine-bridge": "<5.4" + "doctrine/doctrine-bundle": "<2.10", + "doctrine/orm": "<2.15" }, "require-dev": { "composer/semver": "^3.0", - "doctrine/doctrine-bundle": "^2.4", - "doctrine/orm": "^2.10.0", - "symfony/http-client": "^5.4.7|^6.0", - "symfony/phpunit-bridge": "^5.4.17|^6.0", - "symfony/polyfill-php80": "^1.16.0", - "symfony/security-core": "^5.4.7|^6.0", - "symfony/yaml": "^5.4.3|^6.0", - "twig/twig": "^2.0|^3.0" + "doctrine/doctrine-bundle": "^2.10|^3.0", + "doctrine/orm": "^2.15|^3", + "doctrine/persistence": "^3.1|^4.0", + "symfony/http-client": "^6.4|^7.0|^8.0", + "symfony/phpunit-bridge": "^6.4.1|^7.0|^8.0", + "symfony/security-core": "^6.4|^7.0|^8.0", + "symfony/security-http": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0", + "twig/twig": "^3.0|^4.x-dev" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-main": "1.0-dev" + "dev-main": "1.x-dev" } }, "autoload": { @@ -10841,7 +8540,7 @@ ], "support": { "issues": "https://github.com/symfony/maker-bundle/issues", - "source": "https://github.com/symfony/maker-bundle/tree/v1.50.0" + "source": "https://github.com/symfony/maker-bundle/tree/v1.67.0" }, "funding": [ { @@ -10852,12 +8551,16 @@ "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": "2023-07-10T18:21:57+00:00" + "time": "2026-03-18T13:39:06+00:00" }, { "name": "symfony/process", @@ -10924,87 +8627,40 @@ ], "time": "2026-01-23T16:02:12+00:00" }, - { - "name": "symfony/profiler-pack", - "version": "v1.0.6", - "source": { - "type": "git", - "url": "https://github.com/symfony/profiler-pack.git", - "reference": "bcd6e80af9819454ac18594362e7875fd1d771c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/profiler-pack/zipball/bcd6e80af9819454ac18594362e7875fd1d771c7", - "reference": "bcd6e80af9819454ac18594362e7875fd1d771c7", - "shasum": "" - }, - "require": { - "symfony/stopwatch": "*", - "symfony/web-profiler-bundle": "*" - }, - "require-dev": { - "symfony/stopwatch": "*", - "symfony/web-profiler-bundle": "*" - }, - "type": "symfony-pack", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "A pack for the Symfony web profiler", - "support": { - "issues": "https://github.com/symfony/profiler-pack/issues", - "source": "https://github.com/symfony/profiler-pack/tree/v1.0.6" - }, - "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": "2021-08-20T17:27:58+00:00" - }, { "name": "symfony/web-profiler-bundle", - "version": "v6.3.12", + "version": "v6.4.36", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "920efdd0f53f088b44963cf89368038ee39719b9" + "reference": "6f75b4c748886c8e04a3674225d00eaa51f3842d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/920efdd0f53f088b44963cf89368038ee39719b9", - "reference": "920efdd0f53f088b44963cf89368038ee39719b9", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/6f75b4c748886c8e04a3674225d00eaa51f3842d", + "reference": "6f75b4c748886c8e04a3674225d00eaa51f3842d", "shasum": "" }, "require": { "php": ">=8.1", - "symfony/config": "^5.4|^6.0", - "symfony/framework-bundle": "^5.4|^6.0,<6.4", - "symfony/http-kernel": "^6.3", - "symfony/routing": "^5.4|^6.0", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/framework-bundle": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/routing": "^5.4|^6.0|^7.0", "symfony/twig-bundle": "^5.4|^6.0", "twig/twig": "^2.13|^3.0.4" }, "conflict": { "symfony/form": "<5.4", "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4" + "symfony/messenger": "<5.4", + "symfony/twig-bundle": ">=7.0" }, "require-dev": { - "symfony/browser-kit": "^5.4|^6.0", - "symfony/console": "^5.4|^6.0", - "symfony/css-selector": "^5.4|^6.0", - "symfony/stopwatch": "^5.4|^6.0" + "symfony/browser-kit": "^5.4|^6.0|^7.0", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0" }, "type": "symfony-bundle", "autoload": { @@ -11035,7 +8691,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.3.12" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.36" }, "funding": [ { @@ -11046,12 +8702,16 @@ "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": "2024-01-23T16:21:43+00:00" + "time": "2026-03-17T09:05:06+00:00" } ], "aliases": [], diff --git a/config/bundles.php b/config/bundles.php index d5ccd50..fff3113 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -8,19 +8,8 @@ return [ Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true], Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true], Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true], - Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true], - Sonata\Doctrine\Bridge\Symfony\SonataDoctrineBundle::class => ['all' => true], - Sonata\Exporter\Bridge\Symfony\SonataExporterBundle::class => ['all' => true], - Sonata\Form\Bridge\Symfony\Bundle\SonataFormBundle::class => ['all' => true], - Sonata\Twig\Bridge\Symfony\SonataTwigBundle::class => ['all' => true], - Sonata\BlockBundle\SonataBlockBundle::class => ['all' => true], - Sonata\AdminBundle\SonataAdminBundle::class => ['all' => true], - Sonata\UserBundle\SonataUserBundle::class => ['all' => true], - App\Application\Sonata\UserBundle\ApplicationSonataUserBundle::class => ['all' => true], - Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle::class => ['all' => true], Gos\Bundle\PubSubRouterBundle\GosPubSubRouterBundle::class => ['all' => true], Gos\Bundle\WebSocketBundle\GosWebSocketBundle::class => ['all' => true], Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true], Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], - Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], ]; diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index 34c1686..6fb8de9 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -16,8 +16,7 @@ doctrine: collate: utf8mb4_unicode_ci url: '%env(resolve:DATABASE_URL)%' - types: - json: Sonata\Doctrine\Types\JsonType + orm: auto_generate_proxy_classes: '%kernel.debug%' naming_strategy: doctrine.orm.naming_strategy.underscore @@ -25,9 +24,7 @@ doctrine: mappings: App: is_bundle: false - type: annotation + type: attribute dir: '%kernel.project_dir%/src/Entity' prefix: 'App\Entity' alias: App - SonataUserBundle: ~ - ApplicationSonataUserBundle: ~ diff --git a/config/packages/prod/doctrine.yaml b/config/packages/prod/doctrine.yaml index 2f16f0f..ce160d2 100644 --- a/config/packages/prod/doctrine.yaml +++ b/config/packages/prod/doctrine.yaml @@ -1,26 +1,14 @@ doctrine: orm: metadata_cache_driver: - type: service - id: doctrine.system_cache_provider + type: pool + pool: doctrine.system_cache_pool query_cache_driver: - type: service - id: doctrine.system_cache_provider + type: pool + pool: doctrine.system_cache_pool result_cache_driver: - type: service - id: doctrine.result_cache_provider - -services: - doctrine.result_cache_provider: - class: Symfony\Component\Cache\DoctrineProvider - public: false - arguments: - - '@doctrine.result_cache_pool' - doctrine.system_cache_provider: - class: Symfony\Component\Cache\DoctrineProvider - public: false - arguments: - - '@doctrine.system_cache_pool' + type: pool + pool: doctrine.result_cache_pool framework: cache: @@ -28,4 +16,4 @@ framework: doctrine.result_cache_pool: adapter: cache.app doctrine.system_cache_pool: - adapter: cache.system + adapter: cache.system \ No newline at end of file diff --git a/config/packages/security.yaml b/config/packages/security.yaml index 4c1e455..bc59e61 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -1,7 +1,10 @@ security: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers providers: - in_memory: { memory: ~ } + app_user_provider: + entity: + class: App\Entity\User + property: username firewalls: dev: pattern: ^/(_(profiler|wdt)|css|images|js)/ diff --git a/config/packages/sensio_framework_extra.yaml b/config/packages/sensio_framework_extra.yaml deleted file mode 100644 index 1821ccc..0000000 --- a/config/packages/sensio_framework_extra.yaml +++ /dev/null @@ -1,3 +0,0 @@ -sensio_framework_extra: - router: - annotations: false diff --git a/config/packages/sonata_admin.yaml b/config/packages/sonata_admin.yaml deleted file mode 100644 index 28f4f34..0000000 --- a/config/packages/sonata_admin.yaml +++ /dev/null @@ -1,10 +0,0 @@ -sonata_admin: - title: 'Sonata Admin' - dashboard: - blocks: - - { type: sonata.admin.block.admin_list, position: left } - -sonata_block: - blocks: - sonata.admin.block.admin_list: - contexts: [admin] diff --git a/config/packages/sonata_user.yaml b/config/packages/sonata_user.yaml deleted file mode 100644 index 61864fd..0000000 --- a/config/packages/sonata_user.yaml +++ /dev/null @@ -1,3 +0,0 @@ -sonata_user: - class: - user: App\Application\Sonata\UserBundle\Entity\User diff --git a/config/routes/security.yaml b/config/routes/security.yaml new file mode 100644 index 0000000..f853be1 --- /dev/null +++ b/config/routes/security.yaml @@ -0,0 +1,3 @@ +_security_logout: + resource: security.route_loader.logout + type: service diff --git a/config/routes/sonata_admin.yaml b/config/routes/sonata_admin.yaml deleted file mode 100644 index c009e3b..0000000 --- a/config/routes/sonata_admin.yaml +++ /dev/null @@ -1,8 +0,0 @@ -admin_area: - resource: "@SonataAdminBundle/Resources/config/routing/sonata_admin.xml" - prefix: /admin - -_sonata_admin: - resource: . - type: sonata_admin - prefix: /admin diff --git a/config/routes/sonata_user.yaml b/config/routes/sonata_user.yaml deleted file mode 100644 index 56d26d4..0000000 --- a/config/routes/sonata_user.yaml +++ /dev/null @@ -1,7 +0,0 @@ -sonata_user_admin_security: - resource: '@SonataUserBundle/Resources/config/routing/admin_security.xml' - prefix: /admin - -sonata_user_admin_resetting: - resource: '@SonataUserBundle/Resources/config/routing/admin_resetting.xml' - prefix: /admin/resetting diff --git a/config/services.yaml b/config/services.yaml index 5b57a80..b53c5c8 100644 --- a/config/services.yaml +++ b/config/services.yaml @@ -1,54 +1,65 @@ # Put parameters here that don't need to change on each machine where the app is deployed # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration parameters: - locale: 'en' - jotunheimr.version: 1.1.0-20191026 - facebook.api: 320599508311862 - facebook.api-secret: 18d4f48cdd274bccee2678e5eff3f557 - facebook.version: 'v2.8' - facebook.scope: 'public_profile,email,user_friends' - mineseeker.websocket: 6450 + locale: 'en' + jotunheimr.version: 1.1.0-20191026 + facebook.api: 320599508311862 + facebook.api-secret: 18d4f48cdd274bccee2678e5eff3f557 + facebook.version: 'v2.8' + facebook.scope: 'public_profile,email,user_friends' + mineseeker.websocket: 6450 services: - # default configuration for services in *this* file - _defaults: - autowire: true # Automatically injects dependencies in your services. - autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. - public: false # Allows optimizing the container by removing unused services; this also means - # fetching services directly from the container via $container->get() won't work. - # The best practice is to be explicit about your dependencies anyway. + # default configuration for services in *this* file + _defaults: + autowire: true # Automatically injects dependencies in your services. + autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. + public: false # Allows optimizing the container by removing unused services; this also means + # fetching services directly from the container via $container->get() won't work. + # The best practice is to be explicit about your dependencies anyway. - # makes classes in src/ available to be used as services - # this creates a service per class whose id is the fully-qualified class name - App\: - resource: '../src/*' - exclude: '../src/{Entity,Migrations,Tests,Kernel.php,Periodic}' + # makes classes in src/ available to be used as services + # this creates a service per class whose id is the fully-qualified class name + App\: + resource: '../src/*' + exclude: '../src/{Command/WebsocketServerCommand.php,Entity,Migrations,Tests,Kernel.php,Periodic}' - # controllers are imported separately to make sure services can be injected - # as action arguments even if you don't extend any base controller class - App\Controller\: - resource: '../src/Controller' - tags: ['controller.service_arguments'] + # controllers are imported separately to make sure services can be injected + # as action arguments even if you don't extend any base controller class + App\Controller\: + resource: '../src/Controller' + tags: [ 'controller.service_arguments' ] - # add more service definitions when explicit configuration is needed - # please note that last definitions always *replace* previous ones + # add more service definitions when explicit configuration is needed + # please note that last definitions always *replace* previous ones - mineseeker.topic_sample_service: - class: App\Topic\MineseekerTopic - tags: - - { name: gos_web_socket.topic } + mineseeker.topic_sample_service: + class: App\Topic\MineseekerTopic + tags: + - { name: gos_web_socket.topic } - mineseeker.rpc_sample_service: - class: App\Rpc\MineseekerRpc - public: true - tags: - - { name: gos_web_socket.rpc } + mineseeker.rpc_sample_service: + class: App\Rpc\MineseekerRpc + public: true + tags: + - { name: gos_web_socket.rpc } - gos_web_socket_server.client_event.listener: - class: App\EventListener\MineseekerClientEventListener - tags: - - { name: kernel.event_listener, event: 'gos_web_socket.client_connected', method: onClientConnect } - - { name: kernel.event_listener, event: 'gos_web_socket.client_disconnected', method: onClientDisconnect } - - { name: kernel.event_listener, event: 'gos_web_socket.client_error', method: onClientError } - - { name: kernel.event_listener, event: 'gos_web_socket.server_launched', method: onServerStart } - - { name: kernel.event_listener, event: 'gos_web_socket.client_rejected', method: onClientRejected } + # Override gos WebsocketServerCommand to avoid --profile conflict with Symfony 6.4 global option + gos_web_socket.command.websocket_server: + class: App\Command\WebsocketServerCommand + arguments: + - '@gos_web_socket.server.launcher' + - '%gos_web_socket.server.host%' + - '%gos_web_socket.server.port%' + - '@gos_web_socket.registry.server' + tags: + - { name: console.command, command: 'gos:websocket:server' } + + gos_web_socket_server.client_event.listener: + class: App\EventListener\MineseekerClientEventListener + tags: + - { name: kernel.event_listener, event: 'gos_web_socket.client_connected', method: onClientConnect } + - { name: kernel.event_listener, event: 'gos_web_socket.client_disconnected', method: onClientDisconnect } + - { name: kernel.event_listener, event: 'gos_web_socket.client_error', method: onClientError } + - { name: kernel.event_listener, event: 'gos_web_socket.server_launched', method: onServerStart } + - { name: kernel.event_listener, event: 'gos_web_socket.client_rejected', method: onClientRejected } diff --git a/src/.htaccess b/src/.htaccess deleted file mode 100644 index fb1de45..0000000 --- a/src/.htaccess +++ /dev/null @@ -1,7 +0,0 @@ - - Require all denied - - - Order deny,allow - Deny from all - diff --git a/src/Admin/.gitignore b/src/Admin/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Application/Sonata/UserBundle/ApplicationSonataUserBundle.php b/src/Application/Sonata/UserBundle/ApplicationSonataUserBundle.php deleted file mode 100644 index aa0e689..0000000 --- a/src/Application/Sonata/UserBundle/ApplicationSonataUserBundle.php +++ /dev/null @@ -1,24 +0,0 @@ -id; - } -} \ No newline at end of file diff --git a/src/Application/Sonata/UserBundle/Entity/User.php b/src/Application/Sonata/UserBundle/Entity/User.php deleted file mode 100644 index 6ff6768..0000000 --- a/src/Application/Sonata/UserBundle/Entity/User.php +++ /dev/null @@ -1,31 +0,0 @@ -id; - } -} diff --git a/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.mongodb.xml b/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.mongodb.xml deleted file mode 100644 index 1cc5a3d..0000000 --- a/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.mongodb.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - \ No newline at end of file diff --git a/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml b/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml deleted file mode 100644 index 8858959..0000000 --- a/src/Application/Sonata/UserBundle/Resources/config/doctrine/User.orm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - diff --git a/src/Application/Sonata/UserBundle/Resources/config/serializer/Document.User.xml b/src/Application/Sonata/UserBundle/Resources/config/serializer/Document.User.xml deleted file mode 100644 index 9d19b0a..0000000 --- a/src/Application/Sonata/UserBundle/Resources/config/serializer/Document.User.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/Application/Sonata/UserBundle/Resources/config/serializer/Entity.User.xml b/src/Application/Sonata/UserBundle/Resources/config/serializer/Entity.User.xml deleted file mode 100644 index 1a749d0..0000000 --- a/src/Application/Sonata/UserBundle/Resources/config/serializer/Entity.User.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/src/Command/WebsocketServerCommand.php b/src/Command/WebsocketServerCommand.php new file mode 100644 index 0000000..fef104c --- /dev/null +++ b/src/Command/WebsocketServerCommand.php @@ -0,0 +1,79 @@ +addArgument('name', InputArgument::OPTIONAL, 'Name of the server to start, launches the first registered server if not specified') + ->addOption('ws-profile', 'm', InputOption::VALUE_NONE, 'Enable profiling of the websocket server') + ->addOption('host', 'a', InputOption::VALUE_OPTIONAL, 'The hostname of the websocket server') + ->addOption('port', 'p', InputOption::VALUE_OPTIONAL, 'The port of the websocket server'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + /** @var string $name */ + $name = $input->getArgument('name'); + + /** @var string $host */ + $host = null === $input->getOption('host') ? $this->host : $input->getOption('host'); + + /** @var int|string $port */ + $port = null === $input->getOption('port') ? $this->port : $input->getOption('port'); + + if (!is_numeric($port)) { + throw new InvalidArgumentException('The port option must be a numeric value.'); + } + + /** @var bool $profile */ + $profile = (bool) $input->getOption('ws-profile'); + + $this->serverLauncher->launch($name, $host, (int) $port, $profile); + + return 0; + } + + public function complete(CompletionInput $input, CompletionSuggestions $suggestions): void + { + if ($input->mustSuggestArgumentValuesFor('name') && null !== $this->serverRegistry) { + $suggestions->suggestValues(array_keys($this->serverRegistry->getServers())); + } + } +} \ No newline at end of file diff --git a/src/Controller/.gitignore b/src/Controller/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Controller/GameController.php b/src/Controller/GameController.php index d0e829a..12b3d19 100644 --- a/src/Controller/GameController.php +++ b/src/Controller/GameController.php @@ -1,4 +1,4 @@ - + * @package App\Controller + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class GameController extends AbstractController { public function __construct( #[Autowire(env: 'APP_ENV')] - private readonly string $env, + private readonly string $env, + private readonly RequestStack $request, ) { } - /** - * It is the homepage - * - * @return Response - */ public function index(): Response { return $this->render('Game/index.html.twig'); } - /** - * It is the game itself - * - * @param Request $request - * - * @return Response - */ - public function play(Request $request): Response + public function play(): Response { - return $this->render('Game/play.html.twig', array( + return $this->render('Game/play.html.twig', [ 'env' => $this->env, - 'ssl' => $request->isSecure() ? 'true' : 'false', - )); + 'ssl' => $this->request->getCurrentRequest()->isSecure() ? 'true' : 'false', + ]); } - /** - * It is the Privacy & Policy - * - * @return Response - */ public function privacy(): Response { return $this->render('Official/privacy.html.twig'); } - /** - * It is the Terms of Use - * - * @return Response - */ public function terms(): Response { return $this->render('Official/terms.html.twig'); } - /** - * It is the contact informations - * - * @return Response - */ public function contact(): Response { return $this->render('Official/contact.html.twig'); } - /** - * It is a landing page - * - * @return Response - */ public function landing(): Response { return $this->render('Official/landing.html.twig'); diff --git a/src/Doctrine/FixPostgreMigrationDefaultSchemaListener.php b/src/Doctrine/FixPostgreMigrationDefaultSchemaListener.php new file mode 100644 index 0000000..f251c3c --- /dev/null +++ b/src/Doctrine/FixPostgreMigrationDefaultSchemaListener.php @@ -0,0 +1,63 @@ + + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2023. 02. 28. + * + * @see https://github.com/doctrine/dbal/issues/1110 + * There is a recent bug when you create new migration, it creates a new schema even if there is no any + * changes. + */ +#[AsDoctrineListener(event: ToolEvents::postGenerateSchema, priority: 500, connection: 'default')] +final class FixPostgreMigrationDefaultSchemaListener +{ + public function postGenerateSchema(GenerateSchemaEventArgs $args): void + { + try { + $schemaManager = $args + ->getEntityManager() + ->getConnection() + ->createSchemaManager(); + + if (!$schemaManager instanceof PostgreSqlSchemaManager) { + return; + } + + $schema = $args->getSchema(); + + foreach ($schemaManager->getExistingSchemaSearchPaths() as $namespace) { + if ($schema->hasNamespace($namespace)) { + continue; + } + + $schema->createNamespace($namespace); + } + } catch (SchemaException|Exception $e) { + throw new RuntimeException($e->getMessage()); + } + } +} diff --git a/src/Entity/.gitignore b/src/Entity/.gitignore deleted file mode 100644 index e69de29..0000000 diff --git a/src/Entity/Gamer.php b/src/Entity/Gamer.php index 418bb79..d2865ea 100644 --- a/src/Entity/Gamer.php +++ b/src/Entity/Gamer.php @@ -1,4 +1,4 @@ - - * - * @ORM\Entity(repositoryClass="App\Repository\GamerRepository") + * @package App\Entity + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ +#[Entity(repositoryClass: GamerRepository::class)] class Gamer { - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - private $id; + #[Id, GeneratedValue, Column] + private ?int $id = null; - /** - * @var string|null - * - * @ORM\Column(name="user_name", type="string", length=100, nullable=false) - */ - private $userName; + #[Column(length: 100)] + private ?string $userName = null; - /** - * @var string|null - * - * @ORM\Column(name="ip", type="string", length=20, nullable=true) - */ - private $ip; + #[Column(length: 20, nullable: true)] + private ?string $ip = null; - /** - * TODO - * $ip='0.0.0.0'; - * $ip=$_SERVER['REMOTE_ADDR']; - * $clientDetails = json_decode(file_get_contents("http://ipinfo.io/$ip/json")); - * echo "You're logged in from: " . $clientDetails->country . ""; - * - * function GetIP() - * { - * if ( getenv("HTTP_CLIENT_IP") ) { - * $ip = getenv("HTTP_CLIENT_IP"); - * } elseif ( getenv("HTTP_X_FORWARDED_FOR") ) { - * $ip = getenv("HTTP_X_FORWARDED_FOR"); - * if ( strstr($ip, ',') ) { - * $tmp = explode(',', $ip); - * $ip = trim($tmp[0]); - * } - * } else { - * $ip = getenv("REMOTE_ADDR"); - * } - * return $ip; - * } - */ + #[Column(length: 100, nullable: true)] + private ?string $country = null; - /** - * @var string - * - * @ORM\Column(name="country", type="string", length=100, nullable=true) - */ - private $country; + #[Column(nullable: true)] + private ?string $userAgent = null; - /** - * @var string - * @see http://symfony.com/doc/current/components/http_foundation.html - * - * @ORM\Column(name="user_agent", type="string", length=255, nullable=true) - */ - private $userAgent; + #[Column(type: Types::DATETIME_MUTABLE)] + private ?DateTime $connTimestamp = null; - /** - * @var \DateTime - * - * @ORM\Column(name="conn_timestamp", type="datetime", nullable=false) - */ - private $connTimestamp; public function getId(): ?int { return $this->id; } - /** - * @return string|null - */ public function getUserName(): ?string { return $this->userName; } - /** - * @param string|null $userName - */ public function setUserName(?string $userName): void { $this->userName = $userName; } - /** - * @return string|null - */ public function getIp(): ?string { return $this->ip; } - /** - * @param string|null $ip - */ public function setIp(?string $ip): void { $this->ip = $ip; } - /** - * @return string - */ - public function getCountry(): string + public function getCountry(): ?string { return $this->country; } - /** - * @param string $country - */ - public function setCountry(string $country): void + public function setCountry(?string $country): void { $this->country = $country; } - /** - * @return string - */ - public function getUserAgent(): string + public function getUserAgent(): ?string { return $this->userAgent; } - /** - * @param string $userAgent - */ - public function setUserAgent(string $userAgent): void + public function setUserAgent(?string $userAgent): void { $this->userAgent = $userAgent; } - /** - * @return \DateTime - */ - public function getConnTimestamp(): \DateTime + public function getConnTimestamp(): ?DateTime { return $this->connTimestamp; } - /** - * @param \DateTime $connTimestamp - */ - public function setConnTimestamp(\DateTime $connTimestamp): void + public function setConnTimestamp(?DateTime $connTimestamp): void { $this->connTimestamp = $connTimestamp; } diff --git a/src/Entity/Grid.php b/src/Entity/Grid.php index 31aa330..5a328fc 100644 --- a/src/Entity/Grid.php +++ b/src/Entity/Grid.php @@ -1,8 +1,8 @@ - - * - * @ORM\Entity(repositoryClass="App\Repository\GridRepository") + * @package App\Entity + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ +#[Entity(repositoryClass: GridRepository::class)] class Grid { - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - private $id; + #[Id, GeneratedValue, Column] + private ?int $id = null; - /** - * @var PlayedGame|null - * - * @ORM\OneToOne(targetEntity="App\Entity\PlayedGame", inversedBy="grid", cascade={"persist"}) - */ - private $playedGame; + #[OneToOne(inversedBy: 'grid', cascade: ['persist'])] + private ?PlayedGame $playedGame = null; - /** - * @var GridRow|null - * - * @ORM\OneToMany(targetEntity="App\Entity\GridRow", mappedBy="grid", cascade={"persist"}) - * @ORM\JoinColumn(name="grid_row", referencedColumnName="id", onDelete="CASCADE") - */ - private $gridRow; + #[OneToMany(mappedBy: 'grid', targetEntity: GridRow::class, cascade: ['persist'])] + #[JoinColumn(name: 'grid_row', referencedColumnName: 'id', onDelete: 'CASCADE')] + private Collection $gridRow; + + + public function __construct() + { + $this->gridRow = new ArrayCollection(); + } public function getId(): ?int { return $this->id; } - /** - * @return PlayedGame|null - */ - public function getPlayedGame() + public function getPlayedGame(): ?PlayedGame { return $this->playedGame; } - /** - * @param PlayedGame|null $playedGame - */ - public function setPlayedGame( $playedGame): void + public function setPlayedGame(?PlayedGame $playedGame): void { $this->playedGame = $playedGame; } - /** - * @return GridRow|null - */ - public function getGridRow() + public function getGridRow(): Collection { return $this->gridRow; } - /** - * @param GridRow|null $gridRow - */ - public function setGridRow( $gridRow): void + public function addGridRow(GridRow $gridRow): void { - $this->gridRow = $gridRow; + $this->gridRow->add($gridRow); + $gridRow->setGrid($this); + } + + public function removeGridRow(GridRow $gridRow): void + { + $this->gridRow->removeElement($gridRow); } } diff --git a/src/Entity/GridRow.php b/src/Entity/GridRow.php index 638040a..008131d 100644 --- a/src/Entity/GridRow.php +++ b/src/Entity/GridRow.php @@ -1,8 +1,8 @@ - - * - * @ORM\Entity(repositoryClass="App\Repository\GridRowRepository") + * @package App\Entity + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ +#[Entity(repositoryClass: GridRowRepository::class)] class GridRow { - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - private $id; + #[Id, GeneratedValue, Column] + private ?int $id = null; - /** - * @var Grid|null - * - * @ORM\ManyToOne(targetEntity="App\Entity\Grid", inversedBy="gridRow", cascade={"persist"}) - * @ORM\JoinColumn(name="grid", referencedColumnName="id", onDelete="CASCADE") - */ - private $grid; + #[ManyToOne(cascade: ['persist'], inversedBy: 'gridRow')] + #[JoinColumn(name: 'grid', referencedColumnName: 'id', onDelete: 'CASCADE')] + private ?Grid $grid = null; + + #[Column(name: 'grid_col', type: Types::JSON, nullable: false)] + private ?array $gridCol = null; - /** - * @var array|null - * - * @ORM\Column(name="grid_col", type="json_array", nullable=false) - */ - private $gridCol; public function getId(): ?int { return $this->id; } - /** - * @return Grid|null - */ - public function getGrid() + public function getGrid(): ?Grid { return $this->grid; } - /** - * @param Grid|null $grid - */ - public function setGrid( $grid): void + public function setGrid(?Grid $grid): void { $this->grid = $grid; } - /** - * @return array|null - */ - public function getGridCol() + public function getGridCol(): ?array { return $this->gridCol; } - /** - * @param array|null $gridCol - */ - public function setGridCol($gridCol): void + public function setGridCol(?array $gridCol): void { $this->gridCol = $gridCol; } diff --git a/src/Entity/PlayedGame.php b/src/Entity/PlayedGame.php index 7a289e9..48174b4 100644 --- a/src/Entity/PlayedGame.php +++ b/src/Entity/PlayedGame.php @@ -1,8 +1,8 @@ - - * - * @ORM\Entity(repositoryClass="App\Repository\PlayedGameRepository") + * @package App\Entity + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ +#[Entity(repositoryClass: PlayedGameRepository::class)] class PlayedGame { - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - private $id; + #[Id, GeneratedValue, Column] + private ?int $id = null; - /** - * @var string|null - * - * @ORM\Column(name="game_assoc", type="string", length=50, nullable=false) - */ - private $gameAssoc; + #[Column(length: 50)] + private ?string $gameAssoc = null; - /** - * @var Grid|null - * - * @ORM\OneToOne(targetEntity="App\Entity\Grid", mappedBy="playedGame", cascade={"persist"}) - */ - private $grid; + #[Column(length: 5, nullable: true)] + private ?int $redPoints = null; - /** - * @var User|null - * - * @ORM\ManyToOne(targetEntity="App\Application\Sonata\UserBundle\Entity\User") - * @ORM\JoinColumn(name="red_id", referencedColumnName="id", nullable=true) - */ - private $red; + #[Column(length: 5, nullable: true)] + private ?int $bluePoints = null; - /** - * @var Gamer|null - * - * @ORM\ManyToOne(targetEntity="App\Entity\Gamer") - * @ORM\JoinColumn(name="red_anon", referencedColumnName="id", nullable=true) - */ - private $redAnon; + #[Column(nullable: true)] + private ?bool $redExplodedBomb = null; - /** - * @var User|null - * - * @ORM\ManyToOne(targetEntity="App\Application\Sonata\UserBundle\Entity\User") - * @ORM\JoinColumn(name="blue_id", referencedColumnName="id", nullable=true) - */ - private $blue; + #[Column(nullable: true)] + private ?bool $blueExplodedBomb = null; - /** - * @var Gamer|null - * - * @ORM\ManyToOne(targetEntity="App\Entity\Gamer") - * @ORM\JoinColumn(name="blue_anon", referencedColumnName="id", nullable=true) - */ - private $blueAnon; + #[Column(length: 7, nullable: true)] + private ?string $resign = null; - /** - * @var int|null - * - * @ORM\Column(name="red_points", type="integer", length=5, nullable=true) - */ - private $redPoints; + #[Column(type: Types::DATETIME_MUTABLE, nullable: true)] + private ?DateTime $created = null; - /** - * @var int|null - * - * @ORM\Column(name="blue_points", type="integer", length=5, nullable=true) - */ - private $bluePoints; + #[Column(type: Types::DATETIME_MUTABLE, nullable: true)] + private ?DateTime $updated = null; - /** - * @var boolean|null - * - * @ORM\Column(name="red_exploded_bomb", type="boolean", nullable=true) - */ - private $redExplodedBomb; + #[OneToOne(mappedBy: 'playedGame', cascade: ['persist'])] + private ?Grid $grid = null; - /** - * @var boolean|null - * - * @ORM\Column(name="blue_exploded_bomb", type="boolean", nullable=true) - */ - private $blueExplodedBomb; + #[ManyToOne] + #[JoinColumn(name: 'red_id', referencedColumnName: 'id', nullable: true)] + private ?User $red = null; - /** - * @var string|null - * - * @ORM\Column(name="resign", type="string", length=7, nullable=true) - */ - private $resign; + #[ManyToOne] + #[JoinColumn(name: 'red_anon', referencedColumnName: 'id', nullable: true)] + private ?Gamer $redAnon = null; - /** - * @var \DateTime|null - * - * @ORM\Column(name="created", type="datetime", nullable=true) - */ - private $created; + #[ManyToOne] + #[JoinColumn(name: 'blue_id', referencedColumnName: 'id', nullable: true)] + private ?User $blue = null; - /** - * @var \DateTime|null - * - * @ORM\Column(name="updated", type="datetime", nullable=true) - */ - private $updated; + #[ManyToOne] + #[JoinColumn(name: 'blue_anon', referencedColumnName: 'id', nullable: true)] + private ?Gamer $blueAnon = null; + + #[OneToOne(mappedBy: 'playedGame')] + private ?Step $step = null; - /** - * @var Step|null - * - * @ORM\OneToMany(targetEntity="App\Entity\Step", mappedBy="playedGame") - * @ORM\JoinColumn(name="step", referencedColumnName="id", nullable=true) - */ - private $step; public function getId(): ?int { return $this->id; } - /** - * @return string|null - */ + public function setId(?int $id): self + { + $this->id = $id; + return $this; + } + public function getGameAssoc(): ?string { return $this->gameAssoc; } - /** - * @param string|null $gameAssoc - */ - public function setGameAssoc(?string $gameAssoc): void + public function setGameAssoc(?string $gameAssoc): self { $this->gameAssoc = $gameAssoc; + return $this; } - /** - * @return Grid|null - */ - public function getGrid() - { - return $this->grid; - } - - /** - * @param Grid|null $grid - */ - public function setGrid( $grid): void - { - $this->grid = $grid; - } - - /** - * @return User|null - */ - public function getRed() - { - return $this->red; - } - - /** - * @param User|null $red - */ - public function setRed( $red): void - { - $this->red = $red; - } - - /** - * @return Gamer|null - */ - public function getRedAnon() - { - return $this->redAnon; - } - - /** - * @param Gamer|null $redAnon - */ - public function setRedAnon( $redAnon): void - { - $this->redAnon = $redAnon; - } - - /** - * @return User|null - */ - public function getBlue() - { - return $this->blue; - } - - /** - * @param User|null $blue - */ - public function setBlue( $blue): void - { - $this->blue = $blue; - } - - /** - * @return Gamer|null - */ - public function getBlueAnon() - { - return $this->blueAnon; - } - - /** - * @param Gamer|null $blueAnon - */ - public function setBlueAnon( $blueAnon): void - { - $this->blueAnon = $blueAnon; - } - - /** - * @return int|null - */ public function getRedPoints(): ?int { return $this->redPoints; } - /** - * @param int|null $redPoints - */ - public function setRedPoints(?int $redPoints): void + public function setRedPoints(?int $redPoints): self { $this->redPoints = $redPoints; + return $this; } - /** - * @return int|null - */ public function getBluePoints(): ?int { return $this->bluePoints; } - /** - * @param int|null $bluePoints - */ - public function setBluePoints(?int $bluePoints): void + public function setBluePoints(?int $bluePoints): self { $this->bluePoints = $bluePoints; + return $this; } - /** - * @return bool|null - */ public function getRedExplodedBomb(): ?bool { return $this->redExplodedBomb; } - /** - * @param bool|null $redExplodedBomb - */ - public function setRedExplodedBomb(?bool $redExplodedBomb): void + public function setRedExplodedBomb(?bool $redExplodedBomb): self { $this->redExplodedBomb = $redExplodedBomb; + return $this; } - /** - * @return bool|null - */ public function getBlueExplodedBomb(): ?bool { return $this->blueExplodedBomb; } - /** - * @param bool|null $blueExplodedBomb - */ - public function setBlueExplodedBomb(?bool $blueExplodedBomb): void + public function setBlueExplodedBomb(?bool $blueExplodedBomb): self { $this->blueExplodedBomb = $blueExplodedBomb; + return $this; } - /** - * @return string|null - */ public function getResign(): ?string { return $this->resign; } - /** - * @param string|null $resign - */ - public function setResign(?string $resign): void + public function setResign(?string $resign): self { $this->resign = $resign; + return $this; } - /** - * @return \DateTime|null - */ - public function getCreated(): ?\DateTime + public function getCreated(): ?DateTime { return $this->created; } - /** - * @param \DateTime|null $created - */ - public function setCreated(?\DateTime $created): void + public function setCreated(?DateTime $created): self { $this->created = $created; + return $this; } - /** - * @return \DateTime|null - */ - public function getUpdated(): ?\DateTime + public function getUpdated(): ?DateTime { return $this->updated; } - /** - * @param \DateTime|null $updated - */ - public function setUpdated(?\DateTime $updated): void + public function setUpdated(?DateTime $updated): self { $this->updated = $updated; + return $this; } - /** - * @return Step|null - */ - public function getStep() + public function getGrid(): ?Grid + { + return $this->grid; + } + + public function setGrid(?Grid $grid): self + { + $this->grid = $grid; + return $this; + } + + public function getRed(): ?User + { + return $this->red; + } + + public function setRed(?User $red): self + { + $this->red = $red; + return $this; + } + + public function getRedAnon(): ?Gamer + { + return $this->redAnon; + } + + public function setRedAnon(?Gamer $redAnon): self + { + $this->redAnon = $redAnon; + return $this; + } + + public function getBlue(): ?User + { + return $this->blue; + } + + public function setBlue(?User $blue): self + { + $this->blue = $blue; + return $this; + } + + public function getBlueAnon(): ?Gamer + { + return $this->blueAnon; + } + + public function setBlueAnon(?Gamer $blueAnon): self + { + $this->blueAnon = $blueAnon; + return $this; + } + + public function getStep(): ?Step { return $this->step; } - /** - * @param Step|null $step - */ - public function setStep( $step): void + public function setStep(?Step $step): self { $this->step = $step; + return $this; } } diff --git a/src/Entity/Step.php b/src/Entity/Step.php index 59b2c80..82e554a 100644 --- a/src/Entity/Step.php +++ b/src/Entity/Step.php @@ -1,8 +1,8 @@ - - * - * @ORM\Entity(repositoryClass="App\Repository\StepRepository") + * @package App\Entity + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ +#[Entity(repositoryClass: StepRepository::class)] class Step { - /** - * @ORM\Id() - * @ORM\GeneratedValue() - * @ORM\Column(type="integer") - */ - private $id; + #[Id, GeneratedValue, Column] + private ?int $id = null; - /** - * @var int|null - * - * @ORM\Column(name="row", length=3, type="integer", nullable=false) - */ - private $row; + #[Column(length: 3)] + private ?int $row = null; - /** - * @var int|null - * - * @ORM\Column(name="col", length=3, type="integer", nullable=false) - */ - private $col; + #[Column(length: 3)] + private ?int $col = null; - /** - * @var boolean|null - * - * @ORM\Column(name="wbomb", type="boolean", nullable=true) - */ - private $wBomb; + #[Column(nullable: true)] + private ?bool $wBomb = null; - /** - * @var PlayedGame|null - * - * @ORM\ManyToOne(targetEntity="App\Entity\PlayedGame", inversedBy="step") - */ - private $playedGame; + #[ManyToOne(inversedBy: 'step')] + private ?PlayedGame $playedGame = null; + + #[Column(type: Types::DATETIME_MUTABLE, nullable: true)] + private ?DateTime $created = null; - /** - * @var \DateTime|null - * - * @ORM\Column(name="created", type="datetime", nullable=true) - */ - private $created; public function getId(): ?int { return $this->id; } - /** - * @return int|null - */ public function getRow(): ?int { return $this->row; } - /** - * @param int|null $row - */ public function setRow(?int $row): void { $this->row = $row; } - /** - * @return int|null - */ public function getCol(): ?int { return $this->col; } - /** - * @param int|null $col - */ public function setCol(?int $col): void { $this->col = $col; } - /** - * @return bool|null - */ public function getWBomb(): ?bool { return $this->wBomb; } - /** - * @param bool|null $wBomb - */ public function setWBomb(?bool $wBomb): void { $this->wBomb = $wBomb; } - /** - * @return PlayedGame|null - */ public function getPlayedGame(): ?PlayedGame { return $this->playedGame; } - /** - * @param PlayedGame|null $playedGame - */ public function setPlayedGame(?PlayedGame $playedGame): void { $this->playedGame = $playedGame; } - /** - * @return \DateTime|null - */ - public function getCreated(): ?\DateTime + public function getCreated(): ?DateTime { return $this->created; } - /** - * @param \DateTime|null $created - */ - public function setCreated(?\DateTime $created): void + public function setCreated(?DateTime $created): void { $this->created = $created; } diff --git a/src/Entity/User.php b/src/Entity/User.php new file mode 100644 index 0000000..89ec171 --- /dev/null +++ b/src/Entity/User.php @@ -0,0 +1,95 @@ + + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. + */ +#[Entity(repositoryClass: UserRepository::class)] +class User implements UserInterface, PasswordAuthenticatedUserInterface +{ + #[Id, GeneratedValue, Column] + private ?int $id = null; + + #[Column(length: 180, unique: true)] + private ?string $username = null; + + #[Column] + private array $roles = []; + + #[Column(nullable: true)] + private ?string $password = null; + + + public function getId(): ?int + { + return $this->id; + } + + public function getUsername(): ?string + { + return $this->username; + } + + public function setUsername(string $username): self + { + $this->username = $username; + return $this; + } + + public function getUserIdentifier(): string + { + return (string) $this->username; + } + + public function getRoles(): array + { + $roles = $this->roles; + $roles[] = 'ROLE_USER'; + return array_unique($roles); + } + + public function setRoles(array $roles): self + { + $this->roles = $roles; + return $this; + } + + public function getPassword(): ?string + { + return $this->password; + } + + public function setPassword(?string $password): self + { + $this->password = $password; + return $this; + } + + public function eraseCredentials(): void + { + } +} diff --git a/src/EventListener/MineseekerClientEventListener.php b/src/EventListener/MineseekerClientEventListener.php index ba929e8..722487a 100644 --- a/src/EventListener/MineseekerClientEventListener.php +++ b/src/EventListener/MineseekerClientEventListener.php @@ -1,4 +1,4 @@ - + * @package App\EventListener + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class MineseekerClientEventListener { public function onClientConnect(ClientConnectedEvent $event): void { $conn = $event->getConnection(); - echo $conn->resourceId . ' connected' . PHP_EOL; } public function onClientDisconnect(ClientDisconnectedEvent $event): void { $conn = $event->getConnection(); - echo $conn->resourceId . ' disconnected' . PHP_EOL; } @@ -42,7 +44,6 @@ class MineseekerClientEventListener { $conn = $event->getConnection(); $e = $event->getException(); - echo 'connection error occurred: ' . $e->getMessage() . PHP_EOL; } @@ -54,7 +55,6 @@ class MineseekerClientEventListener public function onClientRejected(ClientRejectedEvent $event): void { $origin = $event->getOrigin(); - echo 'connection rejected from ' . $origin . PHP_EOL; } -} \ No newline at end of file +} diff --git a/src/Util/Interfaces/RpcManagerInterface.php b/src/Interfaces/RpcManagerInterface.php similarity index 57% rename from src/Util/Interfaces/RpcManagerInterface.php rename to src/Interfaces/RpcManagerInterface.php index 7ecea4b..1a47b17 100644 --- a/src/Util/Interfaces/RpcManagerInterface.php +++ b/src/Interfaces/RpcManagerInterface.php @@ -1,4 +1,4 @@ - + * @category Interface + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ interface RpcManagerInterface { - /** - * Gets all connect informations - * - * @param $params - * - * @return string - */ public function getConnectInformation($params): string; - /** - * It saves the whole grid table to database - * - * @param $data - * - * @return boolean - */ public function saveGrid($data): bool; } diff --git a/src/Util/Interfaces/TopicManagerInterface.php b/src/Interfaces/TopicManagerInterface.php similarity index 51% rename from src/Util/Interfaces/TopicManagerInterface.php rename to src/Interfaces/TopicManagerInterface.php index 79525d6..2b68264 100644 --- a/src/Util/Interfaces/TopicManagerInterface.php +++ b/src/Interfaces/TopicManagerInterface.php @@ -1,4 +1,4 @@ - + * @category Interface + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ interface TopicManagerInterface { - /** - * It handles the subscribe to a topic - * - * @param Topic $topic - * @param ConnectionInterface $connection - */ public function subscribe(Topic $topic, ConnectionInterface $connection): void; - /** - * It handles the unsibscribe from the topic - * - * @param Topic $topic - * @param ConnectionInterface $connection - */ public function unSubscribe(Topic $topic, ConnectionInterface $connection): void; - /** - * It publishes events on the topic - * - * @param Topic $topic - * @param ConnectionInterface $connection - * @param $event - */ public function publish(Topic $topic, ConnectionInterface $connection, $event): void; } diff --git a/src/Util/Interfaces/WebsocketManagerInterface.php b/src/Interfaces/WebsocketManagerInterface.php similarity index 55% rename from src/Util/Interfaces/WebsocketManagerInterface.php rename to src/Interfaces/WebsocketManagerInterface.php index ba46f41..d965b7c 100644 --- a/src/Util/Interfaces/WebsocketManagerInterface.php +++ b/src/Interfaces/WebsocketManagerInterface.php @@ -1,4 +1,4 @@ - + * @category Interface + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ interface WebsocketManagerInterface { - /** - * Handle prod MySQL timeout - * - * @param EntityManagerInterface $entityManager - * - * @return EntityManagerInterface|null - */ public function reConnect(EntityManagerInterface $entityManager): ?EntityManagerInterface; } diff --git a/src/Kernel.php b/src/Kernel.php index 5fd1f31..41e50d6 100644 --- a/src/Kernel.php +++ b/src/Kernel.php @@ -1,4 +1,4 @@ -getProjectDir().'/var/log'; } -} \ No newline at end of file +} diff --git a/src/Migrations/2026/04/Version20260409081936.php b/src/Migrations/2026/04/Version20260409175831.php similarity index 64% rename from src/Migrations/2026/04/Version20260409081936.php rename to src/Migrations/2026/04/Version20260409175831.php index 7ad78fa..5603c99 100644 --- a/src/Migrations/2026/04/Version20260409081936.php +++ b/src/Migrations/2026/04/Version20260409175831.php @@ -1,6 +1,12 @@ - + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ -final class Version20260409081936 extends AbstractMigration +final class Version20260409175831 extends AbstractMigration { - public function getDescription() : string + public function getDescription(): string { - return ''; + return 'Initialize the database for 2026'; } - public function up(Schema $schema) : void + public function up(Schema $schema): void { - // this up() migration is auto-generated, please modify it to your needs - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); - - $this->addSql('CREATE SEQUENCE fos_user_user_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE gamer_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE grid_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE grid_row_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE played_game_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE SEQUENCE step_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); - $this->addSql('CREATE TABLE fos_user_user (id INT NOT NULL, username VARCHAR(180) NOT NULL, username_canonical VARCHAR(180) NOT NULL, email VARCHAR(180) NOT NULL, email_canonical VARCHAR(180) NOT NULL, enabled BOOLEAN NOT NULL, salt VARCHAR(255) DEFAULT NULL, password VARCHAR(255) NOT NULL, last_login TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, confirmation_token VARCHAR(180) DEFAULT NULL, password_requested_at TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, roles TEXT NOT NULL, created_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, updated_at TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_C560D76192FC23A8 ON fos_user_user (username_canonical)'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_C560D761A0D96FBF ON fos_user_user (email_canonical)'); - $this->addSql('CREATE UNIQUE INDEX UNIQ_C560D761C05FB297 ON fos_user_user (confirmation_token)'); - $this->addSql('COMMENT ON COLUMN fos_user_user.roles IS \'(DC2Type:array)\''); + $this->addSql('CREATE SEQUENCE user_id_seq INCREMENT BY 1 MINVALUE 1 START 1'); $this->addSql('CREATE TABLE gamer (id INT NOT NULL, user_name VARCHAR(100) NOT NULL, ip VARCHAR(20) DEFAULT NULL, country VARCHAR(100) DEFAULT NULL, user_agent VARCHAR(255) DEFAULT NULL, conn_timestamp TIMESTAMP(0) WITHOUT TIME ZONE NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE TABLE grid (id INT NOT NULL, played_game_id INT DEFAULT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE UNIQUE INDEX UNIQ_2E20D9375AA11DBB ON grid (played_game_id)'); $this->addSql('CREATE TABLE grid_row (id INT NOT NULL, grid INT DEFAULT NULL, grid_col JSON NOT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE INDEX IDX_6FAD08EB2E20D937 ON grid_row (grid)'); - $this->addSql('COMMENT ON COLUMN grid_row.grid_col IS \'(DC2Type:json_array)\''); $this->addSql('CREATE TABLE played_game (id INT NOT NULL, red_id INT DEFAULT NULL, red_anon INT DEFAULT NULL, blue_id INT DEFAULT NULL, blue_anon INT DEFAULT NULL, game_assoc VARCHAR(50) NOT NULL, red_points INT DEFAULT NULL, blue_points INT DEFAULT NULL, red_exploded_bomb BOOLEAN DEFAULT NULL, blue_exploded_bomb BOOLEAN DEFAULT NULL, resign VARCHAR(7) DEFAULT NULL, created TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, updated TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE INDEX IDX_54BE80398BBE8922 ON played_game (red_id)'); $this->addSql('CREATE INDEX IDX_54BE8039F24372EB ON played_game (red_anon)'); $this->addSql('CREATE INDEX IDX_54BE80395AB9393F ON played_game (blue_id)'); $this->addSql('CREATE INDEX IDX_54BE8039C64E7C7C ON played_game (blue_anon)'); - $this->addSql('CREATE TABLE step (id INT NOT NULL, played_game_id INT DEFAULT NULL, row INT NOT NULL, col INT NOT NULL, wbomb BOOLEAN DEFAULT NULL, created TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE TABLE step (id INT NOT NULL, played_game_id INT DEFAULT NULL, row INT NOT NULL, col INT NOT NULL, w_bomb BOOLEAN DEFAULT NULL, created TIMESTAMP(0) WITHOUT TIME ZONE DEFAULT NULL, PRIMARY KEY(id))'); $this->addSql('CREATE INDEX IDX_43B9FE3C5AA11DBB ON step (played_game_id)'); + $this->addSql('CREATE TABLE "user" (id INT NOT NULL, username VARCHAR(180) NOT NULL, roles JSON NOT NULL, password VARCHAR(255) DEFAULT NULL, PRIMARY KEY(id))'); + $this->addSql('CREATE UNIQUE INDEX UNIQ_8D93D649F85E0677 ON "user" (username)'); $this->addSql('ALTER TABLE grid ADD CONSTRAINT FK_2E20D9375AA11DBB FOREIGN KEY (played_game_id) REFERENCES played_game (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE grid_row ADD CONSTRAINT FK_6FAD08EB2E20D937 FOREIGN KEY (grid) REFERENCES grid (id) ON DELETE CASCADE NOT DEFERRABLE INITIALLY IMMEDIATE'); - $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE80398BBE8922 FOREIGN KEY (red_id) REFERENCES fos_user_user (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE80398BBE8922 FOREIGN KEY (red_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE8039F24372EB FOREIGN KEY (red_anon) REFERENCES gamer (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); - $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE80395AB9393F FOREIGN KEY (blue_id) REFERENCES fos_user_user (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); + $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE80395AB9393F FOREIGN KEY (blue_id) REFERENCES "user" (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE played_game ADD CONSTRAINT FK_54BE8039C64E7C7C FOREIGN KEY (blue_anon) REFERENCES gamer (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); $this->addSql('ALTER TABLE step ADD CONSTRAINT FK_43B9FE3C5AA11DBB FOREIGN KEY (played_game_id) REFERENCES played_game (id) NOT DEFERRABLE INITIALLY IMMEDIATE'); } - public function down(Schema $schema) : void + public function down(Schema $schema): void { - // this down() migration is auto-generated, please modify it to your needs - $this->abortIf($this->connection->getDatabasePlatform()->getName() !== 'postgresql', 'Migration can only be executed safely on \'postgresql\'.'); - - $this->addSql('CREATE SCHEMA public'); - $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE80398BBE8922'); - $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE80395AB9393F'); - $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE8039F24372EB'); - $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE8039C64E7C7C'); - $this->addSql('ALTER TABLE grid_row DROP CONSTRAINT FK_6FAD08EB2E20D937'); - $this->addSql('ALTER TABLE grid DROP CONSTRAINT FK_2E20D9375AA11DBB'); - $this->addSql('ALTER TABLE step DROP CONSTRAINT FK_43B9FE3C5AA11DBB'); - $this->addSql('DROP SEQUENCE fos_user_user_id_seq CASCADE'); $this->addSql('DROP SEQUENCE gamer_id_seq CASCADE'); $this->addSql('DROP SEQUENCE grid_id_seq CASCADE'); $this->addSql('DROP SEQUENCE grid_row_id_seq CASCADE'); $this->addSql('DROP SEQUENCE played_game_id_seq CASCADE'); $this->addSql('DROP SEQUENCE step_id_seq CASCADE'); - $this->addSql('DROP TABLE fos_user_user'); + $this->addSql('DROP SEQUENCE user_id_seq CASCADE'); + $this->addSql('ALTER TABLE grid DROP CONSTRAINT FK_2E20D9375AA11DBB'); + $this->addSql('ALTER TABLE grid_row DROP CONSTRAINT FK_6FAD08EB2E20D937'); + $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE80398BBE8922'); + $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE8039F24372EB'); + $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE80395AB9393F'); + $this->addSql('ALTER TABLE played_game DROP CONSTRAINT FK_54BE8039C64E7C7C'); + $this->addSql('ALTER TABLE step DROP CONSTRAINT FK_43B9FE3C5AA11DBB'); $this->addSql('DROP TABLE gamer'); $this->addSql('DROP TABLE grid'); $this->addSql('DROP TABLE grid_row'); $this->addSql('DROP TABLE played_game'); $this->addSql('DROP TABLE step'); + $this->addSql('DROP TABLE "user"'); } } diff --git a/src/Periodic/MinePeriodic.php b/src/Periodic/MinePeriodic.php index c3838bd..0caed85 100644 --- a/src/Periodic/MinePeriodic.php +++ b/src/Periodic/MinePeriodic.php @@ -1,4 +1,4 @@ - + * @package App\Periodic + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. + * + * @method MinePeriodic|null find($id, $lockMode = null, $lockVersion = null) + * @method MinePeriodic|null findOneBy(array $criteria, array $orderBy = null) + * @method MinePeriodic[] findAll() + * @method MinePeriodic[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) */ class MinePeriodic implements PeriodicInterface { - /** @var PdoPeriodicPing */ - private $ping; - - /** - * MinePeriodic constructor. - * - * @param PdoPeriodicPing $ping - */ - public function __construct(PdoPeriodicPing $ping) - { - $this->ping = $ping; - } + public function __construct(private PdoPeriodicPing $ping) { } /** * This function is executed every 5 seconds. * - * For more advanced functionality, try injecting a Topic Service to perform actions on your connections every x seconds. + * For more advanced functionality, try injecting + * a Topic Service to perform actions on your + * connections every x seconds. */ public function tick(): void { $this->ping->tick(); } - /** - * {@inheritdoc} - */ public function getTimeout(): int { return 300; diff --git a/src/Repository/GamerRepository.php b/src/Repository/GamerRepository.php index 09310f1..257bc4c 100644 --- a/src/Repository/GamerRepository.php +++ b/src/Repository/GamerRepository.php @@ -1,4 +1,4 @@ - + * @package App\Repository + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class GamerRepository extends ServiceEntityRepository { - /** - * GamerRepository constructor. - * - * @param ManagerRegistry $registry - */ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Gamer::class); } - - // /** - // * @return Gamer[] Returns an array of Gamer objects - // */ - /* - public function findByExampleField($value) - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('g.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?Gamer - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ } diff --git a/src/Repository/GridRepository.php b/src/Repository/GridRepository.php index 2eb897f..e7c0a0a 100644 --- a/src/Repository/GridRepository.php +++ b/src/Repository/GridRepository.php @@ -1,4 +1,4 @@ - + * @package App\Repository + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. * * @method Grid|null find($id, $lockMode = null, $lockVersion = null) * @method Grid|null findOneBy(array $criteria, array $orderBy = null) @@ -27,42 +31,8 @@ use Doctrine\Persistence\ManagerRegistry; */ class GridRepository extends ServiceEntityRepository { - /** - * GridRepository constructor. - * - * @param ManagerRegistry $registry - */ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Grid::class); } - - // /** - // * @return Grid[] Returns an array of Grid objects - // */ - /* - public function findByExampleField($value) - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('g.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?Grid - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ } diff --git a/src/Repository/GridRowRepository.php b/src/Repository/GridRowRepository.php index 6d9c501..29a647d 100644 --- a/src/Repository/GridRowRepository.php +++ b/src/Repository/GridRowRepository.php @@ -1,4 +1,4 @@ - + * @package App\Repository + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. * * @method GridRow|null find($id, $lockMode = null, $lockVersion = null) * @method GridRow|null findOneBy(array $criteria, array $orderBy = null) @@ -27,42 +31,8 @@ use Doctrine\Persistence\ManagerRegistry; */ class GridRowRepository extends ServiceEntityRepository { - /** - * GridRowRepository constructor. - * - * @param ManagerRegistry $registry - */ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, GridRow::class); } - - // /** - // * @return GridRow[] Returns an array of GridRow objects - // */ - /* - public function findByExampleField($value) - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('g.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?GridRow - { - return $this->createQueryBuilder('g') - ->andWhere('g.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ } diff --git a/src/Repository/PlayedGameRepository.php b/src/Repository/PlayedGameRepository.php index b45db6a..afde099 100644 --- a/src/Repository/PlayedGameRepository.php +++ b/src/Repository/PlayedGameRepository.php @@ -1,4 +1,4 @@ - + * @package App\Repository + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. * * @method PlayedGame|null find($id, $lockMode = null, $lockVersion = null) * @method PlayedGame|null findOneBy(array $criteria, array $orderBy = null) * @method PlayedGame[] findAll() * @method PlayedGame[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null) + * @method PlayedGame|null findOneByGameAssoc($gameAssoc) */ class PlayedGameRepository extends ServiceEntityRepository { @@ -36,33 +41,4 @@ class PlayedGameRepository extends ServiceEntityRepository { parent::__construct($registry, PlayedGame::class); } - - // /** - // * @return PlayedGame[] Returns an array of PlayedGame objects - // */ - /* - public function findByExampleField($value) - { - return $this->createQueryBuilder('p') - ->andWhere('p.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('p.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?PlayedGame - { - return $this->createQueryBuilder('p') - ->andWhere('p.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ } diff --git a/src/Repository/StepRepository.php b/src/Repository/StepRepository.php index 9dd043f..52d21fb 100644 --- a/src/Repository/StepRepository.php +++ b/src/Repository/StepRepository.php @@ -1,4 +1,4 @@ - + * @package App\Repository + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. * * @method Step|null find($id, $lockMode = null, $lockVersion = null) * @method Step|null findOneBy(array $criteria, array $orderBy = null) @@ -27,42 +31,8 @@ use Doctrine\Persistence\ManagerRegistry; */ class StepRepository extends ServiceEntityRepository { - /** - * StepRepository constructor. - * - * @param ManagerRegistry $registry - */ public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Step::class); } - - // /** - // * @return Step[] Returns an array of Step objects - // */ - /* - public function findByExampleField($value) - { - return $this->createQueryBuilder('s') - ->andWhere('s.exampleField = :val') - ->setParameter('val', $value) - ->orderBy('s.id', 'ASC') - ->setMaxResults(10) - ->getQuery() - ->getResult() - ; - } - */ - - /* - public function findOneBySomeField($value): ?Step - { - return $this->createQueryBuilder('s') - ->andWhere('s.exampleField = :val') - ->setParameter('val', $value) - ->getQuery() - ->getOneOrNullResult() - ; - } - */ } diff --git a/src/Repository/UserRepository.php b/src/Repository/UserRepository.php new file mode 100644 index 0000000..51db8b8 --- /dev/null +++ b/src/Repository/UserRepository.php @@ -0,0 +1,54 @@ + + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. + * + * @extends ServiceEntityRepository + */ +class UserRepository extends ServiceEntityRepository implements PasswordUpgraderInterface +{ + public function __construct(ManagerRegistry $registry) + { + parent::__construct($registry, User::class); + } + + public function findOneByUsername(string $username): ?User + { + return $this->findOneBy(['username' => $username]); + } + + public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newHashedPassword): void + { + if (!$user instanceof User) { + throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', $user::class)); + } + + $user->setPassword($newHashedPassword); + $this->getEntityManager()->persist($user); + $this->getEntityManager()->flush(); + } +} diff --git a/src/Rpc/MineseekerRpc.php b/src/Rpc/MineseekerRpc.php index 1261d2f..1711a4f 100644 --- a/src/Rpc/MineseekerRpc.php +++ b/src/Rpc/MineseekerRpc.php @@ -1,4 +1,4 @@ - + * @package App\Rpc + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class MineseekerRpc implements RpcInterface { - /** @var RpcManager $manager */ - private $manager; - - /** - * MineseekerRpc constructor. - * - * @param RpcManager $manager - */ - public function __construct(RpcManager $manager) - { - $this->manager = $manager; - } + public function __construct(private RpcManager $manager) { } /** * Name of RPC, use for pubsub router (see step3) diff --git a/src/Topic/MineseekerTopic.php b/src/Topic/MineseekerTopic.php index 5464fc3..b575d9f 100644 --- a/src/Topic/MineseekerTopic.php +++ b/src/Topic/MineseekerTopic.php @@ -1,4 +1,4 @@ - + * @package App\Topic + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class MineseekerTopic implements TopicInterface { - /** @var TopicManager $manager */ - private $manager; - - /** - * MineseekerTopic constructor. - * - * @param TopicManager $manager - */ - public function __construct(TopicManager $manager) - { - $this->manager = $manager; - } + public function __construct(private TopicManager $manager) { } /** * Like RPC is will use to prefix the channel @@ -91,13 +84,12 @@ class MineseekerTopic implements TopicInterface */ public function onPublish( ConnectionInterface $connection, - Topic $topic, - WampRequest $request, - $event, - array $exclude, - array $eligible - ) - { + Topic $topic, + WampRequest $request, + $event, + array $exclude, + array $eligible + ) { $this->manager->publish($topic, $connection, $event); } } diff --git a/src/Util/RpcManager.php b/src/Util/RpcManager.php index bc6af5e..1c72ba1 100644 --- a/src/Util/RpcManager.php +++ b/src/Util/RpcManager.php @@ -1,4 +1,4 @@ - + * @package App\Util + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class RpcManager extends WebsocketManager implements RpcManagerInterface { - /** @var EntityManager $em */ - protected $entityManager; - - /** @var LoggerInterface $logger */ - private $logger; - - /** - * MineseekerRpc constructor. - * - * @param EntityManagerInterface $entityManager - * @param LoggerInterface $logger - */ - public function __construct(EntityManagerInterface $entityManager, LoggerInterface $logger) - { - $this->entityManager = $this->reConnect($entityManager); - $this->logger = $logger; - + public function __construct( + private EntityManagerInterface $entityManager, + private LoggerInterface $logger, + ) { parent::__construct($logger); } - /** - * {@inheritDoc} - */ public function getConnectInformation($params): string { $gameAssoc = is_array($params) ? $params[0] : $params; $grid = $this->getGrid($gameAssoc); $users = null !== $grid ? $this->getUsers($gameAssoc) : null; - return base64_encode(json_encode(array( - 'grid' => $grid, - 'users' => $users - ), JSON_THROW_ON_ERROR, 512)); + return base64_encode(json_encode([ + 'grid' => $grid, + 'users' => $users, + ], JSON_THROW_ON_ERROR, 512)); } - /** - * {@inheritDoc} - */ public function saveGrid($data): bool { $playedGame = new PlayedGame(); @@ -173,11 +157,11 @@ class RpcManager extends WebsocketManager implements RpcManagerInterface */ private function getUserCollection(PlayedGame $playedGame): array { - return array( - 'red' => null !== $playedGame->getRed() ? $playedGame->getRed()->getUsername() : '', - 'blue' => null !== $playedGame->getBlue() ? $playedGame->getBlue()->getUsername() : '', - 'redAnon' => null !== $playedGame->getRedAnon() ? $playedGame->getRedAnon()->getUserName() : '', - 'blueAnon' => null !== $playedGame->getBlueAnon() ? $playedGame->getBlueAnon()->getUserName() : '' - ); + return [ + 'red' => null !== $playedGame->getRed() ? $playedGame->getRed()->getUsername() : '', + 'blue' => null !== $playedGame->getBlue() ? $playedGame->getBlue()->getUsername() : '', + 'redAnon' => null !== $playedGame->getRedAnon() ? $playedGame->getRedAnon()->getUserName() : '', + 'blueAnon' => null !== $playedGame->getBlueAnon() ? $playedGame->getBlueAnon()->getUserName() : '', + ]; } } diff --git a/src/Util/TopicManager.php b/src/Util/TopicManager.php index e849d82..57bb23f 100644 --- a/src/Util/TopicManager.php +++ b/src/Util/TopicManager.php @@ -1,4 +1,4 @@ - + * @package App\Util + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class TopicManager extends WebsocketManager implements TopicManagerInterface { - /** @var ClientManipulatorInterface $clientManipulator */ - protected $clientManipulator; - - /** @var EntityManagerInterface $entityManager */ - protected $entityManager; - - /** @var RequestStack $requestStack */ - protected $requestStack; - - /** @var LoggerInterface $logger */ - protected $logger; - - /** - * TopicManager constructor. - * - * @param ClientManipulatorInterface $clientManipulator - * @param EntityManagerInterface $entityManager - * @param RequestStack $requestStack - * @param LoggerInterface $logger - */ public function __construct( - ClientManipulatorInterface $clientManipulator, - EntityManagerInterface $entityManager, - RequestStack $requestStack, - LoggerInterface $logger + protected ClientManipulatorInterface $clientManipulator, + protected EntityManagerInterface $entityManager, + protected RequestStack $requestStack, + protected LoggerInterface $logger ) { - $this->clientManipulator = $clientManipulator; - $this->entityManager = $this->reConnect($entityManager); - $this->requestStack = $requestStack; - $this->logger = $logger; - parent::__construct($logger); } - /** - * {@inheritDoc} - */ public function subscribe(Topic $topic, ConnectionInterface $connection): void { /** this will broadcast the message to ALL subscribers of this topic. */ @@ -93,18 +69,12 @@ class TopicManager extends WebsocketManager implements TopicManagerInterface } } - /** - * {@inheritDoc} - */ public function unSubscribe(Topic $topic, ConnectionInterface $connection): void { /** This will broadcasts the message to ALL subscribers of this topic. */ - $topic->broadcast(array('msg' => $connection->resourceId . ' has left ' . $topic->getId())); + $topic->broadcast(['msg' => $connection->resourceId . ' has left ' . $topic->getId()]); } - /** - * {@inheritDoc} - */ public function publish(Topic $topic, ConnectionInterface $connection, $event): void { $user = $this->clientManipulator->getClient($connection); @@ -319,11 +289,11 @@ class TopicManager extends WebsocketManager implements TopicManagerInterface */ private function getUserCollection(PlayedGame $playedGame): array { - return array( + return [ 'red' => null !== $playedGame->getRed() ? $playedGame->getRed()->getUsername() : '', 'blue' => null !== $playedGame->getBlue() ? $playedGame->getBlue()->getUsername() : '', 'redAnon' => null !== $playedGame->getRedAnon() ? $playedGame->getRedAnon()->getUserName() : '', 'blueAnon' => null !== $playedGame->getBlueAnon() ? $playedGame->getBlueAnon()->getUserName() : '' - ); + ]; } } diff --git a/src/Util/WebsocketManager.php b/src/Util/WebsocketManager.php index 59dc7b1..35f41bf 100644 --- a/src/Util/WebsocketManager.php +++ b/src/Util/WebsocketManager.php @@ -1,4 +1,4 @@ - + * @package App\Util + * @author Lang + * @category Class + * @license https://www.gnu.org/licenses/lgpl-3.0.en.html GNU Lesser General Public License + * @link www.splendidbear.org + * @since 2026. 04. 09. */ class WebsocketManager implements WebsocketManagerInterface { - /** @var LoggerInterface $logger */ - private $logger; + public function __construct(private LoggerInterface $logger) { } - /** - * WebsocketManager constructor. - * - * @param LoggerInterface $logger - */ - public function __construct(LoggerInterface $logger) - { - $this->logger = $logger; - } - - /** - * {@inheritDoc} - */ public function reConnect(EntityManagerInterface $entityManager): ?EntityManagerInterface { try { @@ -48,7 +38,7 @@ class WebsocketManager implements WebsocketManagerInterface $connection->close(); $connection->connect(); } - } catch (PDOException $e) { + } catch (RuntimeException $e) { $this->logger->error($e->getMessage()); } diff --git a/symfony.lock b/symfony.lock index adf1af1..fec0ec9 100644 --- a/symfony.lock +++ b/symfony.lock @@ -5,15 +5,6 @@ "cocur/slugify": { "version": "v3.1" }, - "doctrine/annotations": { - "version": "1.0", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "1.0", - "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" - } - }, "doctrine/cache": { "version": "v1.7.1" }, @@ -26,6 +17,15 @@ "doctrine/dbal": { "version": "v2.7.1" }, + "doctrine/deprecations": { + "version": "1.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "main", + "version": "1.0", + "ref": "fdd756167454623e21f1d769c5b814b243782a67" + } + }, "doctrine/doctrine-bundle": { "version": "1.6", "recipe": { @@ -98,12 +98,6 @@ "jdorn/sql-formatter": { "version": "v1.2.17" }, - "knplabs/knp-menu": { - "version": "2.3.0" - }, - "knplabs/knp-menu-bundle": { - "version": "v2.2.1" - }, "monolog/monolog": { "version": "1.25.1" }, @@ -164,33 +158,6 @@ "roave/security-advisories": { "version": "dev-master" }, - "sensio/framework-extra-bundle": { - "version": "5.2", - "recipe": { - "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "5.2", - "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" - }, - "files": [ - "config/packages/sensio_framework_extra.yaml" - ] - }, - "sonata-project/admin-bundle": { - "version": "3.31", - "recipe": { - "repo": "github.com/symfony/recipes-contrib", - "branch": "master", - "version": "3.31", - "ref": "0e5931df1732e3dccfba42a20853049e5e9db6ae" - } - }, - "sonata-project/block-bundle": { - "version": "3.12.1" - }, - "sonata-project/cache": { - "version": "2.0.1" - }, "sonata-project/core-bundle": { "version": "3.9", "recipe": { @@ -203,21 +170,9 @@ "sonata-project/datagrid-bundle": { "version": "2.3.1" }, - "sonata-project/doctrine-extensions": { - "version": "1.0.2" - }, - "sonata-project/doctrine-orm-admin-bundle": { - "version": "3.6.0" - }, "sonata-project/easy-extends-bundle": { "version": "2.5.0" }, - "sonata-project/exporter": { - "version": "1.9.0" - }, - "sonata-project/user-bundle": { - "version": "4.2.1" - }, "swiftmailer/swiftmailer": { "version": "v6.0.2" }, @@ -263,9 +218,6 @@ "symfony/event-dispatcher-contracts": { "version": "v1.1.7" }, - "symfony/expression-language": { - "version": "v4.0.9" - }, "symfony/filesystem": { "version": "v4.0.9" }, @@ -281,9 +233,6 @@ "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4" } }, - "symfony/form": { - "version": "v4.0.9" - }, "symfony/framework-bundle": { "version": "3.3", "recipe": { @@ -358,9 +307,6 @@ "symfony/polyfill-ctype": { "version": "v1.12.0" }, - "symfony/polyfill-intl-icu": { - "version": "v1.8.0" - }, "symfony/polyfill-intl-idn": { "version": "v1.12.0" }, @@ -370,9 +316,6 @@ "symfony/profiler-pack": { "version": "v1.0.3" }, - "symfony/property-access": { - "version": "v4.0.9" - }, "symfony/routing": { "version": "4.0", "recipe": { @@ -385,30 +328,25 @@ "symfony/security": { "version": "v4.0.9" }, - "symfony/security-acl": { - "version": "v3.0.1" - }, "symfony/security-bundle": { - "version": "3.3", + "version": "6.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "f8a63faa0d9521526499c0a8f403c9964ecb0527" - } + "branch": "main", + "version": "6.4", + "ref": "2ae08430db28c8eb4476605894296c82a642028f" + }, + "files": [ + "config/packages/security.yaml", + "config/routes/security.yaml" + ] }, "symfony/security-core": { "version": "v4.3.5" }, - "symfony/security-csrf": { - "version": "v4.3.5" - }, "symfony/security-guard": { "version": "v4.3.5" }, - "symfony/security-http": { - "version": "v4.3.5" - }, "symfony/service-contracts": { "version": "v1.1.7" }, @@ -419,13 +357,17 @@ "version": "v4.0.9" }, "symfony/translation": { - "version": "3.3", + "version": "6.4", "recipe": { "repo": "github.com/symfony/recipes", - "branch": "master", - "version": "3.3", - "ref": "6bcd6c570c017ea6ae5a7a6a027c929fd3542cd8" - } + "branch": "main", + "version": "6.3", + "ref": "620a1b84865ceb2ba304c8f8bf2a185fbf32a843" + }, + "files": [ + "config/packages/translation.yaml", + "translations/.gitignore" + ] }, "symfony/translation-contracts": { "version": "v1.1.7" @@ -442,9 +384,6 @@ "ref": "f75ac166398e107796ca94cc57fa1edaa06ec47f" } }, - "symfony/validator": { - "version": "v4.0.9" - }, "symfony/var-dumper": { "version": "v4.0.9" }, diff --git a/var/logs/.gitkeep b/var/logs/.gitkeep deleted file mode 100644 index e69de29..0000000