diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 4b1eb0a..a5f7f68 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -9,7 +9,7 @@ jobs: php-versions: [ '8.2' ] services: postgresql: - image: postgres:13-alpine + image: postgres:16-alpine env: POSTGRES_PASSWORD: 112358 POSTGRES_USER: killer diff --git a/.gitignore b/.gitignore index 9853406..ea79a16 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ - ###> symfony/framework-bundle ### /.env.local /.env.local.php @@ -8,11 +7,6 @@ /var/ /vendor/ ###< symfony/framework-bundle ### - -###> squizlabs/php_codesniffer ### -/.phpcs-cache -###< squizlabs/php_codesniffer ### - ###> phpunit/phpunit ### /phpunit.xml .phpunit.result.cache @@ -31,6 +25,11 @@ build /config/jwt/*.pem ###< lexik/jwt-authentication-bundle ### +###> squizlabs/php_codesniffer ### +/.phpcs-cache +/phpcs.xml +###< squizlabs/php_codesniffer ### + ###> phpstan/phpstan ### phpstan.neon ###< phpstan/phpstan ### diff --git a/Makefile b/Makefile index 0469bf5..23cef84 100644 --- a/Makefile +++ b/Makefile @@ -23,6 +23,9 @@ phpcs: phpcs-ci: prepare-ci vendor/bin/phpcs -sp --report=checkstyle --report-file=$(REPORTS_DIR)/phpcs.xml --standard=phpcs.xml.dist --extensions=php --ignore=*/tests/bootstrap.php src tests +phpmd: + vendor/bin/phpmd src text phpmd.xml + .PHONY: unit-tests unit-tests: @vendor/bin/codecept run Unit diff --git a/composer.json b/composer.json index 5f1ca0c..d1a3719 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "minimum-stability": "stable", "prefer-stable": true, "require": { - "php": ">=8.2", + "php": "^8.3", "ext-ctype": "*", "ext-iconv": "*", "ext-json": "*", @@ -41,32 +41,30 @@ "symfony/yaml": "^6.2" }, "require-dev": { + "arty/php-coding-standard": "^1.0", "codeception/codeception": "^5.0", "codeception/module-asserts": "^3.0", "codeception/module-db": "^3.0", "codeception/module-doctrine2": "^3.0", "codeception/module-rest": "^3.3", - "codeception/module-symfony": "^3.1", + "codeception/module-symfony": "^3.3", "doctrine/doctrine-fixtures-bundle": "^3.4", - "jangregor/phpstan-prophecy": "^1.0", - "phpmd/phpmd": "^2.12", "phpspec/prophecy-phpunit": "^2.0", - "phpstan/phpstan": "^1.7", - "phpunit/phpunit": "^9.5", + "phpunit/phpunit": "^10.5", "roave/security-advisories": "dev-latest", - "squizlabs/php_codesniffer": "^3.6", "symfony/browser-kit": "^6.2", "symfony/css-selector": "^6.2", "symfony/maker-bundle": "^1.43", "symfony/phpunit-bridge": "^6.1", "symfony/stopwatch": "^6.1", - "symfony/web-profiler-bundle": "^6.2" + "symfony/web-profiler-bundle": "^6.4" }, "config": { "allow-plugins": { "composer/package-versions-deprecated": true, "symfony/flex": true, - "symfony/runtime": true + "symfony/runtime": true, + "dealerdirect/phpcodesniffer-composer-installer": true }, "optimize-autoloader": true, "preferred-install": { diff --git a/composer.lock b/composer.lock index e49bf75..b60f435 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": "1efb574ea9530f78a6e32aea4df10f1c", + "content-hash": "e1d165f79ccd83b01e3a321681dfd960", "packages": [ { "name": "doctrine/annotations", @@ -1156,16 +1156,16 @@ }, { "name": "doctrine/orm", - "version": "2.17.1", + "version": "2.17.4", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1" + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/1a4fe6e0bb67762370937a7e6cee3da40a9122d1", - "reference": "1a4fe6e0bb67762370937a7e6cee3da40a9122d1", + "url": "https://api.github.com/repos/doctrine/orm/zipball/ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", + "reference": "ccfc97c32f63aaa0988ac6aa42e71c5590bb794d", "shasum": "" }, "require": { @@ -1198,10 +1198,10 @@ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psr/log": "^1 || ^2 || ^3", "squizlabs/php_codesniffer": "3.7.2", - "symfony/cache": "^4.4 || ^5.4 || ^6.0", - "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2", - "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0", - "vimeo/psalm": "4.30.0 || 5.15.0" + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7.0", + "symfony/var-exporter": "^4.4 || ^5.4 || ^6.2 || ^7.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0 || ^7.0", + "vimeo/psalm": "4.30.0 || 5.16.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1251,9 +1251,9 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.17.1" + "source": "https://github.com/doctrine/orm/tree/2.17.4" }, - "time": "2023-11-17T06:25:40+00:00" + "time": "2024-01-26T19:41:16+00:00" }, { "name": "doctrine/persistence", @@ -1690,16 +1690,16 @@ }, { "name": "lexik/jwt-authentication-bundle", - "version": "v2.20.2", + "version": "v2.20.3", "source": { "type": "git", "url": "https://github.com/lexik/LexikJWTAuthenticationBundle.git", - "reference": "3df8317555ea899a81b5c6b7558e421838f2f926" + "reference": "a196d68d07dd5486a523cc3415620badbb5d25c2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/3df8317555ea899a81b5c6b7558e421838f2f926", - "reference": "3df8317555ea899a81b5c6b7558e421838f2f926", + "url": "https://api.github.com/repos/lexik/LexikJWTAuthenticationBundle/zipball/a196d68d07dd5486a523cc3415620badbb5d25c2", + "reference": "a196d68d07dd5486a523cc3415620badbb5d25c2", "shasum": "" }, "require": { @@ -1793,7 +1793,7 @@ ], "support": { "issues": "https://github.com/lexik/LexikJWTAuthenticationBundle/issues", - "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.20.2" + "source": "https://github.com/lexik/LexikJWTAuthenticationBundle/tree/v2.20.3" }, "funding": [ { @@ -1805,7 +1805,7 @@ "type": "tidelift" } ], - "time": "2023-12-05T22:22:51+00:00" + "time": "2023-12-14T15:58:11+00:00" }, { "name": "marvin255/random-string-generator", @@ -2258,16 +2258,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.24.4", + "version": "1.25.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496" + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/6bd0c26f3786cd9b7c359675cb789e35a8e07496", - "reference": "6bd0c26f3786cd9b7c359675cb789e35a8e07496", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", + "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", "shasum": "" }, "require": { @@ -2299,9 +2299,9 @@ "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/1.24.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0" }, - "time": "2023-11-26T18:29:22+00:00" + "time": "2024-01-04T17:06:16+00:00" }, { "name": "psr/cache", @@ -2611,16 +2611,16 @@ }, { "name": "symfony/cache", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a" + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/ac2d25f97b17eec6e19760b6b9962a4f7c44356a", - "reference": "ac2d25f97b17eec6e19760b6b9962a4f7c44356a", + "url": "https://api.github.com/repos/symfony/cache/zipball/14a75869bbb41cb35bc5d9d322473928c6f3f978", + "reference": "14a75869bbb41cb35bc5d9d322473928c6f3f978", "shasum": "" }, "require": { @@ -2687,7 +2687,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.0" + "source": "https://github.com/symfony/cache/tree/v6.4.2" }, "funding": [ { @@ -2703,7 +2703,7 @@ "type": "tidelift" } ], - "time": "2023-11-24T19:28:07+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/cache-contracts", @@ -2783,16 +2783,16 @@ }, { "name": "symfony/clock", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16" + "reference": "0639710e65f73cc504167958ea29be6de5c7177a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/48102bcc56b26d453c7f5e7f72829abc9df25a16", - "reference": "48102bcc56b26d453c7f5e7f72829abc9df25a16", + "url": "https://api.github.com/repos/symfony/clock/zipball/0639710e65f73cc504167958ea29be6de5c7177a", + "reference": "0639710e65f73cc504167958ea29be6de5c7177a", "shasum": "" }, "require": { @@ -2837,7 +2837,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v6.4.0" + "source": "https://github.com/symfony/clock/tree/v6.4.2" }, "funding": [ { @@ -2853,7 +2853,7 @@ "type": "tidelift" } ], - "time": "2023-10-13T14:46:14+00:00" + "time": "2023-12-27T00:32:33+00:00" }, { "name": "symfony/config", @@ -2932,16 +2932,16 @@ }, { "name": "symfony/console", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd" + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a550a7c99daeedef3f9d23fb82e3531525ff11fd", - "reference": "a550a7c99daeedef3f9d23fb82e3531525ff11fd", + "url": "https://api.github.com/repos/symfony/console/zipball/0254811a143e6bc6c8deea08b589a7e68a37f625", + "reference": "0254811a143e6bc6c8deea08b589a7e68a37f625", "shasum": "" }, "require": { @@ -3006,7 +3006,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.1" + "source": "https://github.com/symfony/console/tree/v6.4.2" }, "funding": [ { @@ -3022,20 +3022,20 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:54:28+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/dependency-injection", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf" + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f88ff6428afbeb17cc648c8003bd608534750baf", - "reference": "f88ff6428afbeb17cc648c8003bd608534750baf", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/226ea431b1eda6f0d9f5a4b278757171960bb195", + "reference": "226ea431b1eda6f0d9f5a4b278757171960bb195", "shasum": "" }, "require": { @@ -3087,7 +3087,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v6.4.1" + "source": "https://github.com/symfony/dependency-injection/tree/v6.4.2" }, "funding": [ { @@ -3103,7 +3103,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:56:37+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3174,16 +3174,16 @@ }, { "name": "symfony/doctrine-bridge", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/doctrine-bridge.git", - "reference": "bd181daf2851821c3aef20b779d37002cfd2e833" + "reference": "da33f27c1dd9946afecfd1585b867551df71bf53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/bd181daf2851821c3aef20b779d37002cfd2e833", - "reference": "bd181daf2851821c3aef20b779d37002cfd2e833", + "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/da33f27c1dd9946afecfd1585b867551df71bf53", + "reference": "da33f27c1dd9946afecfd1585b867551df71bf53", "shasum": "" }, "require": { @@ -3262,7 +3262,7 @@ "description": "Provides integration for Doctrine with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/doctrine-bridge/tree/v6.4.2" }, "funding": [ { @@ -3278,20 +3278,20 @@ "type": "tidelift" } ], - "time": "2023-10-31T08:40:20+00:00" + "time": "2023-12-27T00:32:33+00:00" }, { "name": "symfony/dotenv", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/dotenv.git", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f" + "reference": "835f8d2d1022934ac038519de40b88158798c96f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dotenv/zipball/d0d584a91422ddaa2c94317200d4c4e5b935555f", - "reference": "d0d584a91422ddaa2c94317200d4c4e5b935555f", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/835f8d2d1022934ac038519de40b88158798c96f", + "reference": "835f8d2d1022934ac038519de40b88158798c96f", "shasum": "" }, "require": { @@ -3336,7 +3336,7 @@ "environment" ], "support": { - "source": "https://github.com/symfony/dotenv/tree/v6.4.0" + "source": "https://github.com/symfony/dotenv/tree/v6.4.2" }, "funding": [ { @@ -3352,7 +3352,7 @@ "type": "tidelift" } ], - "time": "2023-10-26T18:19:48+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/error-handler", @@ -3431,16 +3431,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6" + "reference": "e95216850555cd55e71b857eb9d6c2674124603a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d76d2632cfc2206eecb5ad2b26cd5934082941b6", - "reference": "d76d2632cfc2206eecb5ad2b26cd5934082941b6", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/e95216850555cd55e71b857eb9d6c2674124603a", + "reference": "e95216850555cd55e71b857eb9d6c2674124603a", "shasum": "" }, "require": { @@ -3491,7 +3491,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v6.4.2" }, "funding": [ { @@ -3507,7 +3507,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3587,16 +3587,16 @@ }, { "name": "symfony/expression-language", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152" + "reference": "7d63ccd5331d4164961776eced5524e891e30ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", - "reference": "6c8b12f1e5ee5d91b812fb8628fca86e2fe5d152", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/7d63ccd5331d4164961776eced5524e891e30ad3", + "reference": "7d63ccd5331d4164961776eced5524e891e30ad3", "shasum": "" }, "require": { @@ -3631,7 +3631,7 @@ "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.0" + "source": "https://github.com/symfony/expression-language/tree/v6.4.2" }, "funding": [ { @@ -3647,7 +3647,7 @@ "type": "tidelift" } ], - "time": "2023-07-27T06:52:43+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/filesystem", @@ -3778,16 +3778,16 @@ }, { "name": "symfony/flex", - "version": "v2.4.2", + "version": "v2.4.3", "source": { "type": "git", "url": "https://github.com/symfony/flex.git", - "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36" + "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/flex/zipball/67ee785f1aedada76461de7a7ec10cd7f8ff8d36", - "reference": "67ee785f1aedada76461de7a7ec10cd7f8ff8d36", + "url": "https://api.github.com/repos/symfony/flex/zipball/6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", + "reference": "6b44ac75c7f07f48159ec36c2d21ef8cf48a21b1", "shasum": "" }, "require": { @@ -3823,7 +3823,7 @@ "description": "Composer plugin for Symfony", "support": { "issues": "https://github.com/symfony/flex/issues", - "source": "https://github.com/symfony/flex/tree/v2.4.2" + "source": "https://github.com/symfony/flex/tree/v2.4.3" }, "funding": [ { @@ -3839,20 +3839,20 @@ "type": "tidelift" } ], - "time": "2023-12-05T14:09:35+00:00" + "time": "2024-01-02T11:08:32+00:00" }, { "name": "symfony/framework-bundle", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa" + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ac22d760bf9ff4440a1b6c7caef34d38b44290aa", - "reference": "ac22d760bf9ff4440a1b6c7caef34d38b44290aa", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/c26a221e0462027d1f9d4a802ed63f8ab07a43d0", + "reference": "c26a221e0462027d1f9d4a802ed63f8ab07a43d0", "shasum": "" }, "require": { @@ -3880,7 +3880,7 @@ "symfony/asset": "<5.4", "symfony/asset-mapper": "<6.4", "symfony/clock": "<6.3", - "symfony/console": "<5.4", + "symfony/console": "<5.4|>=7.0", "symfony/dom-crawler": "<6.4", "symfony/dotenv": "<5.4", "symfony/form": "<5.4", @@ -3971,7 +3971,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/v6.4.1" + "source": "https://github.com/symfony/framework-bundle/tree/v6.4.2" }, "funding": [ { @@ -3987,20 +3987,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:35:22+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/http-client", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29" + "reference": "fc0944665bd932cf32a7b8a1d009466afc16528f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/5c584530b77aa10ae216989ffc48b4bedc9c0b29", - "reference": "5c584530b77aa10ae216989ffc48b4bedc9c0b29", + "url": "https://api.github.com/repos/symfony/http-client/zipball/fc0944665bd932cf32a7b8a1d009466afc16528f", + "reference": "fc0944665bd932cf32a7b8a1d009466afc16528f", "shasum": "" }, "require": { @@ -4064,7 +4064,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v6.4.0" + "source": "https://github.com/symfony/http-client/tree/v6.4.2" }, "funding": [ { @@ -4080,7 +4080,7 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:55:58+00:00" + "time": "2023-12-02T12:49:56+00:00" }, { "name": "symfony/http-client-contracts", @@ -4162,16 +4162,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771" + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/44a6d39a9cc11e154547d882d5aac1e014440771", - "reference": "44a6d39a9cc11e154547d882d5aac1e014440771", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/172d807f9ef3fc3fbed8377cc57c20d389269271", + "reference": "172d807f9ef3fc3fbed8377cc57c20d389269271", "shasum": "" }, "require": { @@ -4219,7 +4219,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.4.2" }, "funding": [ { @@ -4235,20 +4235,20 @@ "type": "tidelift" } ], - "time": "2023-11-20T16:41:16+00:00" + "time": "2023-12-27T22:16:42+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b" + "reference": "13e8387320b5942d0dc408440c888e2d526efef4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/2953274c16a229b3933ef73a6898e18388e12e1b", - "reference": "2953274c16a229b3933ef73a6898e18388e12e1b", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/13e8387320b5942d0dc408440c888e2d526efef4", + "reference": "13e8387320b5942d0dc408440c888e2d526efef4", "shasum": "" }, "require": { @@ -4332,7 +4332,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.1" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.2" }, "funding": [ { @@ -4348,7 +4348,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T17:02:02+00:00" + "time": "2023-12-30T15:31:44+00:00" }, { "name": "symfony/mercure", @@ -5440,16 +5440,16 @@ }, { "name": "symfony/routing", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40" + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/0c95c164fdba18b12523b75e64199ca3503e6d40", - "reference": "0c95c164fdba18b12523b75e64199ca3503e6d40", + "url": "https://api.github.com/repos/symfony/routing/zipball/98eab13a07fddc85766f1756129c69f207ffbc21", + "reference": "98eab13a07fddc85766f1756129c69f207ffbc21", "shasum": "" }, "require": { @@ -5503,7 +5503,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.1" + "source": "https://github.com/symfony/routing/tree/v6.4.2" }, "funding": [ { @@ -5519,7 +5519,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/runtime", @@ -5602,16 +5602,16 @@ }, { "name": "symfony/security-bundle", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e" + "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", - "reference": "4fd31b7cb2a18f62c5a8588b82a44fd240b41a9e", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/97d4fb6dbee700937738036ec54b0fcb0641d7d6", + "reference": "97d4fb6dbee700937738036ec54b0fcb0641d7d6", "shasum": "" }, "require": { @@ -5694,7 +5694,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.4.0" + "source": "https://github.com/symfony/security-bundle/tree/v6.4.2" }, "funding": [ { @@ -5710,7 +5710,7 @@ "type": "tidelift" } ], - "time": "2023-10-31T14:46:20+00:00" + "time": "2023-12-24T09:11:31+00:00" }, { "name": "symfony/security-core", @@ -5955,16 +5955,16 @@ }, { "name": "symfony/serializer", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f" + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/7ead272e62c9567df619ef3c49809bf934ddbc1f", - "reference": "7ead272e62c9567df619ef3c49809bf934ddbc1f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", + "reference": "f87ea9d7bfd4cf2f7b72be554607e6c96e6664af", "shasum": "" }, "require": { @@ -6033,7 +6033,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v6.4.1" + "source": "https://github.com/symfony/serializer/tree/v6.4.2" }, "funding": [ { @@ -6049,25 +6049,25 @@ "type": "tidelift" } ], - "time": "2023-12-01T14:54:37+00:00" + "time": "2023-12-29T15:34:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", - "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", + "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", "shasum": "" }, "require": { "php": ">=8.1", - "psr/container": "^2.0" + "psr/container": "^1.1|^2.0" }, "conflict": { "ext-psr": "<1.1|>=2" @@ -6115,7 +6115,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" }, "funding": [ { @@ -6131,7 +6131,7 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/stopwatch", @@ -6197,16 +6197,16 @@ }, { "name": "symfony/string", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809" + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/b45fcf399ea9c3af543a92edf7172ba21174d809", - "reference": "b45fcf399ea9c3af543a92edf7172ba21174d809", + "url": "https://api.github.com/repos/symfony/string/zipball/7cb80bc10bfcdf6b5492741c0b9357dac66940bc", + "reference": "7cb80bc10bfcdf6b5492741c0b9357dac66940bc", "shasum": "" }, "require": { @@ -6263,7 +6263,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.0" + "source": "https://github.com/symfony/string/tree/v6.4.2" }, "funding": [ { @@ -6279,20 +6279,20 @@ "type": "tidelift" } ], - "time": "2023-11-28T20:41:49+00:00" + "time": "2023-12-10T16:15:48+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.0", + "version": "v3.4.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5" + "reference": "06450585bf65e978026bda220cdebca3f867fde7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/dee0c6e5b4c07ce851b462530088e64b255ac9c5", - "reference": "dee0c6e5b4c07ce851b462530088e64b255ac9c5", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", + "reference": "06450585bf65e978026bda220cdebca3f867fde7", "shasum": "" }, "require": { @@ -6341,7 +6341,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" }, "funding": [ { @@ -6357,20 +6357,20 @@ "type": "tidelift" } ], - "time": "2023-07-25T15:08:44+00:00" + "time": "2023-12-26T14:02:43+00:00" }, { "name": "symfony/validator", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c" + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", - "reference": "33e1f3bb76ef70e3170e12f878aefb9c69b0fc4c", + "url": "https://api.github.com/repos/symfony/validator/zipball/15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", + "reference": "15fe2c6ed815b06b6b8636d8ba3ef9807ee1a75c", "shasum": "" }, "require": { @@ -6437,7 +6437,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.4.0" + "source": "https://github.com/symfony/validator/tree/v6.4.2" }, "funding": [ { @@ -6453,20 +6453,20 @@ "type": "tidelift" } ], - "time": "2023-11-29T07:47:42+00:00" + "time": "2023-12-29T16:34:12+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6" + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c40f7d17e91d8b407582ed51a2bbf83c52c367f6", - "reference": "c40f7d17e91d8b407582ed51a2bbf83c52c367f6", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", + "reference": "68d6573ec98715ddcae5a0a85bee3c1c27a4c33f", "shasum": "" }, "require": { @@ -6522,7 +6522,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.2" }, "funding": [ { @@ -6538,20 +6538,20 @@ "type": "tidelift" } ], - "time": "2023-11-09T08:28:32+00:00" + "time": "2023-12-28T19:16:56+00:00" }, { "name": "symfony/var-exporter", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9" + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/2d08ca6b9cc704dce525615d1e6d1788734f36d9", - "reference": "2d08ca6b9cc704dce525615d1e6d1788734f36d9", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/5fe9a0021b8d35e67d914716ec8de50716a68e7e", + "reference": "5fe9a0021b8d35e67d914716ec8de50716a68e7e", "shasum": "" }, "require": { @@ -6597,7 +6597,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v6.4.1" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.2" }, "funding": [ { @@ -6613,7 +6613,7 @@ "type": "tidelift" } ], - "time": "2023-11-30T10:32:10+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "symfony/web-link", @@ -6700,16 +6700,16 @@ }, { "name": "symfony/workflow", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/workflow.git", - "reference": "06bcb0385811a604131eab6187b04e66844c9b03" + "reference": "ddfd72ed1eaadae99b362ee011d46bf97409c506" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/workflow/zipball/06bcb0385811a604131eab6187b04e66844c9b03", - "reference": "06bcb0385811a604131eab6187b04e66844c9b03", + "url": "https://api.github.com/repos/symfony/workflow/zipball/ddfd72ed1eaadae99b362ee011d46bf97409c506", + "reference": "ddfd72ed1eaadae99b362ee011d46bf97409c506", "shasum": "" }, "require": { @@ -6768,7 +6768,7 @@ "workflow" ], "support": { - "source": "https://github.com/symfony/workflow/tree/v6.4.1" + "source": "https://github.com/symfony/workflow/tree/v6.4.2" }, "funding": [ { @@ -6784,7 +6784,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T08:06:02+00:00" + "time": "2023-12-21T11:19:27+00:00" }, { "name": "symfony/yaml", @@ -6918,6 +6918,51 @@ } ], "packages-dev": [ + { + "name": "arty/php-coding-standard", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/ArthurJCQ/php-coding-standard.git", + "reference": "78741296fdbcf83cb510a737eab7c9319e5f376a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ArthurJCQ/php-coding-standard/zipball/78741296fdbcf83cb510a737eab7c9319e5f376a", + "reference": "78741296fdbcf83cb510a737eab7c9319e5f376a", + "shasum": "" + }, + "require": { + "jangregor/phpstan-prophecy": "^1.0", + "php": "^8.3", + "phpmd/phpmd": "^2.15", + "phpspec/prophecy-phpunit": "^2.1", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^10.5", + "slevomat/coding-standard": "^8.14", + "squizlabs/php_codesniffer": "^3.8" + }, + "require-dev": { + "roave/security-advisories": "dev-latest" + }, + "type": "phpcodesniffer-standard", + "autoload": { + "psr-4": { + "ArtyCodingStandard\\": "src/ArtyCodingStandard" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Static analysis tools config for PHP projects, by arty.", + "support": { + "issues": "https://github.com/ArthurJCQ/php-coding-standard/issues", + "source": "https://github.com/ArthurJCQ/php-coding-standard/tree/v1.0.2" + }, + "time": "2024-01-22T11:45:13+00:00" + }, { "name": "behat/gherkin", "version": "v4.9.0", @@ -6983,16 +7028,16 @@ }, { "name": "codeception/codeception", - "version": "5.0.12", + "version": "5.0.13", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4" + "reference": "713a90195efa2926566e24bfc623da703ff42bba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", - "reference": "7f528f5fd8cdcd05cd0a85eb1e24d05df989e0c4", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/713a90195efa2926566e24bfc623da703ff42bba", + "reference": "713a90195efa2926566e24bfc623da703ff42bba", "shasum": "" }, "require": { @@ -7007,15 +7052,15 @@ "phpunit/php-text-template": "^2.0 || ^3.0", "phpunit/php-timer": "^5.0.3 || ^6.0", "phpunit/phpunit": "^9.5.20 || ^10.0", - "psy/psysh": "^0.11.2", + "psy/psysh": "^0.11.2 || ^0.12", "sebastian/comparator": "^4.0.5 || ^5.0", "sebastian/diff": "^4.0.3 || ^5.0", - "symfony/console": ">=4.4.24 <7.0", - "symfony/css-selector": ">=4.4.24 <7.0", - "symfony/event-dispatcher": ">=4.4.24 <7.0", - "symfony/finder": ">=4.4.24 <7.0", - "symfony/var-dumper": ">=4.4.24 < 7.0", - "symfony/yaml": ">=4.4.24 <7.0" + "symfony/console": ">=4.4.24 <8.0", + "symfony/css-selector": ">=4.4.24 <8.0", + "symfony/event-dispatcher": ">=4.4.24 <8.0", + "symfony/finder": ">=4.4.24 <8.0", + "symfony/var-dumper": ">=4.4.24 <8.0", + "symfony/yaml": ">=4.4.24 <8.0" }, "conflict": { "codeception/lib-innerbrowser": "<3.1.3", @@ -7036,8 +7081,8 @@ "codeception/util-universalframework": "*@dev", "ext-simplexml": "*", "jetbrains/phpstorm-attributes": "^1.0", - "symfony/dotenv": ">=4.4.24 <7.0", - "symfony/process": ">=4.4.24 <7.0", + "symfony/dotenv": ">=4.4.24 <8.0", + "symfony/process": ">=4.4.24 <8.0", "vlucas/phpdotenv": "^5.1" }, "suggest": { @@ -7087,7 +7132,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/5.0.12" + "source": "https://github.com/Codeception/Codeception/tree/5.0.13" }, "funding": [ { @@ -7095,7 +7140,7 @@ "type": "open_collective" } ], - "time": "2023-10-15T18:04:50+00:00" + "time": "2023-12-22T19:32:40+00:00" }, { "name": "codeception/lib-asserts", @@ -7153,31 +7198,31 @@ }, { "name": "codeception/lib-innerbrowser", - "version": "3.1.3", + "version": "4.0.2", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f" + "reference": "9d94838fe2be861bffbca9e9b52bbbd0fc4bbcee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", - "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/9d94838fe2be861bffbca9e9b52bbbd0fc4bbcee", + "reference": "9d94838fe2be861bffbca9e9b52bbbd0fc4bbcee", "shasum": "" }, "require": { - "codeception/codeception": "^5.0", + "codeception/codeception": "^5.0.8", "codeception/lib-web": "^1.0.1", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": "^8.0", - "phpunit/phpunit": "^9.5", - "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0", - "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0" + "php": "^8.1", + "phpunit/phpunit": "^10.0", + "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0 || ^7.0", + "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "codeception/util-universalframework": "dev-master" + "codeception/util-universalframework": "^1.0" }, "type": "library", "autoload": { @@ -7206,22 +7251,22 @@ ], "support": { "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/3.1.3" + "source": "https://github.com/Codeception/lib-innerbrowser/tree/4.0.2" }, - "time": "2022-10-03T15:33:34+00:00" + "time": "2023-12-01T11:28:22+00:00" }, { "name": "codeception/lib-web", - "version": "1.0.4", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/Codeception/lib-web.git", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c" + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-web/zipball/28cb2ed1169de18e720bec758015aadc37d8344c", - "reference": "28cb2ed1169de18e720bec758015aadc37d8344c", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/cea9d53c9cd665498632acc417c9a96bff7eb2b0", + "reference": "cea9d53c9cd665498632acc417c9a96bff7eb2b0", "shasum": "" }, "require": { @@ -7259,9 +7304,9 @@ ], "support": { "issues": "https://github.com/Codeception/lib-web/issues", - "source": "https://github.com/Codeception/lib-web/tree/1.0.4" + "source": "https://github.com/Codeception/lib-web/tree/1.0.5" }, - "time": "2023-12-01T11:38:22+00:00" + "time": "2024-01-13T11:54:18+00:00" }, { "name": "codeception/lib-xml", @@ -7372,21 +7417,22 @@ }, { "name": "codeception/module-db", - "version": "3.1.1", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/Codeception/module-db.git", - "reference": "185889230bccfc65d2c03624879ade5357ec43f9" + "reference": "5666795f745ba0cd758ee0fe2744ee0209c451bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-db/zipball/185889230bccfc65d2c03624879ade5357ec43f9", - "reference": "185889230bccfc65d2c03624879ade5357ec43f9", + "url": "https://api.github.com/repos/Codeception/module-db/zipball/5666795f745ba0cd758ee0fe2744ee0209c451bf", + "reference": "5666795f745ba0cd758ee0fe2744ee0209c451bf", "shasum": "" }, "require": { "codeception/codeception": "*@dev", "ext-json": "*", + "ext-mbstring": "*", "ext-pdo": "*", "php": "^8.0" }, @@ -7420,9 +7466,9 @@ ], "support": { "issues": "https://github.com/Codeception/module-db/issues", - "source": "https://github.com/Codeception/module-db/tree/3.1.1" + "source": "https://github.com/Codeception/module-db/tree/3.1.2" }, - "time": "2023-03-18T07:35:25+00:00" + "time": "2024-01-12T08:18:43+00:00" }, { "name": "codeception/module-doctrine2", @@ -7548,35 +7594,51 @@ }, { "name": "codeception/module-symfony", - "version": "3.1.1", + "version": "3.3.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-symfony.git", - "reference": "f758a245e7554c8deff0f0272a2be868808a34a0" + "reference": "be24b2b64759e5b4dd83ca091ecfe49c26cecc5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-symfony/zipball/f758a245e7554c8deff0f0272a2be868808a34a0", - "reference": "f758a245e7554c8deff0f0272a2be868808a34a0", + "url": "https://api.github.com/repos/Codeception/module-symfony/zipball/be24b2b64759e5b4dd83ca091ecfe49c26cecc5c", + "reference": "be24b2b64759e5b4dd83ca091ecfe49c26cecc5c", "shasum": "" }, "require": { - "codeception/codeception": "^5.0.0-RC3", + "codeception/codeception": "^5.0.8", "codeception/lib-innerbrowser": "^3.1.1 | ^4.0", "ext-json": "*", - "php": "^8.0" + "php": "^8.1" }, "require-dev": { "codeception/module-asserts": "^3.0", "codeception/module-doctrine2": "^3.0", "doctrine/orm": "^2.10", - "symfony/form": "^4.4 | ^5.0 | ^6.0", - "symfony/framework-bundle": "^4.4 | ^5.0 | ^6.0", - "symfony/http-kernel": "^4.4 | ^5.0 | ^6.0", - "symfony/mailer": "^4.4 | ^5.0 | ^6.0", - "symfony/routing": "^4.4 | ^5.0 | ^6.0", - "symfony/security-bundle": "^4.4 | ^5.0 | ^6.0", - "symfony/twig-bundle": "^4.4 | ^5.0 | ^6.0", + "symfony/browser-kit": "^5.4 | ^6.4 | ^7.0", + "symfony/cache": "^5.4 | ^6.4 | ^7.0", + "symfony/config": "^5.4 | ^6.4 | ^7.0", + "symfony/dependency-injection": "^5.4 | ^6.4 | ^7.0", + "symfony/dom-crawler": "^5.4 | ^6.4 | ^7.0", + "symfony/error-handler": "^5.4 | ^6.4 | ^7.0", + "symfony/filesystem": "^5.4 | ^6.4 | ^7.0", + "symfony/form": "^5.4 | ^6.4 | ^7.0", + "symfony/framework-bundle": "^5.4 | ^6.4 | ^7.0", + "symfony/http-foundation": "^5.4 | ^6.4 | ^7.0", + "symfony/http-kernel": "^5.4 | ^6.4 | ^7.0", + "symfony/mailer": "^5.4 | ^6.4 | ^7.0", + "symfony/mime": "^5.4 | ^6.4 | ^7.0", + "symfony/options-resolver": "^5.4 | ^6.4 | ^7.0", + "symfony/property-access": "^5.4 | ^6.4 | ^7.0", + "symfony/property-info": "^5.4 | ^6.4 | ^7.0", + "symfony/routing": "^5.4 | ^6.4 | ^7.0", + "symfony/security-bundle": "^5.4 | ^6.4 | ^7.0", + "symfony/security-core": "^5.4 | ^6.4 | ^7.0", + "symfony/security-csrf": "^5.4 | ^6.4 | ^7.0", + "symfony/security-http": "^5.4 | ^6.4 | ^7.0", + "symfony/twig-bundle": "^5.4 | ^6.4 | ^7.0", + "symfony/var-exporter": "^5.4 | ^6.4 | ^7.0", "vlucas/phpdotenv": "^4.2 | ^5.4" }, "suggest": { @@ -7610,9 +7672,9 @@ ], "support": { "issues": "https://github.com/Codeception/module-symfony/issues", - "source": "https://github.com/Codeception/module-symfony/tree/3.1.1" + "source": "https://github.com/Codeception/module-symfony/tree/3.3.0" }, - "time": "2023-02-06T07:43:26+00:00" + "time": "2024-01-11T05:45:50+00:00" }, { "name": "codeception/stub", @@ -7792,6 +7854,84 @@ ], "time": "2022-02-25T21:32:43+00:00" }, + { + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" + }, + "require-dev": { + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" + } + ], + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", + "keywords": [ + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" + }, + "time": "2023-01-05T11:28:13+00:00" + }, { "name": "doctrine/data-fixtures", "version": "1.7.0", @@ -8342,16 +8482,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.17.1", + "version": "v4.18.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", - "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999", + "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999", "shasum": "" }, "require": { @@ -8392,22 +8532,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0" }, - "time": "2023-08-13T19:53:39+00:00" + "time": "2023-12-10T21:03:43+00:00" }, { "name": "pdepend/pdepend", - "version": "2.16.0", + "version": "2.16.2", "source": { "type": "git", "url": "https://github.com/pdepend/pdepend.git", - "reference": "8dfc0c46529e2073fa97986552f80646eedac562" + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pdepend/pdepend/zipball/8dfc0c46529e2073fa97986552f80646eedac562", - "reference": "8dfc0c46529e2073fa97986552f80646eedac562", + "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58", + "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58", "shasum": "" }, "require": { @@ -8420,7 +8560,6 @@ "require-dev": { "easy-doc/easy-doc": "0.0.0|^1.2.3", "gregwar/rst": "^1.0", - "phpunit/phpunit": "^4.8.36|^5.7.27", "squizlabs/php_codesniffer": "^2.0.0" }, "bin": [ @@ -8450,7 +8589,7 @@ ], "support": { "issues": "https://github.com/pdepend/pdepend/issues", - "source": "https://github.com/pdepend/pdepend/tree/2.16.0" + "source": "https://github.com/pdepend/pdepend/tree/2.16.2" }, "funding": [ { @@ -8458,7 +8597,7 @@ "type": "tidelift" } ], - "time": "2023-11-29T08:52:35+00:00" + "time": "2023-12-17T18:09:59+00:00" }, { "name": "phar-io/manifest", @@ -8573,22 +8712,22 @@ }, { "name": "phpmd/phpmd", - "version": "2.14.1", + "version": "2.15.0", "source": { "type": "git", "url": "https://github.com/phpmd/phpmd.git", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8" + "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpmd/phpmd/zipball/442fc2c34edcd5198b442d8647c7f0aec3afabe8", - "reference": "442fc2c34edcd5198b442d8647c7f0aec3afabe8", + "url": "https://api.github.com/repos/phpmd/phpmd/zipball/74a1f56e33afad4128b886e334093e98e1b5e7c0", + "reference": "74a1f56e33afad4128b886e334093e98e1b5e7c0", "shasum": "" }, "require": { "composer/xdebug-handler": "^1.0 || ^2.0 || ^3.0", "ext-xml": "*", - "pdepend/pdepend": "^2.15.1", + "pdepend/pdepend": "^2.16.1", "php": ">=5.3.9" }, "require-dev": { @@ -8597,7 +8736,6 @@ "ext-simplexml": "*", "gregwar/rst": "^1.0", "mikey179/vfsstream": "^1.6.8", - "phpunit/phpunit": "^4.8.36 || ^5.7.27", "squizlabs/php_codesniffer": "^2.9.2 || ^3.7.2" }, "bin": [ @@ -8645,7 +8783,7 @@ "support": { "irc": "irc://irc.freenode.org/phpmd", "issues": "https://github.com/phpmd/phpmd/issues", - "source": "https://github.com/phpmd/phpmd/tree/2.14.1" + "source": "https://github.com/phpmd/phpmd/tree/2.15.0" }, "funding": [ { @@ -8653,7 +8791,7 @@ "type": "tidelift" } ], - "time": "2023-09-28T13:07:44+00:00" + "time": "2023-12-11T08:22:20+00:00" }, { "name": "phpspec/prophecy", @@ -8778,16 +8916,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.10.48", + "version": "1.10.56", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6" + "reference": "27816a01aea996191ee14d010f325434c0ee76fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", - "reference": "087ed4b5f4a7a6e8f3bbdfbfe98ce5c181380bc6", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/27816a01aea996191ee14d010f325434c0ee76fa", + "reference": "27816a01aea996191ee14d010f325434c0ee76fa", "shasum": "" }, "require": { @@ -8836,39 +8974,91 @@ "type": "tidelift" } ], - "time": "2023-12-08T14:34:28+00:00" + "time": "2024-01-15T10:43:00+00:00" + }, + { + "name": "phpstan/phpstan-phpunit", + "version": "1.3.15", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", + "reference": "70ecacc64fe8090d8d2a33db5a51fe8e88acd93a", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPUnit extensions and rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-phpunit/issues", + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.15" + }, + "time": "2023-10-09T18:58:39+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.29", + "version": "10.1.11", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76" + "reference": "78c3b7625965c2513ee96569a4dbb62601784145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/6a3a87ac2bbe33b25042753df8195ba4aa534c76", - "reference": "6a3a87ac2bbe33b25042753df8195ba4aa534c76", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", + "reference": "78c3b7625965c2513ee96569a4dbb62601784145", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-text-template": "^3.0", + "sebastian/code-unit-reverse-lookup": "^3.0", + "sebastian/complexity": "^3.0", + "sebastian/environment": "^6.0", + "sebastian/lines-of-code": "^2.0", + "sebastian/version": "^4.0", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -8877,7 +9067,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "10.1-dev" } }, "autoload": { @@ -8906,7 +9096,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.29" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.11" }, "funding": [ { @@ -8914,32 +9104,32 @@ "type": "github" } ], - "time": "2023-09-19T04:57:46+00:00" + "time": "2023-12-21T15:38:30+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8966,7 +9156,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -8974,28 +9165,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-pcntl": "*" @@ -9003,7 +9194,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -9029,7 +9220,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" }, "funding": [ { @@ -9037,32 +9228,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2023-02-03T06:56:09+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -9088,7 +9279,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -9096,32 +9288,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -9147,7 +9339,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" }, "funding": [ { @@ -9155,24 +9347,23 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2023-02-03T06:57:52+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.15", + "version": "10.5.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1" + "reference": "08f4fa74d5fbfff1ef22abffee47aaedcaea227e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/05017b80304e0eb3f31d90194a563fd53a6021f1", - "reference": "05017b80304e0eb3f31d90194a563fd53a6021f1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/08f4fa74d5fbfff1ef22abffee47aaedcaea227e", + "reference": "08f4fa74d5fbfff1ef22abffee47aaedcaea227e", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -9182,27 +9373,26 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.28", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", - "sebastian/version": "^3.0.2" + "php": ">=8.1", + "phpunit/php-code-coverage": "^10.1.5", + "phpunit/php-file-iterator": "^4.0", + "phpunit/php-invoker": "^4.0", + "phpunit/php-text-template": "^3.0", + "phpunit/php-timer": "^6.0", + "sebastian/cli-parser": "^2.0", + "sebastian/code-unit": "^2.0", + "sebastian/comparator": "^5.0", + "sebastian/diff": "^5.0", + "sebastian/environment": "^6.0", + "sebastian/exporter": "^5.1", + "sebastian/global-state": "^6.0.1", + "sebastian/object-enumerator": "^5.0", + "sebastian/recursion-context": "^5.0", + "sebastian/type": "^4.0", + "sebastian/version": "^4.0" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -9210,7 +9400,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "10.5-dev" } }, "autoload": { @@ -9242,7 +9432,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.15" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.8" }, "funding": [ { @@ -9258,7 +9448,7 @@ "type": "tidelift" } ], - "time": "2023-12-01T16:55:19+00:00" + "time": "2024-01-19T07:07:27+00:00" }, { "name": "psr/http-factory", @@ -9370,25 +9560,25 @@ }, { "name": "psy/psysh", - "version": "v0.11.22", + "version": "v0.12.0", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b" + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b", - "reference": "128fa1b608be651999ed9789c95e6e2a31b5802b", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/750bf031a48fd07c673dbe3f11f72362ea306d0d", + "reference": "750bf031a48fd07c673dbe3f11f72362ea306d0d", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "^4.0 || ^3.1", - "php": "^8.0 || ^7.0.8", - "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", - "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" }, "conflict": { "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" @@ -9399,8 +9589,7 @@ "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", - "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." }, "bin": [ "bin/psysh" @@ -9408,7 +9597,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-0.11": "0.11.x-dev" + "dev-main": "0.12.x-dev" }, "bamarni-bin": { "bin-links": false, @@ -9444,9 +9633,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.22" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.0" }, - "time": "2023-10-14T21:56:36+00:00" + "time": "2023-12-20T15:28:09+00:00" }, { "name": "ralouphie/getallheaders", @@ -9498,12 +9687,12 @@ "source": { "type": "git", "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "29a3b9cc1fea4208522caed1bbe9f6ed6acd0015" + "reference": "f81bd7cb90f5f30d3b246e342843ae905947158f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/29a3b9cc1fea4208522caed1bbe9f6ed6acd0015", - "reference": "29a3b9cc1fea4208522caed1bbe9f6ed6acd0015", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/f81bd7cb90f5f30d3b246e342843ae905947158f", + "reference": "f81bd7cb90f5f30d3b246e342843ae905947158f", "shasum": "" }, "conflict": { @@ -9535,9 +9724,9 @@ "athlon1600/php-proxy": "<=5.1", "athlon1600/php-proxy-app": "<=3", "austintoddj/canvas": "<=3.4.2", - "automad/automad": "<1.8", + "automad/automad": "<=1.10.9", "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": ">=3,<3.2.1", + "aws/aws-sdk-php": "<3.288.1", "azuracast/azuracast": "<0.18.3", "backdrop/backdrop": "<1.24.2", "backpack/crud": "<3.4.9", @@ -9577,6 +9766,7 @@ "cesnet/simplesamlphp-module-proxystatistics": "<3.1", "chriskacerguis/codeigniter-restserver": "<=2.7.1", "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.17", "cockpit-hq/cockpit": "<=2.6.3", "codeception/codeception": "<3.1.3|>=4,<4.1.22", "codeigniter/framework": "<3.1.9", @@ -9584,7 +9774,7 @@ "codeigniter4/shield": "<1.0.0.0-beta8", "codiad/codiad": "<=2.8.4", "composer/composer": "<1.10.27|>=2,<2.2.22|>=2.3,<2.6.4", - "concrete5/concrete5": "<9.2.2", + "concrete5/concrete5": "<9.2.3", "concrete5/core": "<8.5.8|>=9,<9.1", "contao-components/mediaelement": ">=2.14.2,<2.21.1", "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", @@ -9592,8 +9782,9 @@ "contao/core-bundle": "<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", "contao/listing-bundle": ">=4,<4.4.8", "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", "cosenary/instagram": "<=2.3", - "craftcms/cms": "<=4.4.14", + "craftcms/cms": "<=4.5.10", "croogo/croogo": "<4", "cuyz/valinor": "<0.12", "czproject/git-php": "<4.0.3", @@ -9606,7 +9797,7 @@ "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1", "desperado/xml-bundle": "<=0.1.7", - "directmailteam/direct-mail": "<5.2.4", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", "doctrine/annotations": "<1.2.7", "doctrine/cache": "<1.3.2|>=1.4,<1.4.2", "doctrine/common": "<2.4.3|>=2.5,<2.5.1", @@ -9617,12 +9808,13 @@ "doctrine/mongodb-odm-bundle": "<3.0.1", "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", "dolibarr/dolibarr": "<18.0.2", - "dompdf/dompdf": "<2.0.2|==2.0.2", + "dompdf/dompdf": "<2.0.4", "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": "<9.4.14|>=9.5,<9.5.8|>=10,<10.0.8", + "drupal/core": "<9.5.11|>=10,<10.0.11|>=10.1,<10.1.4", "drupal/drupal": ">=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", "duncanmcclean/guest-entries": "<3.1.2", "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4", "ecodev/newsletter": "<=4", "ectouch/ectouch": "<=2.7.2", "elefant/cms": "<2.0.7", @@ -9650,7 +9842,7 @@ "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", "ezsystems/ezplatform-user": ">=1,<1.0.1", "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.06,<=2019.03.5.1", "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", "ezyang/htmlpurifier": "<4.1.1", @@ -9663,8 +9855,8 @@ "firebase/php-jwt": "<6", "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8", - "flarum/framework": "<1.8", + "flarum/core": "<1.8.5", + "flarum/framework": "<1.8.5", "flarum/mentions": "<1.6.3", "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", "flarum/tags": "<=0.1.0.0-beta13", @@ -9684,7 +9876,7 @@ "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1", - "froxlor/froxlor": "<2.1.0.0-beta1", + "froxlor/froxlor": "<=2.1.1", "fuel/core": "<1.8.1", "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", "gaoming13/wechat-php-sdk": "<=1.10.2", @@ -9694,7 +9886,7 @@ "getkirby/kirby": "<=2.5.12", "getkirby/panel": "<2.5.14", "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.11.4", + "gilacms/gila": "<=1.15.4", "gleez/cms": "<=1.2|==2", "globalpayments/php-sdk": "<2", "gogentooss/samlbase": "<1.2.7", @@ -9702,7 +9894,7 @@ "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", "gree/jose": "<2.2.1", "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6", + "grumpydictator/firefly-iii": "<6.1.1", "gugoan/economizzer": "<=0.9.0.0-beta1", "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", @@ -9730,7 +9922,8 @@ "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", "impresscms/impresscms": "<=1.4.5", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.2", + "impresspages/impresspages": "<=1.0.12", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", "in2code/ipandlanguageredirect": "<5.1.2", "in2code/lux": "<17.6.1|>=18,<24.0.2", "innologi/typo3-appointments": "<2.0.6", @@ -9753,11 +9946,12 @@ "joyqi/hyper-down": "<=2.4.27", "jsdecena/laracom": "<2.0.9", "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4", "kazist/phpwhois": "<=4.2.6", "kelvinmo/simplexrd": "<3.1.1", "kevinpapst/kimai2": "<1.16.7", "khodakhah/nodcms": "<=3", - "kimai/kimai": "<=2.1", + "kimai/kimai": "<2.1", "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", "klaviyo/magento2-extension": ">=1,<3", "knplabs/knp-snappy": "<=1.4.2", @@ -9786,17 +9980,21 @@ "lms/routes": "<2.1.1", "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "<=2.4", + "magento/community-edition": "<2.4.3.0-patch3|>=2.4.4,<2.4.5", + "magento/core": "<=1.9.4.5", "magento/magento1ce": "<1.9.4.3-dev", "magento/magento1ee": ">=1,<1.14.4.3-dev", "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", + "magneto/core": "<1.9.4.4-dev", "maikuolan/phpmussel": ">=1,<1.6", + "mainwp/mainwp": "<=4.4.3.3", "mantisbt/mantisbt": "<=2.25.7", "marcwillmann/turn": "<0.3.3", "matyhtf/framework": "<3.0.6", "mautic/core": "<4.3", "mediawiki/core": ">=1.27,<1.27.6|>=1.29,<1.29.3|>=1.30,<1.30.2|>=1.31,<1.31.9|>=1.32,<1.32.6|>=1.32.99,<1.33.3|>=1.33.99,<1.34.3|>=1.34.99,<1.35", "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", "melisplatform/melis-asset-manager": "<5.0.1", "melisplatform/melis-cms": "<5.0.1", "melisplatform/melis-front": "<5.0.1", @@ -9826,8 +10024,8 @@ "neorazorx/facturascripts": "<2022.04", "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/neos-ui": "<=8.3.3", "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", @@ -9874,8 +10072,10 @@ "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", "personnummer/personnummer": "<3.0.2", "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.1", "php-mod/curl": "<2.3.2", "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpems/phpems": ">=6,<=6.1.3", "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", "phpmailer/phpmailer": "<6.5", "phpmussel/phpmussel": ">=1,<1.6", @@ -9885,19 +10085,21 @@ "phpoffice/phpspreadsheet": "<1.16", "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34", "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.2.5", + "phpsysinfo/phpsysinfo": "<3.4.3", "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5,<5.6.3", "phpwhois/phpwhois": "<=4.2.5", "phpxmlrpc/extras": "<0.6.1", "phpxmlrpc/phpxmlrpc": "<4.9.2", "pi/pi": "<=2.5", "pimcore/admin-ui-classic-bundle": "<1.2.2", - "pimcore/customer-management-framework-bundle": "<3.4.2", + "pimcore/customer-management-framework-bundle": "<4.0.6", "pimcore/data-hub": "<1.2.4", "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", "pimcore/perspective-editor": "<1.5.1", "pimcore/pimcore": "<11.1.1", "pixelfed/pixelfed": "<=0.11.4", + "plotly/plotly.js": "<2.25.2", "pocketmine/bedrock-protocol": "<8.0.2", "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", @@ -9907,7 +10109,7 @@ "prestashop/blockwishlist": ">=2,<2.1.1", "prestashop/contactform": ">=1.0.1,<4.3", "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.2", + "prestashop/prestashop": "<8.1.3", "prestashop/productcomments": "<5.0.2", "prestashop/ps_emailsubscription": "<2.6.1", "prestashop/ps_facetedsearch": "<3.4.1", @@ -9946,8 +10148,8 @@ "serluck/phpwhois": "<=4.2.6", "sfroemken/url_redirect": "<=1.2.1", "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.4.20", - "shopware/platform": "<=6.4.20", + "shopware/core": "<=6.5.7.3", + "shopware/platform": "<=6.5.7.3", "shopware/production": "<=6.3.5.2", "shopware/shopware": "<=5.7.17", "shopware/storefront": "<=6.4.8.1", @@ -10048,6 +10250,7 @@ "symphonycms/symphony-2": "<2.6.4", "t3/dce": "<0.11.5|>=2.2,<2.6.2", "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", "tastyigniter/tastyigniter": "<3.3", "tcg/voyager": "<=1.4", "tecnickcom/tcpdf": "<6.2.22", @@ -10072,7 +10275,7 @@ "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", "typo3/cms-backend": ">=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<=8.7.54|>=9,<=9.5.43|>=10,<=10.4.40|>=11,<=11.5.32|>=12,<=12.4.7", + "typo3/cms-core": "<8.7.55|>=9,<9.5.44|>=10,<10.4.41|>=11,<11.5.33|>=12,<12.4.8", "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", "typo3/cms-install": ">=12.2,<12.4.8", @@ -10090,7 +10293,7 @@ "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", "uvdesk/community-skeleton": "<=1.1.1", "vanilla/safecurl": "<0.9.2", - "verot/class.upload.php": "<=1.0.3|>=2,<=2.0.4", + "verot/class.upload.php": "<=2.1.6", "vova07/yii2-fileapi-widget": "<0.1.9", "vrana/adminer": "<4.8.1", "waldhacker/hcaptcha": "<2.1.2", @@ -10106,6 +10309,8 @@ "wikibase/wikibase": "<=1.39.3", "wikimedia/parsoid": "<0.12.2", "willdurand/js-translation-bundle": "<2.1.1", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-system-module": "<1.2.4", "wintercms/winter": "<1.2.3", "woocommerce/woocommerce": "<6.6", "wp-cli/wp-cli": "<2.5", @@ -10121,6 +10326,7 @@ "yii2mod/yii2-cms": "<1.9.2", "yiisoft/yii": "<1.1.29", "yiisoft/yii2": "<2.0.38", + "yiisoft/yii2-authclient": "<2.2.15", "yiisoft/yii2-bootstrap": "<2.0.4", "yiisoft/yii2-dev": "<2.0.43", "yiisoft/yii2-elasticsearch": "<2.0.5", @@ -10204,32 +10410,32 @@ "type": "tidelift" } ], - "time": "2023-12-08T22:04:07+00:00" + "time": "2024-01-17T21:04:22+00:00" }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", + "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -10252,7 +10458,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" }, "funding": [ { @@ -10260,32 +10466,32 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2023-02-03T06:58:15+00:00" }, { "name": "sebastian/code-unit", - "version": "1.0.8", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", + "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -10308,7 +10514,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" }, "funding": [ { @@ -10316,32 +10522,32 @@ "type": "github" } ], - "time": "2020-10-26T13:08:54+00:00" + "time": "2023-02-03T06:58:43+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -10363,7 +10569,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" }, "funding": [ { @@ -10371,34 +10577,36 @@ "type": "github" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2023-02-03T06:59:15+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/diff": "^5.0", + "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -10437,7 +10645,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -10445,33 +10654,33 @@ "type": "github" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "68ff824baeae169ec9f2137158ee529584553799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", + "reference": "68ff824baeae169ec9f2137158ee529584553799", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.2-dev" } }, "autoload": { @@ -10494,7 +10703,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" }, "funding": [ { @@ -10502,33 +10712,33 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-21T08:37:17+00:00" }, { "name": "sebastian/diff", - "version": "4.0.5", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", - "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3", + "phpunit/phpunit": "^10.0", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -10560,7 +10770,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" }, "funding": [ { @@ -10568,27 +10779,27 @@ "type": "github" } ], - "time": "2023-05-07T05:35:17+00:00" + "time": "2023-12-22T10:55:06+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", + "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "suggest": { "ext-posix": "*" @@ -10596,7 +10807,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -10615,7 +10826,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -10623,7 +10834,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" }, "funding": [ { @@ -10631,34 +10843,34 @@ "type": "github" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2023-04-11T05:39:26+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.1", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -10700,7 +10912,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -10708,38 +10921,35 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.6", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bde739e7565280bda77be70044ac1047bc007e34" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", - "reference": "bde739e7565280bda77be70044ac1047bc007e34", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -10764,7 +10974,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -10772,33 +10983,33 @@ "type": "github" } ], - "time": "2023-08-02T09:26:13+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", + "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "2.0-dev" } }, "autoload": { @@ -10821,7 +11032,8 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" }, "funding": [ { @@ -10829,34 +11041,34 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-21T08:38:20+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", + "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.1", + "sebastian/object-reflector": "^3.0", + "sebastian/recursion-context": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -10878,7 +11090,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" }, "funding": [ { @@ -10886,32 +11098,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2023-02-03T07:08:32+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", + "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -10933,7 +11145,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" }, "funding": [ { @@ -10941,32 +11153,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2023-02-03T07:06:18+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "05909fb5bc7df4c52992396d0116aed689f93712" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", + "reference": "05909fb5bc7df4c52992396d0116aed689f93712", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -10996,7 +11208,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" }, "funding": [ { @@ -11004,32 +11216,32 @@ "type": "github" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2023-02-03T07:05:40+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.3", + "name": "sebastian/type", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", + "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.1" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^10.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -11044,14 +11256,15 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" }, "funding": [ { @@ -11059,32 +11272,29 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2023-02-03T07:10:45+00:00" }, { - "name": "sebastian/type", - "version": "3.2.1", + "name": "sebastian/version", + "version": "4.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -11103,11 +11313,11 @@ "role": "lead" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" }, "funding": [ { @@ -11115,60 +11325,72 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2023-02-07T11:34:05+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "slevomat/coding-standard", + "version": "8.14.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/slevomat/coding-standard.git", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/fea1fd6f137cc84f9cba0ae30d549615dbc6a926", + "reference": "fea1fd6f137cc84f9cba0ae30d549615dbc6a926", "shasum": "" }, "require": { - "php": ">=7.3" + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpdoc-parser": "^1.23.1", + "squizlabs/php_codesniffer": "^3.7.1" }, - "type": "library", + "require-dev": { + "phing/phing": "2.17.4", + "php-parallel-lint/php-parallel-lint": "1.3.2", + "phpstan/phpstan": "1.10.37", + "phpstan/phpstan-deprecation-rules": "1.1.4", + "phpstan/phpstan-phpunit": "1.3.14", + "phpstan/phpstan-strict-rules": "1.5.1", + "phpunit/phpunit": "8.5.21|9.6.8|10.3.5" + }, + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "8.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "SlevomatCodingStandard\\": "SlevomatCodingStandard/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", + "keywords": [ + "dev", + "phpcs" ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + "issues": "https://github.com/slevomat/coding-standard/issues", + "source": "https://github.com/slevomat/coding-standard/tree/8.14.1" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/kukulich", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", + "type": "tidelift" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2023-10-08T07:28:08+00:00" }, { "name": "softcreatr/jsonpath", @@ -11240,16 +11462,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.8.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7" + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5805f7a4e4958dbb5e944ef1e6edae0a303765e7", - "reference": "5805f7a4e4958dbb5e944ef1e6edae0a303765e7", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/14f5fff1e64118595db5408e946f3a22c75807f7", + "reference": "14f5fff1e64118595db5408e946f3a22c75807f7", "shasum": "" }, "require": { @@ -11259,11 +11481,11 @@ "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, "bin": [ - "bin/phpcs", - "bin/phpcbf" + "bin/phpcbf", + "bin/phpcs" ], "type": "library", "extra": { @@ -11316,7 +11538,7 @@ "type": "open_collective" } ], - "time": "2023-12-08T12:32:31+00:00" + "time": "2024-01-11T20:47:48+00:00" }, { "name": "symfony/browser-kit", @@ -11612,16 +11834,16 @@ }, { "name": "symfony/phpunit-bridge", - "version": "v6.4.1", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95" + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/cca5373a41d45edbeaf38b7b67f376da2205ff95", - "reference": "cca5373a41d45edbeaf38b7b67f376da2205ff95", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/bd0455b7888e4adac29cf175d819c51f88fed942", + "reference": "bd0455b7888e4adac29cf175d819c51f88fed942", "shasum": "" }, "require": { @@ -11673,7 +11895,7 @@ "description": "Provides utilities for PHPUnit, especially user deprecation notices management", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.1" + "source": "https://github.com/symfony/phpunit-bridge/tree/v6.4.2" }, "funding": [ { @@ -11689,20 +11911,20 @@ "type": "tidelift" } ], - "time": "2023-12-01T09:25:07+00:00" + "time": "2023-12-19T09:12:31+00:00" }, { "name": "symfony/process", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa" + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/191703b1566d97a5425dc969e4350d32b8ef17aa", - "reference": "191703b1566d97a5425dc969e4350d32b8ef17aa", + "url": "https://api.github.com/repos/symfony/process/zipball/c4b1ef0bc80533d87a2e969806172f1c2a980241", + "reference": "c4b1ef0bc80533d87a2e969806172f1c2a980241", "shasum": "" }, "require": { @@ -11734,7 +11956,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.0" + "source": "https://github.com/symfony/process/tree/v6.4.2" }, "funding": [ { @@ -11750,20 +11972,20 @@ "type": "tidelift" } ], - "time": "2023-11-17T21:06:49+00:00" + "time": "2023-12-22T16:42:54+00:00" }, { "name": "symfony/twig-bridge", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf" + "reference": "97af829e4733125ee70e806694d56165c60b4ee1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", - "reference": "142bc3ad4a61d7eedf7cc21d8ef2bd8a8e7417bf", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/97af829e4733125ee70e806694d56165c60b4ee1", + "reference": "97af829e4733125ee70e806694d56165c60b4ee1", "shasum": "" }, "require": { @@ -11843,7 +12065,7 @@ "description": "Provides integration for Twig with various Symfony components", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/twig-bridge/tree/v6.4.0" + "source": "https://github.com/symfony/twig-bridge/tree/v6.4.2" }, "funding": [ { @@ -11859,7 +12081,7 @@ "type": "tidelift" } ], - "time": "2023-11-25T08:25:13+00:00" + "time": "2023-12-15T12:36:48+00:00" }, { "name": "symfony/twig-bundle", @@ -11947,16 +12169,16 @@ }, { "name": "symfony/web-profiler-bundle", - "version": "v6.4.0", + "version": "v6.4.2", "source": { "type": "git", "url": "https://github.com/symfony/web-profiler-bundle.git", - "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b" + "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/14752d3fb77c3c69b6cee7c03c06e2d6494a196b", - "reference": "14752d3fb77c3c69b6cee7c03c06e2d6494a196b", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/38462d16856740ec0d1ba2cb902eebf09100dde2", + "reference": "38462d16856740ec0d1ba2cb902eebf09100dde2", "shasum": "" }, "require": { @@ -12009,7 +12231,7 @@ "dev" ], "support": { - "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.0" + "source": "https://github.com/symfony/web-profiler-bundle/tree/v6.4.2" }, "funding": [ { @@ -12025,7 +12247,7 @@ "type": "tidelift" } ], - "time": "2023-11-07T14:57:07+00:00" + "time": "2023-12-27T08:18:35+00:00" }, { "name": "theseer/tokenizer", @@ -12158,7 +12380,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.2", + "php": "^8.3", "ext-ctype": "*", "ext-iconv": "*", "ext-json": "*", diff --git a/phpcs.xml.dist b/phpcs.xml.dist index 6f251d8..ee180a1 100644 --- a/phpcs.xml.dist +++ b/phpcs.xml.dist @@ -1,11 +1,12 @@ - - - tests/_support + + + + + tests/_support/* diff --git a/phpmd.xml b/phpmd.xml new file mode 100644 index 0000000..b2f31f9 --- /dev/null +++ b/phpmd.xml @@ -0,0 +1,12 @@ + + + + Arty ruleset + + + + diff --git a/phpstan.dist.neon b/phpstan.dist.neon index 025dbea..66d0883 100644 --- a/phpstan.dist.neon +++ b/phpstan.dist.neon @@ -1,5 +1,6 @@ includes: - vendor/jangregor/phpstan-prophecy/extension.neon + - vendor/arty/php-coding-standard/lib/phpstan/phpstan.neon parameters: bootstrapFiles: - tests/_support/_generated/ApiTesterActions.php diff --git a/phpstan.neon b/phpstan.neon index 025dbea..6886317 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,5 +1,6 @@ includes: - vendor/jangregor/phpstan-prophecy/extension.neon + - vendor/arty/php-coding-standard/lib/phpstan/phpstan.neon parameters: bootstrapFiles: - tests/_support/_generated/ApiTesterActions.php @@ -10,5 +11,3 @@ parameters: checkGenericClassInNonGenericObjectType: false ignoreErrors: - '#^Cannot call method [a-z]+\(\) on Psr\\Log\\LoggerInterface\|null\.$#' - - '#^Method App\\Infrastructure\\Http\\Cookie\\CookieProvider\:\:getJwtCookie\(\) has parameter \$claim with no value type specified in iterable type array\.$#' - - '#^Method [a-zA-Z\\\:()]+ return type has no value type specified in iterable type iterable\.$#' diff --git a/src/Api/Controller/MissionController.php b/src/Api/Controller/MissionController.php index cd45906..70f153c 100644 --- a/src/Api/Controller/MissionController.php +++ b/src/Api/Controller/MissionController.php @@ -20,7 +20,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; -use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Http\Attribute\IsGranted; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; diff --git a/src/Api/Controller/PlayerController.php b/src/Api/Controller/PlayerController.php index 36cd7a5..d033024 100644 --- a/src/Api/Controller/PlayerController.php +++ b/src/Api/Controller/PlayerController.php @@ -32,7 +32,7 @@ use Symfony\Component\HttpKernel\Attribute\MapRequestPayload; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; -use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Http\Attribute\IsGranted; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer; @@ -197,6 +197,7 @@ public function deletePlayer(Player $player): JsonResponse if ($room instanceof Room) { $this->roomStatusTransitionUseCase->executeTransition($room, Room::ENDED); } + $this->hub->publish( sprintf('room/%s', $room), $this->serializer->serialize((object) $room, [AbstractNormalizer::GROUPS => 'publish-mercure']), diff --git a/src/Api/Controller/RoomController.php b/src/Api/Controller/RoomController.php index e357289..47c391d 100644 --- a/src/Api/Controller/RoomController.php +++ b/src/Api/Controller/RoomController.php @@ -22,7 +22,7 @@ use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; -use Symfony\Component\Routing\Annotation\Route; +use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Security\Http\Attribute\IsGranted; use Symfony\Component\Serializer\Normalizer\AbstractNormalizer; use Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer; diff --git a/src/Api/Exception/KillerBadRequestHttpException.php b/src/Api/Exception/KillerBadRequestHttpException.php index bec3a16..bc5a2c8 100644 --- a/src/Api/Exception/KillerBadRequestHttpException.php +++ b/src/Api/Exception/KillerBadRequestHttpException.php @@ -6,8 +6,7 @@ class KillerBadRequestHttpException extends KillerHttpException { - /** @param array $headers */ - public function __construct(string $message = '', \Throwable $previous = null, int $code = 0, array $headers = []) + public function __construct(string $message = '', ?\Throwable $previous = null, int $code = 0, array $headers = []) { parent::__construct(400, $message, $previous, $headers, $code); } diff --git a/src/Application/Specification/Room/EnoughMissionInRoomSpecification.php b/src/Application/Specification/Room/EnoughMissionInRoomSpecification.php index 122cf5a..9d7fcff 100644 --- a/src/Application/Specification/Room/EnoughMissionInRoomSpecification.php +++ b/src/Application/Specification/Room/EnoughMissionInRoomSpecification.php @@ -14,8 +14,10 @@ public function __construct(private readonly MissionRepository $missionRepositor { } - // There must be at least as much mission as players. - // Also, at least 2 players must have added missions. + /** + * There must be at least as much mission as players. + * Also, at least 2 players must have added missions + */ public function isSatisfiedBy(Room $room): bool { $players = $room->getAlivePlayers(); diff --git a/src/Application/Specification/Room/EnoughPlayerInRoomSpecification.php b/src/Application/Specification/Room/EnoughPlayerInRoomSpecification.php index f20ff1b..b469586 100644 --- a/src/Application/Specification/Room/EnoughPlayerInRoomSpecification.php +++ b/src/Application/Specification/Room/EnoughPlayerInRoomSpecification.php @@ -9,7 +9,9 @@ class EnoughPlayerInRoomSpecification implements RoomSpecification { - // 3 players at least are needed in order to start the game + /** + * 3 players at least are needed in order to start the game + */ public function isSatisfiedBy(Room $room): bool { $players = $room->getAlivePlayers(); diff --git a/src/Application/UseCase/Room/DispatchMissionsAndTargetsUseCase.php b/src/Application/UseCase/Room/DispatchMissionsAndTargetsUseCase.php index 2e45af2..099a230 100644 --- a/src/Application/UseCase/Room/DispatchMissionsAndTargetsUseCase.php +++ b/src/Application/UseCase/Room/DispatchMissionsAndTargetsUseCase.php @@ -56,8 +56,8 @@ public function execute(Room $room): void usort( $players, - static fn (Player $playerA, Player $playerB) => - \count($playerA->getAuthoredMissionsInRoom()) <=> \count($playerB->getAuthoredMissionsInRoom()), + static fn (Player $playerA, Player $playerB) => \count($playerA->getAuthoredMissionsInRoom()) + <=> \count($playerB->getAuthoredMissionsInRoom()), ); // Let's assign missions. diff --git a/src/Application/UseCase/Room/RoomChangeAdminUseCase.php b/src/Application/UseCase/Room/RoomChangeAdminUseCase.php index 7b38a5c..a650263 100644 --- a/src/Application/UseCase/Room/RoomChangeAdminUseCase.php +++ b/src/Application/UseCase/Room/RoomChangeAdminUseCase.php @@ -15,7 +15,7 @@ public function __construct(private PersistenceAdapterInterface $persistenceAdap { } - public function execute(Room $room): void + public function execute(Room $room, ?Player $newAdmin = null): void { /** @var ?Player $admin */ $admin = $room->getAdmin(); @@ -25,15 +25,33 @@ public function execute(Room $room): void return; } + if ($newAdmin) { + $player = array_filter($playersInRoom, static fn (Player $p) => $p->getName() === $newAdmin->getName()); + + if (!$player) { + throw new \InvalidArgumentException('Invalid new admin player'); + } + + $this->saveNewAdmin($room, $newAdmin); + + return; + } + /** @var Player[] $eligibleAdmins */ $eligibleAdmins = array_filter( $playersInRoom, - static fn(Player $playerRoom) => $playerRoom->getId() !== $admin?->getId() + static fn (Player $playerRoom) => $playerRoom->getId() !== $admin?->getId(), ); shuffle($eligibleAdmins); $newAdmin = array_values($eligibleAdmins)[0] ?? null; + + $this->saveNewAdmin($room, $newAdmin); + } + + private function saveNewAdmin(Room $room, ?Player $newAdmin = null): void + { $room->setAdmin($newAdmin); $newAdmin?->setRoles(['ROLE_ADMIN']); diff --git a/src/Command/ChangeRoomAdminCommand.php b/src/Command/ChangeRoomAdminCommand.php new file mode 100644 index 0000000..5c691f4 --- /dev/null +++ b/src/Command/ChangeRoomAdminCommand.php @@ -0,0 +1,83 @@ +setHelp('This command helps changing the admin of a room.'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + /** @var QuestionHelper $helper */ + $helper = $this->getHelper('question'); + + $roomCodeQuestion = new Question('What is the room code: ', 'XXXXX'); + $playerNameQuestion = new Question('What is the new Admin player name: ', 'Arty'); + + /** @var string $roomCode */ + $roomCode = $helper->ask($input, $output, $roomCodeQuestion); + /** @var string $newAdminName */ + $newAdminName = $helper->ask($input, $output, $playerNameQuestion); + + /** @var Room $room */ + $room = $this->roomRepository->find($roomCode); + + if (!$room instanceof Room) { + $output->writeln('Room not found.'); + + return Command::FAILURE; + } + + $newAdmin = array_values( + array_filter( + $room->getPlayers()->toArray(), + static fn (Player $player) => $player->getName() === $newAdminName, + ), + ); + + if (\count($newAdmin) === 0 || !$newAdmin[0] instanceof Player) { + $output->writeln(sprintf('Player %s not found in this room', $newAdminName)); + + return Command::FAILURE; + } + + if ($newAdmin[0] === $room->getAdmin()) { + $output->writeln(sprintf('Player %s is already the admin of this room', $newAdminName)); + + return Command::SUCCESS; + } + + $this->roomChangeAdminUseCase->execute($room, $newAdmin[0]); + + $this->persistenceAdapter->flush(); + + return Command::SUCCESS; + } +} diff --git a/src/Command/ClearMissionsCommand.php b/src/Command/ClearMissionsCommand.php index 12311f8..45677bf 100644 --- a/src/Command/ClearMissionsCommand.php +++ b/src/Command/ClearMissionsCommand.php @@ -17,7 +17,7 @@ class ClearMissionsCommand extends Command public function __construct( private readonly MissionRepository $missionRepository, private readonly PersistenceAdapterInterface $persistenceAdapter, - string $name = null, + ?string $name = null, ) { parent::__construct($name); } diff --git a/src/Command/ClearRoomsCommand.php b/src/Command/ClearRoomsCommand.php index e4b66a3..4c90ce6 100644 --- a/src/Command/ClearRoomsCommand.php +++ b/src/Command/ClearRoomsCommand.php @@ -18,7 +18,7 @@ class ClearRoomsCommand extends Command public function __construct( private readonly RoomRepository $roomRepository, private readonly PersistenceAdapterInterface $persistenceAdapter, - string $name = null, + ?string $name = null, ) { parent::__construct($name); } diff --git a/src/Command/KillPlayerInRoomCommand.php b/src/Command/KillPlayerInRoomCommand.php new file mode 100644 index 0000000..5bc6a84 --- /dev/null +++ b/src/Command/KillPlayerInRoomCommand.php @@ -0,0 +1,88 @@ +setHelp('This command kills a player in a given room. Arguments : player name & room code'); + } + + protected function execute(InputInterface $input, OutputInterface $output): int + { + /** @var QuestionHelper $helper */ + $helper = $this->getHelper('question'); + + $roomCodeQuestion = new Question('What is the room code: ', 'XXXXX'); + $playerNameQuestion = new Question('What is the player name: ', 'Arty'); + + /** @var string $roomCode */ + $roomCode = $helper->ask($input, $output, $roomCodeQuestion); + /** @var string $playerName */ + $playerName = $helper->ask($input, $output, $playerNameQuestion); + + /** @var Room $room */ + $room = $this->roomRepository->find($roomCode); + + if (!$room instanceof Room) { + $output->writeln('Room not found.'); + + return Command::FAILURE; + } + + if ($room->getStatus() !== Room::IN_GAME) { + $output->writeln('Room must be IN_GAME'); + + return Command::FAILURE; + } + + $player = array_values( + array_filter( + $room->getPlayers()->toArray(), + static fn (Player $player) => $player->getName() === $playerName, + ), + ); + + if (\count($player) === 0 || !$player[0] instanceof Player) { + $output->writeln(sprintf('Player %s not found in this room', $playerName)); + + return Command::FAILURE; + } + + $player[0]->setStatus(PlayerStatus::KILLED); + $this->eventDispatcher->dispatch(new PlayerKilledEvent($player[0], $room)); + $this->eventDispatcher->dispatch(new PlayerUpdatedEvent($player[0])); + + $this->persistenceAdapter->flush(); + + return Command::SUCCESS; + } +} diff --git a/src/Command/PingMercureCommand.php b/src/Command/PingMercureCommand.php index 472655a..6bc8b6d 100644 --- a/src/Command/PingMercureCommand.php +++ b/src/Command/PingMercureCommand.php @@ -14,7 +14,7 @@ #[AsCommand(name: 'app:ping-mercure', description: 'Ping mercure hub.')] class PingMercureCommand extends Command { - public function __construct(private readonly HubInterface $mercureHub, string $name = null) + public function __construct(private readonly HubInterface $mercureHub, ?string $name = null) { parent::__construct($name); } @@ -28,7 +28,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int { try { $this->mercureHub->publish(new Update('topic', 'update')); - } catch (\Exception $e) { + } catch (\Throwable $e) { $output->writeln('Could not ping mercure because of following error : ' . $e->getMessage()); $output->writeln('Previous error was : ' . $e->getPrevious()?->getMessage()); diff --git a/src/Domain/Mission/MissionRepository.php b/src/Domain/Mission/MissionRepository.php index aa2f90e..8ba40a9 100644 --- a/src/Domain/Mission/MissionRepository.php +++ b/src/Domain/Mission/MissionRepository.php @@ -12,11 +12,9 @@ /** @extends BaseRepository */ interface MissionRepository extends BaseRepository { - /** @return ?Mission[] */ public function findByUserId(Player $player): ?array; public function countMissionByRoom(Room $room): int; - /** @return Mission[] */ public function getMissionAuthorsByRoom(Room $room): array; } diff --git a/src/Domain/Player/Entity/Player.php b/src/Domain/Player/Entity/Player.php index 6bc0f37..cf62074 100644 --- a/src/Domain/Player/Entity/Player.php +++ b/src/Domain/Player/Entity/Player.php @@ -35,7 +35,7 @@ class Player implements UserInterface min: 2, max: 30, minMessage: 'PLAYER_NAME_TOO_SHORT_CONTENT', - maxMessage: 'PLAYER_NAME_TOO_LONG_CONTENT' + maxMessage: 'PLAYER_NAME_TOO_LONG_CONTENT', )] private string $name; @@ -283,10 +283,12 @@ public function getAuthoredMissionsInRoom(): array public function clearMissions(): self { foreach ($this->getAuthoredMissions() as $mission) { - if ($this->authoredMissions->removeElement($mission) && $mission->getAuthor() === $this) { - $mission->setAuthor(null); - $this->room?->removeMission($mission); + if (!$this->authoredMissions->removeElement($mission) || $mission->getAuthor() !== $this) { + continue; } + + $mission->setAuthor(null); + $this->room?->removeMission($mission); } return $this; diff --git a/src/Domain/Player/Normalizer/PlayerDenormalizer.php b/src/Domain/Player/Normalizer/PlayerDenormalizer.php index 7ba78c8..eaed06b 100644 --- a/src/Domain/Player/Normalizer/PlayerDenormalizer.php +++ b/src/Domain/Player/Normalizer/PlayerDenormalizer.php @@ -14,20 +14,21 @@ public function __construct(private PlayerRepository $playerRepository) { } - /** @param array $context */ - public function denormalize(mixed $data, string $type, string $format = null, array $context = []): ?Player + /** @param int $data */ + public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): ?Player { - /** @var int $data */ return $this->playerRepository->find($data); } - /** @param array $context */ - public function supportsDenormalization(mixed $data, string $type, string $format = null, array $context = []): bool - { + public function supportsDenormalization( + mixed $data, + string $type, + ?string $format = null, + array $context = [], + ): bool { return $type === Player::class && is_numeric($data); } - /** @return array<'*'|'object'|string, bool|null> */ public function getSupportedTypes(?string $format): array { return ['string' => true]; diff --git a/src/Domain/Player/Normalizer/PlayerNormalizer.php b/src/Domain/Player/Normalizer/PlayerNormalizer.php index 3544cbb..c99d4e6 100644 --- a/src/Domain/Player/Normalizer/PlayerNormalizer.php +++ b/src/Domain/Player/Normalizer/PlayerNormalizer.php @@ -14,13 +14,9 @@ public function __construct(private NormalizerInterface $normalizer) { } - /** - * @param array $context - * @return float|int|bool|\ArrayObject|array|string|null - */ public function normalize( mixed $object, - string $format = null, + ?string $format = null, array $context = [], ): float|int|bool|\ArrayObject|array|string|null { if (!$object instanceof Player) { @@ -29,12 +25,13 @@ public function normalize( $context = array_merge( $context, - [AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => static fn (Player $object) => - [ + [ + AbstractNormalizer::CIRCULAR_REFERENCE_HANDLER => static fn (Player $object) => [ 'id' => $object->getId(), 'name' => $object->getName(), 'avatar' => $object->getAvatar(), - ]], + ], + ], ); $normalizedPlayer = $this->normalizer->normalize($object, $format, $context); @@ -52,15 +49,13 @@ public function normalize( return $normalizedPlayer; } - /** @param array $context */ - public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool + public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $data instanceof Player; } - /** @return array<'*'|'object'|string, bool|null> */ public function getSupportedTypes(?string $format): array { - return [Player::class => true]; + return [Player::class => true]; } } diff --git a/src/Domain/Room/Entity/Room.php b/src/Domain/Room/Entity/Room.php index 573ec8d..1e3ce84 100644 --- a/src/Domain/Room/Entity/Room.php +++ b/src/Domain/Room/Entity/Room.php @@ -118,12 +118,13 @@ public function getPlayers(): Collection return $this->players; } - /** @return array */ public function getAlivePlayers(): array { return array_values( - array_filter($this->players->toArray(), static fn (Player $player) => - $player->getStatus() === PlayerStatus::ALIVE), + array_filter( + $this->players->toArray(), + static fn (Player $player) => $player->getStatus() === PlayerStatus::ALIVE, + ), ); } @@ -185,14 +186,6 @@ public function setDateEnd(\DateTime $dateEnd): self return $this; } - public function __toString(): string - { - return $this->getId(); - } - - /** - * @return Collection - */ public function getMissions(): Collection { return $this->missions; @@ -255,4 +248,9 @@ public function setIsGameMastered(bool $isGameMastered): self return $this; } + + public function __toString(): string + { + return $this->getId(); + } } diff --git a/src/Domain/Room/Normalizer/RoomDenormalizer.php b/src/Domain/Room/Normalizer/RoomDenormalizer.php index 799a5ac..833e021 100644 --- a/src/Domain/Room/Normalizer/RoomDenormalizer.php +++ b/src/Domain/Room/Normalizer/RoomDenormalizer.php @@ -14,22 +14,21 @@ public function __construct(private RoomRepository $roomRepository) { } - /** - * @param string $data - * @param array $context - */ - public function denormalize(mixed $data, string $type, string $format = null, array $context = []): ?Room + /** @param string $data */ + public function denormalize(mixed $data, string $type, ?string $format = null, array $context = []): ?Room { return $this->roomRepository->find($data); } - /** @param array $context */ - public function supportsDenormalization(mixed $data, string $type, string $format = null, array $context = []): bool - { + public function supportsDenormalization( + mixed $data, + string $type, + ?string $format = null, + array $context = [], + ): bool { return $type === Room::class && is_string($data); } - /** @return array<'*'|'object'|string, bool|null> */ public function getSupportedTypes(?string $format): array { return ['string' => true]; diff --git a/src/Domain/Room/Normalizer/RoomNormalizer.php b/src/Domain/Room/Normalizer/RoomNormalizer.php index bc8421e..45af2b3 100644 --- a/src/Domain/Room/Normalizer/RoomNormalizer.php +++ b/src/Domain/Room/Normalizer/RoomNormalizer.php @@ -20,13 +20,9 @@ public function __construct( ) { } - /** - * @param array $context - * @return float|int|bool|\ArrayObject|array|string|null - */ public function normalize( mixed $object, - string $format = null, + ?string $format = null, array $context = [], ): float|int|bool|\ArrayObject|array|string|null { if (!$object instanceof Room) { @@ -50,13 +46,11 @@ public function normalize( return $normalizedRoom; } - /** @param array $context */ - public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool + public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $data instanceof Room; } - /** @return array<'*'|'object'|string, bool|null> */ public function getSupportedTypes(?string $format): array { return [Room::class => true]; diff --git a/src/Infrastructure/Persistence/Doctrine/Repository/DoctrineMissionRepository.php b/src/Infrastructure/Persistence/Doctrine/Repository/DoctrineMissionRepository.php index e5ab22e..188894b 100644 --- a/src/Infrastructure/Persistence/Doctrine/Repository/DoctrineMissionRepository.php +++ b/src/Infrastructure/Persistence/Doctrine/Repository/DoctrineMissionRepository.php @@ -36,10 +36,8 @@ public function countMissionByRoom(Room $room): int ->getArrayResult()); } - /** @return Mission[] */ public function getMissionAuthorsByRoom(Room $room): array { - /** @var Mission[] */ return $this->repository->createQueryBuilder('m') ->join('m.author', 'a') ->join('a.room', 'r') diff --git a/src/Infrastructure/Persistence/Doctrine/RoomIdGenerator.php b/src/Infrastructure/Persistence/Doctrine/RoomIdGenerator.php index ff0e6b3..7331acd 100644 --- a/src/Infrastructure/Persistence/Doctrine/RoomIdGenerator.php +++ b/src/Infrastructure/Persistence/Doctrine/RoomIdGenerator.php @@ -15,7 +15,7 @@ public function __construct(private readonly RandomStringGenerator $randomString { } - /** @param Room $entity */ + /** @inheritdoc */ public function generateId(EntityManagerInterface $em, $entity): string { if (!$entity instanceof Room) { diff --git a/src/Infrastructure/Serializer/KillerProblemNormalizer.php b/src/Infrastructure/Serializer/KillerProblemNormalizer.php index bdde88c..0839bb2 100644 --- a/src/Infrastructure/Serializer/KillerProblemNormalizer.php +++ b/src/Infrastructure/Serializer/KillerProblemNormalizer.php @@ -17,13 +17,9 @@ public function __construct(#[AutowireDecorated] private ProblemNormalizer $inne { } - /** - * @param array|array $context - * @return float|int|bool|\ArrayObject|array|string|null - */ public function normalize( mixed $object, - string $format = null, + ?string $format = null, array $context = [], ): float|int|bool|\ArrayObject|array|string|null { $normalizedException = $this->inner->normalize($object, $format, $context); @@ -35,13 +31,11 @@ public function normalize( return $normalizedException; } - /** @param array|array $context */ - public function supportsNormalization(mixed $data, string $format = null, array $context = []): bool + public function supportsNormalization(mixed $data, ?string $format = null, array $context = []): bool { return $this->inner->supportsNormalization($data, $format); } - /** @return array<'*'|'object'|string, bool|null> */ public function getSupportedTypes(?string $format): array { return $this->inner->getSupportedTypes($format); diff --git a/src/Infrastructure/Serializer/KillerSerializer.php b/src/Infrastructure/Serializer/KillerSerializer.php index e51b76d..36eacc3 100644 --- a/src/Infrastructure/Serializer/KillerSerializer.php +++ b/src/Infrastructure/Serializer/KillerSerializer.php @@ -13,7 +13,6 @@ public function __construct(private SerializerInterface $serializer) { } - /** @param array $context */ public function serialize(object $entity, array $context = [], string $format = 'json'): string { return $this->serializer->serialize($entity, $format, $context); @@ -22,7 +21,6 @@ public function serialize(object $entity, array $context = [], string $format = /** * @template T of object * @param class-string $class - * @param array $context * @return T */ public function deserialize( @@ -31,7 +29,6 @@ public function deserialize( array $context = [], string $format = 'json', ): mixed { - /** @var T */ return $this->serializer->deserialize( $data, $class, diff --git a/src/Infrastructure/Subscriber/Player/PlayerSubscriber.php b/src/Infrastructure/Subscriber/Player/PlayerSubscriber.php index 3860ccb..5059860 100644 --- a/src/Infrastructure/Subscriber/Player/PlayerSubscriber.php +++ b/src/Infrastructure/Subscriber/Player/PlayerSubscriber.php @@ -6,8 +6,8 @@ use App\Application\UseCase\Player\PlayerKilledUseCase; use App\Application\UseCase\Player\ResetPlayerUseCase; -use App\Domain\Player\Event\PlayerKilledEvent; use App\Domain\Player\Event\PlayerChangedRoomEvent; +use App\Domain\Player\Event\PlayerKilledEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; diff --git a/src/Infrastructure/Subscriber/Room/RoomSubscriber.php b/src/Infrastructure/Subscriber/Room/RoomSubscriber.php index 0e65d69..6501070 100644 --- a/src/Infrastructure/Subscriber/Room/RoomSubscriber.php +++ b/src/Infrastructure/Subscriber/Room/RoomSubscriber.php @@ -23,20 +23,24 @@ public function tryToEndPlayerPreviousRoom(PlayerChangedRoomEvent $playerUpdated { $room = $playerUpdatedEvent->getPreviousRoom(); - if ($room) { - // Try to end room after player left room. - $this->endRoomTransition($room); + if (!$room) { + return; } + + // Try to end room after player left room. + $this->endRoomTransition($room); } public function tryToEndRoom(PlayerUpdatedEvent $playerUpdatedEvent): void { $room = $playerUpdatedEvent->getPlayer()->getRoom(); - if ($room) { - // Try to end room after player update. - $this->endRoomTransition($room); + if (!$room) { + return; } + + // Try to end room after player update. + $this->endRoomTransition($room); } public function updateAdminIfHeLeft(PlayerChangedRoomEvent $playerLeftRoomEvent): void @@ -47,9 +51,11 @@ public function updateAdminIfHeLeft(PlayerChangedRoomEvent $playerLeftRoomEvent) return; } - if (!$previousRoom->getAdmin()) { - $this->roomChangeAdminUseCase->execute($previousRoom); + if ($previousRoom->getAdmin()) { + return; } + + $this->roomChangeAdminUseCase->execute($previousRoom); } public static function getSubscribedEvents(): array diff --git a/symfony.lock b/symfony.lock index a784d29..2f5d681 100644 --- a/symfony.lock +++ b/symfony.lock @@ -128,7 +128,7 @@ ] }, "squizlabs/php_codesniffer": { - "version": "3.6", + "version": "3.8", "recipe": { "repo": "github.com/symfony/recipes-contrib", "branch": "main", diff --git a/tests/Api/PlayerControllerCest.php b/tests/Api/PlayerControllerCest.php index 8402752..dc167fc 100644 --- a/tests/Api/PlayerControllerCest.php +++ b/tests/Api/PlayerControllerCest.php @@ -32,7 +32,7 @@ public function testCreatePlayer(ApiTester $I): void [ 'name' => self::PLAYER_NAME, 'room' => null, - 'status' => PlayerStatus::ALIVE->value + 'status' => PlayerStatus::ALIVE->value, ], ); @@ -43,7 +43,7 @@ public function testCreatePlayer(ApiTester $I): void [ 'name' => self::PLAYER_NAME, 'room' => null, - 'status' => PlayerStatus::ALIVE->value + 'status' => PlayerStatus::ALIVE->value, ], ); } @@ -61,7 +61,7 @@ public function testPatchPlayer(ApiTester $I): void $I->seeResponseContainsJson( [ 'name' => 'Hey', - 'status' => PlayerStatus::ALIVE->value + 'status' => PlayerStatus::ALIVE->value, ], ); } diff --git a/tests/Unit/Application/Specification/Room/EnoughMissionInRoomSpecificationTest.php b/tests/Unit/Application/Specification/Room/EnoughMissionInRoomSpecificationTest.php index 1f7f663..65ebb23 100644 --- a/tests/Unit/Application/Specification/Room/EnoughMissionInRoomSpecificationTest.php +++ b/tests/Unit/Application/Specification/Room/EnoughMissionInRoomSpecificationTest.php @@ -9,11 +9,12 @@ use App\Domain\Mission\MissionRepository; use App\Domain\Player\Entity\Player; use App\Domain\Room\Entity\Room; +use Codeception\Test\Unit; use Doctrine\Common\Collections\ArrayCollection; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; -class EnoughMissionInRoomSpecificationTest extends \Codeception\Test\Unit +class EnoughMissionInRoomSpecificationTest extends Unit { use ProphecyTrait; diff --git a/tests/Unit/Application/Specification/Room/EnoughPlayerInRoomSpecificationTest.php b/tests/Unit/Application/Specification/Room/EnoughPlayerInRoomSpecificationTest.php index 255ac7d..8d348e0 100644 --- a/tests/Unit/Application/Specification/Room/EnoughPlayerInRoomSpecificationTest.php +++ b/tests/Unit/Application/Specification/Room/EnoughPlayerInRoomSpecificationTest.php @@ -7,10 +7,11 @@ use App\Application\Specification\Room\EnoughPlayerInRoomSpecification; use App\Domain\Player\Entity\Player; use App\Domain\Room\Entity\Room; +use Codeception\Test\Unit; use Doctrine\Common\Collections\ArrayCollection; use Prophecy\PhpUnit\ProphecyTrait; -class EnoughPlayerInRoomSpecificationTest extends \Codeception\Test\Unit +class EnoughPlayerInRoomSpecificationTest extends Unit { use ProphecyTrait; diff --git a/tests/Unit/Application/Specification/Room/GameCanStartSpecificationTest.php b/tests/Unit/Application/Specification/Room/GameCanStartSpecificationTest.php index 5182c77..07a79c9 100644 --- a/tests/Unit/Application/Specification/Room/GameCanStartSpecificationTest.php +++ b/tests/Unit/Application/Specification/Room/GameCanStartSpecificationTest.php @@ -9,10 +9,11 @@ use App\Application\Specification\Room\EnoughPlayerInRoomSpecification; use App\Application\Specification\Room\GameCanStartSpecification; use App\Domain\Room\Entity\Room; +use Codeception\Test\Unit; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; -class GameCanStartSpecificationTest extends \Codeception\Test\Unit +class GameCanStartSpecificationTest extends Unit { use ProphecyTrait; diff --git a/tests/Unit/Application/UseCase/Player/PlayerKilledUseCaseTest.php b/tests/Unit/Application/UseCase/Player/PlayerKilledUseCaseTest.php index 3af1ff2..ffdb5e6 100644 --- a/tests/Unit/Application/UseCase/Player/PlayerKilledUseCaseTest.php +++ b/tests/Unit/Application/UseCase/Player/PlayerKilledUseCaseTest.php @@ -7,13 +7,13 @@ use App\Application\UseCase\Player\PlayerKilledUseCase; use App\Domain\Mission\Entity\Mission; use App\Domain\Player\Entity\Player; -use App\Domain\Room\Entity\Room; use App\Infrastructure\Persistence\PersistenceAdapterInterface; use Codeception\Stub\Expected; +use Codeception\Test\Unit; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; -class PlayerKilledUseCaseTest extends \Codeception\Test\Unit +class PlayerKilledUseCaseTest extends Unit { use ProphecyTrait; diff --git a/tests/Unit/Application/UseCase/Player/RoomChangeAdminTest.php b/tests/Unit/Application/UseCase/Player/RoomChangeAdminTest.php index 9e7f95d..109e492 100644 --- a/tests/Unit/Application/UseCase/Player/RoomChangeAdminTest.php +++ b/tests/Unit/Application/UseCase/Player/RoomChangeAdminTest.php @@ -8,12 +8,13 @@ use App\Domain\Player\Entity\Player; use App\Domain\Room\Entity\Room; use App\Infrastructure\Persistence\PersistenceAdapterInterface; +use Codeception\Test\Unit; use Doctrine\Common\Collections\ArrayCollection; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; -class RoomChangeAdminTest extends \Codeception\Test\Unit +class RoomChangeAdminTest extends Unit { use ProphecyTrait; diff --git a/tests/Unit/Application/UseCase/Room/DispatchMissionsAndTargetsUseCaseTest.php b/tests/Unit/Application/UseCase/Room/DispatchMissionsAndTargetsUseCaseTest.php index fef0a6e..234d697 100644 --- a/tests/Unit/Application/UseCase/Room/DispatchMissionsAndTargetsUseCaseTest.php +++ b/tests/Unit/Application/UseCase/Room/DispatchMissionsAndTargetsUseCaseTest.php @@ -8,13 +8,13 @@ use App\Domain\Mission\Entity\Mission; use App\Domain\Player\Entity\Player; use App\Domain\Room\Entity\Room; -use Doctrine\Common\Collections\ArrayCollection; +use Codeception\Test\Unit; use Prophecy\Argument; use Prophecy\PhpUnit\ProphecyTrait; use Prophecy\Prophecy\ObjectProphecy; use Psr\Log\NullLogger; -class DispatchMissionsAndTargetsUseCaseTest extends \Codeception\Test\Unit +class DispatchMissionsAndTargetsUseCaseTest extends Unit { use ProphecyTrait; @@ -46,11 +46,11 @@ public function testDispatchOneMissionPerPlayer(): void ->shouldBeCalled() ->willReturn([$missionPlayer1->reveal()]); $player1->getTarget()->willReturn($player2->reveal()); - $player1->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player1->reveal())) + $player1->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player1->reveal())) ->shouldBeCalled(); - $player1->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() !== $player1->reveal())) + $player1->setAssignedMission(Argument::that(static fn (Mission $mission) => $mission->getAuthor() + !== $player1->reveal())) ->shouldBeCalled(); $player1->getAssignedMission()->shouldBeCalled(); $player1->getId()->shouldBeCalledTimes(3)->willReturn(1); @@ -59,11 +59,11 @@ public function testDispatchOneMissionPerPlayer(): void ->shouldBeCalled() ->willReturn([$missionPlayer2->reveal()]); $player2->getTarget()->willReturn($player3->reveal()); - $player2->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player2->reveal())) + $player2->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player2->reveal())) ->shouldBeCalled(); - $player2->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() !== $player2->reveal())) + $player2->setAssignedMission(Argument::that(static fn (Mission $mission) => $mission->getAuthor() + !== $player2->reveal())) ->shouldBeCalled(); $player2->getAssignedMission()->shouldBeCalled(); $player2->getId()->shouldBeCalledTimes(3)->willReturn(2); @@ -73,16 +73,15 @@ public function testDispatchOneMissionPerPlayer(): void ->shouldBeCalled() ->willReturn([$missionPlayer3->reveal()]); $player3->getTarget()->willReturn($player1); - $player3->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player3->reveal())) + $player3->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player3->reveal())) ->shouldBeCalled(); - $player3->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() !== $player3->reveal())) + $player3->setAssignedMission(Argument::that(static fn (Mission $mission) => $mission->getAuthor() + !== $player3->reveal())) ->shouldBeCalled(); $player3->getAssignedMission()->shouldBeCalled(); $player3->getId()->shouldBeCalledTimes(3)->willReturn(3); - $missionPlayer1->isAssigned()->shouldBeCalled(); $missionPlayer1->getAuthor()->shouldBeCalled()->willReturn($player1->reveal()); $missionPlayer1->getId()->shouldBeCalledOnce()->willReturn(1); @@ -128,22 +127,22 @@ public function testDispatchOneMissionPerPlayerWithGameMaster(): void $player1->getAuthoredMissionsInRoom()->shouldNotBeCalled(); $player1->getTarget()->willReturn($player2->reveal()); - $player1->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player1->reveal())) + $player1->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player1->reveal())) ->shouldBeCalled(); - $player1->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() === $admin->reveal())) + $player1->setAssignedMission(Argument::that(static fn (Mission $mission) => $mission->getAuthor() + === $admin->reveal())) ->shouldBeCalled(); $player1->getAssignedMission()->shouldBeCalled(); $player1->getId()->shouldBeCalledTimes(3)->willReturn(1); $player2->getAuthoredMissionsInRoom()->shouldNotBeCalled(); $player2->getTarget()->willReturn($player3->reveal()); - $player2->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player2->reveal())) + $player2->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player2->reveal())) ->shouldBeCalled(); - $player2->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() === $admin->reveal())) + $player2->setAssignedMission(Argument::that(static fn (Mission $mission) => $mission->getAuthor() + === $admin->reveal())) ->shouldBeCalled(); $player2->getAssignedMission()->shouldBeCalled(); $player2->getId()->shouldBeCalledTimes(3)->willReturn(2); @@ -151,12 +150,12 @@ public function testDispatchOneMissionPerPlayerWithGameMaster(): void $player3->getAuthoredMissionsInRoom()->shouldNotBeCalled(); $player3->getTarget()->willReturn($player1); - $player3->setTarget(Argument::that(static fn (Player $player) => - $player instanceof Player && $player !== $player3->reveal())) - ->shouldBeCalled(); - $player3->setAssignedMission(Argument::that(static fn (Mission $mission) => - $mission->getAuthor() === $admin->reveal())) + $player3->setTarget(Argument::that(static fn (Player $player) => $player instanceof Player + && $player !== $player3->reveal())) ->shouldBeCalled(); + $player3->setAssignedMission(Argument::that( + static fn (Mission $mission) => $mission->getAuthor() === $admin->reveal() + ))->shouldBeCalled(); $player3->getAssignedMission()->shouldBeCalled(); $player3->getId()->shouldBeCalledTimes(3)->willReturn(3); diff --git a/tests/_support/AcceptanceTester.php b/tests/_support/AcceptanceTester.php index e0b036b..7dde6aa 100644 --- a/tests/_support/AcceptanceTester.php +++ b/tests/_support/AcceptanceTester.php @@ -1,6 +1,12 @@