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