diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index f427b558..ad357784 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -30,8 +30,8 @@ jobs: - uses: shivammathur/setup-php@v2 with: - php-version: '8.2' - coverage: pcov + php-version: '8.4' + coverage: none tools: cs2pr extensions: imagick @@ -62,12 +62,7 @@ jobs: # Lint and tests - run: ./vendor/bin/php-cs-fixer fix --format=checkstyle | cs2pr - run: ./vendor/bin/phpstan analyse - - run: ./vendor/bin/phpunit --coverage-clover coverage-clover.xml + - run: ./vendor/bin/phpunit - run: yarn lint - run: ./node_modules/.bin/prettier --experimental-cli --check . - run: ./node_modules/.bin/ng test --progress false --watch=false --browsers ChromeHeadlessCustom - - - name: Upload code coverage - run: | - composer global require scrutinizer/ocular - ~/.composer/vendor/bin/ocular code-coverage:upload --format=php-clover coverage-clover.xml diff --git a/.scrutinizer.yml b/.scrutinizer.yml deleted file mode 100644 index ccff9648..00000000 --- a/.scrutinizer.yml +++ /dev/null @@ -1,36 +0,0 @@ -checks: - php: true - -coding_style: - php: - spaces: - before_parentheses: - closure_definition: true - around_operators: - concatenation: true - -build: - environment: - variables: - NVM_NODEJS_ORG_MIRROR: 'https://nodejs.org/dist' - NODEJS_ORG_MIRROR: 'https://nodejs.org/dist' - nodes: - analysis: - image: default-jammy - environment: - php: 8.2 - node: 22 - tests: - override: - - php-scrutinizer-run - -tools: - external_code_coverage: - timeout: 600 - runs: 1 - -build_failure_conditions: - - 'elements.rating(<= C).new.exists' # No new classes/methods with a rating of C or worse allowed - - 'issues.severity(>= MAJOR).new.exists' # New issues of major or higher severity - - 'project.metric_change("scrutinizer.test_coverage", < 0)' # Code Coverage decreased from previous inspection - - 'patches.label("Unused Use Statements").new.exists' # No new unused imports patches allowed diff --git a/README.md b/README.md index 2cef6605..5cbceac2 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # Les artisans de la transition [![Build Status](https://github.com/ecodev/artisans/workflows/main/badge.svg)](https://github.com/ecodev/artisans/actions) -[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/Ecodev/artisans/badges/quality-score.png?b=master&s=2b6588a62b5d35d80bd104014502605b7520f49a)](https://scrutinizer-ci.com/g/Ecodev/artisans/?branch=master)   -[![Code Coverage](https://scrutinizer-ci.com/g/Ecodev/artisans/badges/coverage.png?b=master&s=cc2eec510484f44409973822e7e3a805df6a1e91)](https://scrutinizer-ci.com/g/Ecodev/artisans/?branch=master) ## Introduction diff --git a/bin/build.sh b/bin/build.sh index dda9f390..dddc71ba 100755 --- a/bin/build.sh +++ b/bin/build.sh @@ -43,8 +43,8 @@ if id "$DEPLOY_USER" >/dev/null 2>&1; then export HOME="$TMP_DIR/home-$DEPLOY_USER" fi -# Try to use PHP 8.2, or fallback to default version -PHP=`which php8.2` || PHP='php' +# Try to use PHP 8.4, or fallback to default version +PHP=`which php8.4` || PHP='php' COMPOSER="$PHP `which composer` --no-interaction --no-plugins" # Exit script on any error @@ -74,7 +74,6 @@ $PHP ./bin/clear-config-cache.php echo "Updating database..." $PHP ./bin/doctrine migrations:migrate --no-interaction -$PHP ./bin/doctrine orm:generate-proxies $PHP ./bin/create-triggers.php echo "Delete old logs..." diff --git a/bin/dump-schema b/bin/dump-schema index 6086a077..0fb91e2c 100755 --- a/bin/dump-schema +++ b/bin/dump-schema @@ -20,7 +20,7 @@ function write(folder, filename, content) { } const query = utilities.getIntrospectionQuery(); -const php = execSync('which php8.2 || which php').toString().trim(); +const php = execSync('which php8.4 || which php').toString().trim(); const schemaJsonString = execFileSync(php, ['./bin/graphql.php', query], {maxBuffer: 10 * 1024 * 1024}).toString(); const schemaLiteral = JSON.parse(schemaJsonString).data; const schemaObject = buildClientSchema(schemaLiteral); diff --git a/composer.json b/composer.json index ae5f75e4..5c2b3a0d 100644 --- a/composer.json +++ b/composer.json @@ -49,7 +49,7 @@ } }, "require": { - "php": "^8.2", + "php": "^8.4", "ext-bcmath": "*", "ext-dom": "*", "ext-fileinfo": "*", @@ -57,22 +57,22 @@ "ext-json": "*", "ext-pdo": "*", "beberlei/doctrineextensions": "^1.5", - "ecodev/felix": "^16.3", + "ecodev/felix": "^17.0", "ecodev/graphql-doctrine": "^11.0", "ecodev/graphql-upload": "^8.0", - "laminas/laminas-config-aggregator": "^1.15", - "laminas/laminas-http": "^2.19", - "laminas/laminas-servicemanager": "^3.22", - "mezzio/mezzio": "^3.19", - "mezzio/mezzio-fastroute": "^3.11", - "mezzio/mezzio-helpers": "^5.16", - "mezzio/mezzio-laminasviewrenderer": "^2.15", - "mezzio/mezzio-session-ext": "^1.19" + "laminas/laminas-config-aggregator": "^1.19", + "laminas/laminas-http": "^2.23", + "laminas/laminas-servicemanager": "^3.24", + "mezzio/mezzio": "^3.26", + "mezzio/mezzio-fastroute": "^3.14", + "mezzio/mezzio-helpers": "^5.20", + "mezzio/mezzio-laminasviewrenderer": "^2.19", + "mezzio/mezzio-session-ext": "^1.21" }, "require-dev": { "friendsofphp/php-cs-fixer": "@stable", - "laminas/laminas-development-mode": "^3.12", + "laminas/laminas-development-mode": "^3.15", "phpstan/phpstan-doctrine": "@stable", - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "@stable" } } diff --git a/composer.lock b/composer.lock index 231c7881..38de695d 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": "2ad0a01cc37c57d0554268b8c9b1e8a1", + "content-hash": "2bc78ff4b4cee50e45ec77f90e3fa9f2", "packages": [ { "name": "beberlei/doctrineextensions", @@ -119,16 +119,16 @@ }, { "name": "cakephp/chronos", - "version": "3.1.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/cakephp/chronos.git", - "reference": "786d69e1ee4b735765cbdb5521b9603e9b98d650" + "reference": "1e417fdd4a3c6602b6c4634cf54aa9b065127fa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cakephp/chronos/zipball/786d69e1ee4b735765cbdb5521b9603e9b98d650", - "reference": "786d69e1ee4b735765cbdb5521b9603e9b98d650", + "url": "https://api.github.com/repos/cakephp/chronos/zipball/1e417fdd4a3c6602b6c4634cf54aa9b065127fa2", + "reference": "1e417fdd4a3c6602b6c4634cf54aa9b065127fa2", "shasum": "" }, "require": { @@ -140,7 +140,7 @@ }, "require-dev": { "cakephp/cakephp-codesniffer": "^5.0", - "phpunit/phpunit": "^10.1.0 || ^11.1.3" + "phpunit/phpunit": "^10.5.58 || ^11.1.3" }, "type": "library", "autoload": { @@ -174,20 +174,20 @@ "issues": "https://github.com/cakephp/chronos/issues", "source": "https://github.com/cakephp/chronos" }, - "time": "2024-07-18T03:18:04+00:00" + "time": "2025-10-30T13:08:23+00:00" }, { "name": "dflydev/fig-cookies", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-fig-cookies.git", - "reference": "ebe6c15c9895fc490efe620ad734c8ef4a85bdb0" + "reference": "f9c63878e75483800477db4f897237b36556617b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dflydev/dflydev-fig-cookies/zipball/ebe6c15c9895fc490efe620ad734c8ef4a85bdb0", - "reference": "ebe6c15c9895fc490efe620ad734c8ef4a85bdb0", + "url": "https://api.github.com/repos/dflydev/dflydev-fig-cookies/zipball/f9c63878e75483800477db4f897237b36556617b", + "reference": "f9c63878e75483800477db4f897237b36556617b", "shasum": "" }, "require": { @@ -234,22 +234,22 @@ ], "support": { "issues": "https://github.com/dflydev/dflydev-fig-cookies/issues", - "source": "https://github.com/dflydev/dflydev-fig-cookies/tree/v3.1.0" + "source": "https://github.com/dflydev/dflydev-fig-cookies/tree/v3.2.0" }, - "time": "2023-07-18T20:41:43+00:00" + "time": "2025-09-03T20:01:04+00:00" }, { "name": "doctrine/collections", - "version": "2.3.0", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d" + "reference": "9acfeea2e8666536edff3d77c531261c63680160" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2eb07e5953eed811ce1b309a7478a3b236f2273d", - "reference": "2eb07e5953eed811ce1b309a7478a3b236f2273d", + "url": "https://api.github.com/repos/doctrine/collections/zipball/9acfeea2e8666536edff3d77c531261c63680160", + "reference": "9acfeea2e8666536edff3d77c531261c63680160", "shasum": "" }, "require": { @@ -258,11 +258,11 @@ "symfony/polyfill-php84": "^1.30" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "ext-json": "*", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^10.5" + "phpstan/phpstan": "^2.1.30", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpunit/phpunit": "^10.5.58 || ^11.5.42 || ^12.4" }, "type": "library", "autoload": { @@ -306,7 +306,7 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/2.3.0" + "source": "https://github.com/doctrine/collections/tree/2.4.0" }, "funding": [ { @@ -322,7 +322,7 @@ "type": "tidelift" } ], - "time": "2025-03-22T10:17:19+00:00" + "time": "2025-10-25T09:18:13+00:00" }, { "name": "doctrine/common", @@ -417,36 +417,36 @@ }, { "name": "doctrine/dbal", - "version": "4.2.3", + "version": "4.4.1", "source": { "type": "git", "url": "https://github.com/doctrine/dbal.git", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e" + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/33d2d7fe1269b2301640c44cf2896ea607b30e3e", - "reference": "33d2d7fe1269b2301640c44cf2896ea607b30e3e", + "url": "https://api.github.com/repos/doctrine/dbal/zipball/3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", + "reference": "3d544473fb93f5c25b483ea4f4ce99f8c4d9d44c", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3|^1", - "php": "^8.1", + "doctrine/deprecations": "^1.1.5", + "php": "^8.2", "psr/cache": "^1|^2|^3", "psr/log": "^1|^2|^3" }, "require-dev": { - "doctrine/coding-standard": "12.0.0", + "doctrine/coding-standard": "14.0.0", "fig/log-test": "^1", "jetbrains/phpstorm-stubs": "2023.2", - "phpstan/phpstan": "2.1.1", - "phpstan/phpstan-phpunit": "2.0.3", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "2.0.7", "phpstan/phpstan-strict-rules": "^2", - "phpunit/phpunit": "10.5.39", - "slevomat/coding-standard": "8.13.1", - "squizlabs/php_codesniffer": "3.10.2", - "symfony/cache": "^6.3.8|^7.0", - "symfony/console": "^5.4|^6.3|^7.0" + "phpunit/phpunit": "11.5.23", + "slevomat/coding-standard": "8.24.0", + "squizlabs/php_codesniffer": "4.0.0", + "symfony/cache": "^6.3.8|^7.0|^8.0", + "symfony/console": "^5.4|^6.3|^7.0|^8.0" }, "suggest": { "symfony/console": "For helpful console commands such as SQL execution and import of files." @@ -503,7 +503,7 @@ ], "support": { "issues": "https://github.com/doctrine/dbal/issues", - "source": "https://github.com/doctrine/dbal/tree/4.2.3" + "source": "https://github.com/doctrine/dbal/tree/4.4.1" }, "funding": [ { @@ -519,7 +519,7 @@ "type": "tidelift" } ], - "time": "2025-03-07T18:29:05+00:00" + "time": "2025-12-04T10:11:03+00:00" }, { "name": "doctrine/deprecations", @@ -662,33 +662,32 @@ }, { "name": "doctrine/inflector", - "version": "2.0.10", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc" + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5817d0659c5b50c9b950feb9af7b9668e2c436bc", - "reference": "5817d0659c5b50c9b950feb9af7b9668e2c436bc", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/6d6c96277ea252fc1304627204c3d5e6e15faa3b", + "reference": "6d6c96277ea252fc1304627204c3d5e6e15faa3b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^11.0", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.3", - "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25 || ^5.4" + "doctrine/coding-standard": "^12.0 || ^13.0", + "phpstan/phpstan": "^1.12 || ^2.0", + "phpstan/phpstan-phpunit": "^1.4 || ^2.0", + "phpstan/phpstan-strict-rules": "^1.6 || ^2.0", + "phpunit/phpunit": "^8.5 || ^12.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" + "Doctrine\\Inflector\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -733,7 +732,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.10" + "source": "https://github.com/doctrine/inflector/tree/2.1.0" }, "funding": [ { @@ -749,7 +748,7 @@ "type": "tidelift" } ], - "time": "2024-02-18T20:23:39+00:00" + "time": "2025-08-10T19:31:58+00:00" }, { "name": "doctrine/instantiator", @@ -900,16 +899,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.0", + "version": "3.9.5", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab" + "reference": "1b823afbc40f932dae8272574faee53f2755eac5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/325b61e41d032f5f7d7e2d11cbefff656eadc9ab", - "reference": "325b61e41d032f5f7d7e2d11cbefff656eadc9ab", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/1b823afbc40f932dae8272574faee53f2755eac5", + "reference": "1b823afbc40f932dae8272574faee53f2755eac5", "shasum": "" }, "require": { @@ -919,29 +918,29 @@ "doctrine/event-manager": "^1.2 || ^2.0", "php": "^8.1", "psr/log": "^1.1.3 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.2 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.2 || ^7.0 || ^8.0" }, "conflict": { "doctrine/orm": "<2.12 || >=4" }, "require-dev": { - "doctrine/coding-standard": "^12", + "doctrine/coding-standard": "^14", "doctrine/orm": "^2.13 || ^3", "doctrine/persistence": "^2 || ^3 || ^4", "doctrine/sql-formatter": "^1.0", "ext-pdo_sqlite": "*", "fig/log-test": "^1", - "phpstan/phpstan": "^1.10", - "phpstan/phpstan-deprecation-rules": "^1.1", - "phpstan/phpstan-phpunit": "^1.3", - "phpstan/phpstan-strict-rules": "^1.4", - "phpstan/phpstan-symfony": "^1.3", - "phpunit/phpunit": "^10.3", - "symfony/cache": "^5.4 || ^6.0 || ^7.0", - "symfony/process": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpstan/phpstan-symfony": "^2", + "phpunit/phpunit": "^10.3 || ^11.0 || ^12.0", + "symfony/cache": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/process": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "doctrine/sql-formatter": "Allows to generate formatted SQL with the diff command.", @@ -983,7 +982,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.0" + "source": "https://github.com/doctrine/migrations/tree/3.9.5" }, "funding": [ { @@ -999,20 +998,20 @@ "type": "tidelift" } ], - "time": "2025-03-26T06:48:45+00:00" + "time": "2025-11-20T11:15:36+00:00" }, { "name": "doctrine/orm", - "version": "3.3.3", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "1f1891d3e20ef9881e81c2f32c53e9dc88dfc9a7" + "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/1f1891d3e20ef9881e81c2f32c53e9dc88dfc9a7", - "reference": "1f1891d3e20ef9881e81c2f32c53e9dc88dfc9a7", + "url": "https://api.github.com/repos/doctrine/orm/zipball/d4e9276e79602b1eb4c4029c6c999b0d93478e2f", + "reference": "d4e9276e79602b1eb4c4029c6c999b0d93478e2f", "shasum": "" }, "require": { @@ -1028,20 +1027,18 @@ "ext-ctype": "*", "php": "^8.1", "psr/cache": "^1 || ^2 || ^3", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/var-exporter": "^6.3.9 || ^7.0" + "symfony/console": "^5.4 || ^6.0 || ^7.0 || ^8.0", + "symfony/var-exporter": "^6.3.9 || ^7.0 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^13.0", + "doctrine/coding-standard": "^14.0", "phpbench/phpbench": "^1.0", - "phpdocumentor/guides-cli": "^1.4", "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "2.0.3", + "phpstan/phpstan": "2.1.23", "phpstan/phpstan-deprecation-rules": "^2", - "phpunit/phpunit": "^10.4.0", + "phpunit/phpunit": "^10.5.0 || ^11.5", "psr/log": "^1 || ^2 || ^3", - "squizlabs/php_codesniffer": "3.12.0", - "symfony/cache": "^5.4 || ^6.2 || ^7.0" + "symfony/cache": "^5.4 || ^6.2 || ^7.0 || ^8.0" }, "suggest": { "ext-dom": "Provides support for XSD validation for XML mapping files", @@ -1087,40 +1084,37 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/3.3.3" + "source": "https://github.com/doctrine/orm/tree/3.6.0" }, - "time": "2025-05-02T17:42:51+00:00" + "time": "2025-12-19T20:36:14+00:00" }, { "name": "doctrine/persistence", - "version": "3.4.0", + "version": "4.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff" + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/0ea965320cec355dba75031c1b23d4c78362e3ff", - "reference": "0ea965320cec355dba75031c1b23d4c78362e3ff", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", + "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09", "shasum": "" }, "require": { "doctrine/event-manager": "^1 || ^2", - "php": "^7.2 || ^8.0", + "php": "^8.1", "psr/cache": "^1.0 || ^2.0 || ^3.0" }, - "conflict": { - "doctrine/common": "<2.10" - }, "require-dev": { - "doctrine/coding-standard": "^12", - "doctrine/common": "^3.0", - "phpstan/phpstan": "1.12.7", - "phpstan/phpstan-phpunit": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "phpunit/phpunit": "^8.5.38 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0" + "doctrine/coding-standard": "^14", + "phpstan/phpstan": "2.1.30", + "phpstan/phpstan-phpunit": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.58 || ^12", + "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", + "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" }, "type": "library", "autoload": { @@ -1169,7 +1163,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.4.0" + "source": "https://github.com/doctrine/persistence/tree/4.1.1" }, "funding": [ { @@ -1185,25 +1179,25 @@ "type": "tidelift" } ], - "time": "2024-10-30T19:48:12+00:00" + "time": "2025-10-16T20:13:18+00:00" }, { "name": "ecodev/felix", - "version": "16.3.1", + "version": "17.0.0", "source": { "type": "git", "url": "https://github.com/Ecodev/felix.git", - "reference": "f5d780261274834ee4aeb31bea160e4ebfaaefac" + "reference": "57cc66b803fb7755d621f78cf33125196f74ee17" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ecodev/felix/zipball/f5d780261274834ee4aeb31bea160e4ebfaaefac", - "reference": "f5d780261274834ee4aeb31bea160e4ebfaaefac", + "url": "https://api.github.com/repos/Ecodev/felix/zipball/57cc66b803fb7755d621f78cf33125196f74ee17", + "reference": "57cc66b803fb7755d621f78cf33125196f74ee17", "shasum": "" }, "require": { - "cakephp/chronos": "^3.1", - "doctrine/dbal": "^4.2", + "cakephp/chronos": "^3.3", + "doctrine/dbal": "^4.3", "doctrine/migrations": "^3.9", "ecodev/graphql-doctrine": "^11.0", "ext-bcmath": "*", @@ -1212,19 +1206,19 @@ "ext-pdo": "*", "ext-readline": "*", "imagine/imagine": "^1.5", - "laminas/laminas-diactoros": "^3.5", - "laminas/laminas-permissions-acl": "^2.17", - "laminas/laminas-servicemanager": "^3.23", - "laminas/laminas-validator": "^2.64", - "laminas/laminas-view": "^2.36", - "mezzio/mezzio-session": "^1.16", - "moneyphp/money": "^4.7", + "laminas/laminas-diactoros": "^3.8", + "laminas/laminas-permissions-acl": "^2.18", + "laminas/laminas-servicemanager": "^3.24", + "laminas/laminas-validator": "^2.65", + "laminas/laminas-view": "^2.44", + "mezzio/mezzio-session": "^1.17", + "moneyphp/money": "^4.8", "monolog/monolog": "^3.9", - "php": "^8.2", - "roave/psr-container-doctrine": "^5.2", + "php": "^8.4", + "roave/psr-container-doctrine": "^6.1", "spomky-labs/otphp": "^11.3", - "symfony/cache": "^7.2", - "symfony/mailer": "^7.2" + "symfony/cache": "^8.0", + "symfony/mailer": "^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "@stable", @@ -1233,7 +1227,7 @@ "mikey179/vfsstream": "@stable", "phpstan/phpstan": "@stable", "phpstan/phpstan-phpunit": "@stable", - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "@stable" }, "type": "library", "extra": { @@ -1256,29 +1250,29 @@ "description": "Various utilities tailored for our ecosystem", "support": { "issues": "https://github.com/Ecodev/felix/issues", - "source": "https://github.com/Ecodev/felix/tree/16.3.1" + "source": "https://github.com/Ecodev/felix/tree/17.0.0" }, - "time": "2025-10-03T07:11:29+00:00" + "time": "2025-12-30T12:59:22+00:00" }, { "name": "ecodev/graphql-doctrine", - "version": "11.0.0", + "version": "11.0.1", "source": { "type": "git", "url": "https://github.com/Ecodev/graphql-doctrine.git", - "reference": "9ce071d70edb37b0119c12c1c8c1d1e8cf58c3b2" + "reference": "e72eac0b72e1db87fe9da3a5dc6f776293d6dcb4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ecodev/graphql-doctrine/zipball/9ce071d70edb37b0119c12c1c8c1d1e8cf58c3b2", - "reference": "9ce071d70edb37b0119c12c1c8c1d1e8cf58c3b2", + "url": "https://api.github.com/repos/Ecodev/graphql-doctrine/zipball/e72eac0b72e1db87fe9da3a5dc6f776293d6dcb4", + "reference": "e72eac0b72e1db87fe9da3a5dc6f776293d6dcb4", "shasum": "" }, "require": { - "doctrine/orm": "^3.3", - "php": "^8.2", + "doctrine/orm": "^3.6", + "php": "^8.4", "psr/container": "^1.1 || ^2.0", - "webonyx/graphql-php": "^15.20" + "webonyx/graphql-php": "^15.29" }, "require-dev": { "friendsofphp/php-cs-fixer": "@stable", @@ -1306,30 +1300,30 @@ ], "support": { "issues": "https://github.com/Ecodev/graphql-doctrine/issues", - "source": "https://github.com/Ecodev/graphql-doctrine/tree/11.0.0" + "source": "https://github.com/Ecodev/graphql-doctrine/tree/11.0.1" }, - "time": "2025-04-24T09:22:42+00:00" + "time": "2025-12-30T11:29:49+00:00" }, { "name": "ecodev/graphql-upload", - "version": "8.0.0", + "version": "8.0.1", "source": { "type": "git", "url": "https://github.com/Ecodev/graphql-upload.git", - "reference": "793b2f76856eb3d727f061847cc7984d8fd4b417" + "reference": "c8f64d971125f1fe53acd67f944af1bfea9459e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ecodev/graphql-upload/zipball/793b2f76856eb3d727f061847cc7984d8fd4b417", - "reference": "793b2f76856eb3d727f061847cc7984d8fd4b417", + "url": "https://api.github.com/repos/Ecodev/graphql-upload/zipball/c8f64d971125f1fe53acd67f944af1bfea9459e5", + "reference": "c8f64d971125f1fe53acd67f944af1bfea9459e5", "shasum": "" }, "require": { "ext-json": "*", - "laminas/laminas-diactoros": "^3.6", - "php": "^8.2", + "laminas/laminas-diactoros": "^3.8", + "php": "^8.4", "psr/http-server-middleware": "^1.0", - "webonyx/graphql-php": "^15.0" + "webonyx/graphql-php": "^15.29" }, "require-dev": { "friendsofphp/php-cs-fixer": "@stable", @@ -1356,9 +1350,9 @@ ], "support": { "issues": "https://github.com/Ecodev/graphql-upload/issues", - "source": "https://github.com/Ecodev/graphql-upload/tree/8.0.0" + "source": "https://github.com/Ecodev/graphql-upload/tree/8.0.1" }, - "time": "2025-08-28T14:13:52+00:00" + "time": "2025-12-30T11:29:53+00:00" }, { "name": "egulias/email-validator", @@ -1485,16 +1479,16 @@ }, { "name": "imagine/imagine", - "version": "1.5.0", + "version": "1.5.1", "source": { "type": "git", "url": "https://github.com/php-imagine/Imagine.git", - "reference": "80ab21434890dee9ba54969d31c51ac8d4d551e0" + "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/80ab21434890dee9ba54969d31c51ac8d4d551e0", - "reference": "80ab21434890dee9ba54969d31c51ac8d4d551e0", + "url": "https://api.github.com/repos/php-imagine/Imagine/zipball/8b130cd281efdea67e52d5f0f998572eb62d2f04", + "reference": "8b130cd281efdea67e52d5f0f998572eb62d2f04", "shasum": "" }, "require": { @@ -1541,28 +1535,28 @@ ], "support": { "issues": "https://github.com/php-imagine/Imagine/issues", - "source": "https://github.com/php-imagine/Imagine/tree/1.5.0" + "source": "https://github.com/php-imagine/Imagine/tree/1.5.1" }, - "time": "2024-12-03T14:37:55+00:00" + "time": "2025-12-09T15:27:47+00:00" }, { "name": "laminas/laminas-config-aggregator", - "version": "1.18.0", + "version": "1.19.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-config-aggregator.git", - "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5" + "reference": "612343ce135c340fc667da3615e50d865a86b4d9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/a5cc009f58daa4e1b968abd65972fa3a481c22c5", - "reference": "a5cc009f58daa4e1b968abd65972fa3a481c22c5", + "url": "https://api.github.com/repos/laminas/laminas-config-aggregator/zipball/612343ce135c340fc667da3615e50d865a86b4d9", + "reference": "612343ce135c340fc667da3615e50d865a86b4d9", "shasum": "" }, "require": { "brick/varexporter": "^0.5.0 || ^0.4.0 || ^0.6.0", "laminas/laminas-stdlib": "^3.18.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "webimpress/safe-writer": "^2.2.0" }, "conflict": { @@ -1570,11 +1564,11 @@ "zendframework/zend-config-aggregator": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-coding-standard": "~3.1.0", "laminas/laminas-config": "^3.10.1", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.2", - "vimeo/psalm": "^6.8.6" + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "laminas/laminas-config": "Allows loading configuration from XML, INI, YAML, and JSON files", @@ -1611,24 +1605,24 @@ "type": "community_bridge" } ], - "time": "2025-02-21T18:18:40+00:00" + "time": "2025-10-14T19:57:01+00:00" }, { "name": "laminas/laminas-diactoros", - "version": "3.6.0", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "b068eac123f21c0e592de41deeb7403b88e0a89f" + "reference": "60c182916b2749480895601649563970f3f12ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/b068eac123f21c0e592de41deeb7403b88e0a89f", - "reference": "b068eac123f21c0e592de41deeb7403b88e0a89f", + "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/60c182916b2749480895601649563970f3f12ec4", + "reference": "60c182916b2749480895601649563970f3f12ec4", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/http-factory": "^1.1", "psr/http-message": "^1.1 || ^2.0" }, @@ -1645,11 +1639,11 @@ "ext-gd": "*", "ext-libxml": "*", "http-interop/http-factory-tests": "^2.2.0", - "laminas/laminas-coding-standard": "~3.0.0", + "laminas/laminas-coding-standard": "~3.1.0", "php-http/psr7-integration-tests": "^1.4.0", "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13" }, "type": "library", "extra": { @@ -1699,36 +1693,36 @@ "type": "community_bridge" } ], - "time": "2025-05-05T16:03:34+00:00" + "time": "2025-10-12T15:31:36+00:00" }, { "name": "laminas/laminas-escaper", - "version": "2.16.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-escaper.git", - "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8" + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", - "reference": "9cf1f5317ca65b4fd5c6a3c2855e24a187b288c8", + "url": "https://api.github.com/repos/laminas/laminas-escaper/zipball/06f211dfffff18d91844c1f55250d5d13c007e18", + "reference": "06f211dfffff18d91844c1f55250d5d13c007e18", "shasum": "" }, "require": { "ext-ctype": "*", "ext-mbstring": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-escaper": "*" }, "require-dev": { - "infection/infection": "^0.29.8", - "laminas/laminas-coding-standard": "~3.0.1", - "phpunit/phpunit": "^10.5.45", - "psalm/plugin-phpunit": "^0.19.2", - "vimeo/psalm": "^6.6.2" + "infection/infection": "^0.31.0", + "laminas/laminas-coding-standard": "~3.1.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "autoload": { @@ -1760,37 +1754,40 @@ "type": "community_bridge" } ], - "time": "2025-02-17T12:40:19+00:00" + "time": "2025-10-14T18:31:13+00:00" }, { "name": "laminas/laminas-eventmanager", - "version": "3.14.0", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-eventmanager.git", - "reference": "1837cafaaaee74437f6d8ec9ff7da03e6f81d809" + "reference": "90b4bd33264629af8e39caf5aa83473ac03aa04c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/1837cafaaaee74437f6d8ec9ff7da03e6f81d809", - "reference": "1837cafaaaee74437f6d8ec9ff7da03e6f81d809", + "url": "https://api.github.com/repos/laminas/laminas-eventmanager/zipball/90b4bd33264629af8e39caf5aa83473ac03aa04c", + "reference": "90b4bd33264629af8e39caf5aa83473ac03aa04c", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "container-interop/container-interop": "<1.2", "zendframework/zend-eventmanager": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~3.0.0", + "amphp/dns": "^2.2", + "amphp/socket": "^2.3.1", + "laminas/laminas-coding-standard": "~3.1.0", "laminas/laminas-stdlib": "^3.20", "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.38", + "phpunit/phpunit": "^10.5.58", "psalm/plugin-phpunit": "^0.19.0", "psr/container": "^1.1.2 || ^2.0.2", - "vimeo/psalm": "^5.26.1" + "sebastian/recursion-context": "^5.0.1", + "vimeo/psalm": "^6.13" }, "suggest": { "laminas/laminas-stdlib": "^2.7.3 || ^3.0, to use the FilterChain feature", @@ -1828,36 +1825,36 @@ "type": "community_bridge" } ], - "time": "2024-11-21T11:31:22+00:00" + "time": "2025-10-31T10:29:01+00:00" }, { "name": "laminas/laminas-http", - "version": "2.21.0", + "version": "2.23.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-http.git", - "reference": "a9867e4d1cda3dbad208903239c83a3d670cce10" + "reference": "9462fc84330d25b23383823831380abb33907fdd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-http/zipball/a9867e4d1cda3dbad208903239c83a3d670cce10", - "reference": "a9867e4d1cda3dbad208903239c83a3d670cce10", + "url": "https://api.github.com/repos/laminas/laminas-http/zipball/9462fc84330d25b23383823831380abb33907fdd", + "reference": "9462fc84330d25b23383823831380abb33907fdd", "shasum": "" }, "require": { "laminas/laminas-loader": "^2.10", "laminas/laminas-stdlib": "^3.6", - "laminas/laminas-uri": "^2.11", + "laminas/laminas-uri": "^2.14", "laminas/laminas-validator": "^2.15 || ^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-http": "*" }, "require-dev": { "ext-curl": "*", - "laminas/laminas-coding-standard": "~2.4.0", - "phpunit/phpunit": "^9.6.21" + "laminas/laminas-coding-standard": "^3.0.1", + "phpunit/phpunit": "^10.5.38" }, "suggest": { "paragonie/certainty": "For automated management of cacert.pem" @@ -1893,34 +1890,34 @@ "type": "community_bridge" } ], - "time": "2024-12-04T09:17:39+00:00" + "time": "2025-12-05T11:02:08+00:00" }, { "name": "laminas/laminas-httphandlerrunner", - "version": "2.11.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-httphandlerrunner.git", - "reference": "c428d9f67f280d155637cbe2b7245b5188c8cdae" + "reference": "181eaeeb838ad3d80fbbcfb0657a46bc212bbd4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/c428d9f67f280d155637cbe2b7245b5188c8cdae", - "reference": "c428d9f67f280d155637cbe2b7245b5188c8cdae", + "url": "https://api.github.com/repos/laminas/laminas-httphandlerrunner/zipball/181eaeeb838ad3d80fbbcfb0657a46bc212bbd4e", + "reference": "181eaeeb838ad3d80fbbcfb0657a46bc212bbd4e", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/http-message": "^1.0 || ^2.0", "psr/http-message-implementation": "^1.0 || ^2.0", "psr/http-server-handler": "^1.0" }, "require-dev": { - "laminas/laminas-coding-standard": "~3.0.0", - "laminas/laminas-diactoros": "^3.4.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "phpunit/phpunit": "^10.5.46", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.10.3" }, "type": "library", "extra": { @@ -1960,7 +1957,7 @@ "type": "community_bridge" } ], - "time": "2024-10-17T20:37:17+00:00" + "time": "2025-10-12T20:58:29+00:00" }, { "name": "laminas/laminas-json", @@ -2026,20 +2023,20 @@ }, { "name": "laminas/laminas-loader", - "version": "2.11.1", + "version": "2.12.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-loader.git", - "reference": "c507d5eccb969f7208434e3980680a1f6c0b1d8d" + "reference": "ec8cee33fb254ee4d9c8e8908c870e5c797e1272" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/c507d5eccb969f7208434e3980680a1f6c0b1d8d", - "reference": "c507d5eccb969f7208434e3980680a1f6c0b1d8d", + "url": "https://api.github.com/repos/laminas/laminas-loader/zipball/ec8cee33fb254ee4d9c8e8908c870e5c797e1272", + "reference": "ec8cee33fb254ee4d9c8e8908c870e5c797e1272", "shasum": "" }, "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "^8.0.0" }, "conflict": { "zendframework/zend-loader": "*" @@ -2079,24 +2076,24 @@ } ], "abandoned": true, - "time": "2024-12-05T14:43:32+00:00" + "time": "2025-12-30T11:30:39+00:00" }, { "name": "laminas/laminas-permissions-acl", - "version": "2.17.0", + "version": "2.18.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-permissions-acl.git", - "reference": "96d710d0a8e6cfa781b2ba184a3dd397634ae2e7" + "reference": "5940f6e7b9e2e3eba671f13dd26e610d2fe9acc3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/96d710d0a8e6cfa781b2ba184a3dd397634ae2e7", - "reference": "96d710d0a8e6cfa781b2ba184a3dd397634ae2e7", + "url": "https://api.github.com/repos/laminas/laminas-permissions-acl/zipball/5940f6e7b9e2e3eba671f13dd26e610d2fe9acc3", + "reference": "5940f6e7b9e2e3eba671f13dd26e610d2fe9acc3", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "laminas/laminas-servicemanager": "<3.0", @@ -2106,9 +2103,9 @@ "laminas/laminas-coding-standard": "^3.0.1", "laminas/laminas-servicemanager": "^3.21", "phpbench/phpbench": "^1.2.10", - "phpunit/phpunit": "^10.5.38", + "phpunit/phpunit": "^10.5.58", "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "vimeo/psalm": "^6.13.1" }, "suggest": { "laminas/laminas-servicemanager": "To support Laminas\\Permissions\\Acl\\Assertion\\AssertionManager plugin manager usage" @@ -2143,25 +2140,25 @@ "type": "community_bridge" } ], - "time": "2024-11-25T10:38:49+00:00" + "time": "2025-11-03T09:15:20+00:00" }, { "name": "laminas/laminas-servicemanager", - "version": "3.23.0", + "version": "3.24.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-servicemanager.git", - "reference": "a8640182b892b99767d54404d19c5c3b3699f79b" + "reference": "b172a0df568bf37ebdfb3658263156eefe3c1e8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/a8640182b892b99767d54404d19c5c3b3699f79b", - "reference": "a8640182b892b99767d54404d19c5c3b3699f79b", + "url": "https://api.github.com/repos/laminas/laminas-servicemanager/zipball/b172a0df568bf37ebdfb3658263156eefe3c1e8c", + "reference": "b172a0df568bf37ebdfb3658263156eefe3c1e8c", "shasum": "" }, "require": { "laminas/laminas-stdlib": "^3.19", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0" }, "conflict": { @@ -2179,12 +2176,12 @@ "require-dev": { "composer/package-versions-deprecated": "^1.11.99.5", "friendsofphp/proxy-manager-lts": "^1.0.18", - "laminas/laminas-code": "^4.14.0", + "laminas/laminas-code": "^4.16.0", "laminas/laminas-coding-standard": "~2.5.0", "laminas/laminas-container-config-test": "^0.8", "mikey179/vfsstream": "^1.6.12", - "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.36", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^10.5.58", "psalm/plugin-phpunit": "^0.18.4", "vimeo/psalm": "^5.26.1" }, @@ -2233,34 +2230,34 @@ "type": "community_bridge" } ], - "time": "2024-10-28T21:32:16+00:00" + "time": "2025-10-14T09:03:51+00:00" }, { "name": "laminas/laminas-stdlib", - "version": "3.20.0", + "version": "3.21.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stdlib.git", - "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4" + "reference": "b1c81514cfe158aadf724c42b34d3d0a8164c096" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/8974a1213be42c3e2f70b2c27b17f910291ab2f4", - "reference": "8974a1213be42c3e2f70b2c27b17f910291ab2f4", + "url": "https://api.github.com/repos/laminas/laminas-stdlib/zipball/b1c81514cfe158aadf724c42b34d3d0a8164c096", + "reference": "b1c81514cfe158aadf724c42b34d3d0a8164c096", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-stdlib": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "^3.0", - "phpbench/phpbench": "^1.3.1", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "^3.1.0", + "phpbench/phpbench": "^1.4.1", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "autoload": { @@ -2292,26 +2289,27 @@ "type": "community_bridge" } ], - "time": "2024-10-29T13:46:07+00:00" + "time": "2025-10-11T18:13:12+00:00" }, { "name": "laminas/laminas-stratigility", - "version": "3.13.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-stratigility.git", - "reference": "3df57528b5c8e9d958515c51006825a83f76d62b" + "reference": "3413771ac42d096a108236f2790bba6803df8a27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/3df57528b5c8e9d958515c51006825a83f76d62b", - "reference": "3df57528b5c8e9d958515c51006825a83f76d62b", + "url": "https://api.github.com/repos/laminas/laminas-stratigility/zipball/3413771ac42d096a108236f2790bba6803df8a27", + "reference": "3413771ac42d096a108236f2790bba6803df8a27", "shasum": "" }, "require": { "fig/http-message-util": "^1.1", "laminas/laminas-escaper": "^2.10.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", + "psr/http-factory": "^1.0.2", "psr/http-message": "^1.0 || ^2.0", "psr/http-server-middleware": "^1.0.2" }, @@ -2319,14 +2317,15 @@ "zendframework/zend-stratigility": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^2.25 || ^3.5.0", - "phpunit/phpunit": "^10.5.37", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^2.25 || ^3.8.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { - "psr/http-message-implementation": "Please install a psr/http-message-implementation to consume Stratigility; e.g., laminas/laminas-diactoros" + "psr/http-factory-implementation": "Please install a psr/http-factory implementation to consume Stratigility; e.g., laminas/laminas-diactoros", + "psr/http-message-implementation": "Please install a psr/http-message implementation to consume Stratigility; e.g., laminas/laminas-diactoros" }, "type": "library", "autoload": { @@ -2334,11 +2333,7 @@ "src/functions/double-pass-middleware.php", "src/functions/host.php", "src/functions/middleware.php", - "src/functions/path.php", - "src/functions/double-pass-middleware.legacy.php", - "src/functions/host.legacy.php", - "src/functions/middleware.legacy.php", - "src/functions/path.legacy.php" + "src/functions/path.php" ], "psr-4": { "Laminas\\Stratigility\\": "src/" @@ -2355,6 +2350,7 @@ "laminas", "middleware", "psr-15", + "psr-17", "psr-7" ], "support": { @@ -2371,33 +2367,33 @@ "type": "community_bridge" } ], - "time": "2024-10-28T11:28:41+00:00" + "time": "2025-10-14T20:48:06+00:00" }, { "name": "laminas/laminas-uri", - "version": "2.13.0", + "version": "2.14.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-uri.git", - "reference": "de53600ae8153b3605bb6edce8aeeef524eaafba" + "reference": "e804288f4540988903dc0ede386ce5eec87198df" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/de53600ae8153b3605bb6edce8aeeef524eaafba", - "reference": "de53600ae8153b3605bb6edce8aeeef524eaafba", + "url": "https://api.github.com/repos/laminas/laminas-uri/zipball/e804288f4540988903dc0ede386ce5eec87198df", + "reference": "e804288f4540988903dc0ede386ce5eec87198df", "shasum": "" }, "require": { "laminas/laminas-escaper": "^2.9", "laminas/laminas-validator": "^2.39 || ^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-uri": "*" }, "require-dev": { "laminas/laminas-coding-standard": "~2.4.0", - "phpunit/phpunit": "^9.6.20" + "phpunit/phpunit": "^11.0" }, "type": "library", "autoload": { @@ -2429,26 +2425,26 @@ "type": "community_bridge" } ], - "time": "2024-12-03T12:27:51+00:00" + "time": "2025-12-05T10:02:11+00:00" }, { "name": "laminas/laminas-validator", - "version": "2.64.2", + "version": "2.65.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-validator.git", - "reference": "771e504760448ac7af660710237ceb93be602e08" + "reference": "f0767ca83e0dd91a6f8ccdd4f0887eb132c0ea49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/771e504760448ac7af660710237ceb93be602e08", - "reference": "771e504760448ac7af660710237ceb93be602e08", + "url": "https://api.github.com/repos/laminas/laminas-validator/zipball/f0767ca83e0dd91a6f8ccdd4f0887eb132c0ea49", + "reference": "f0767ca83e0dd91a6f8ccdd4f0887eb132c0ea49", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.19", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, "conflict": { @@ -2457,15 +2453,15 @@ "require-dev": { "laminas/laminas-coding-standard": "^2.5", "laminas/laminas-db": "^2.20", - "laminas/laminas-filter": "^2.35.2", - "laminas/laminas-i18n": "^2.26.0", - "laminas/laminas-session": "^2.20", - "laminas/laminas-uri": "^2.11.0", - "phpunit/phpunit": "^10.5.20", + "laminas/laminas-filter": "^2.41.0", + "laminas/laminas-i18n": "^2.30.0", + "laminas/laminas-session": "^2.25.1", + "laminas/laminas-uri": "^2.13.0", + "phpunit/phpunit": "^10.5.58", "psalm/plugin-phpunit": "^0.19.0", "psr/http-client": "^1.0.3", "psr/http-factory": "^1.1.0", - "vimeo/psalm": "^5.24.0" + "vimeo/psalm": "^5.26.1" }, "suggest": { "laminas/laminas-db": "Laminas\\Db component, required by the (No)RecordExists validator", @@ -2513,20 +2509,20 @@ "type": "community_bridge" } ], - "time": "2024-11-26T21:29:17+00:00" + "time": "2025-10-13T14:40:30+00:00" }, { "name": "laminas/laminas-view", - "version": "2.36.0", + "version": "2.44.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-view.git", - "reference": "ddc9207725cb50508ea48fcf1210dc8480264196" + "reference": "93f5c8b52af2603f1aa494f1c98ce2013baff18e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-view/zipball/ddc9207725cb50508ea48fcf1210dc8480264196", - "reference": "ddc9207725cb50508ea48fcf1210dc8480264196", + "url": "https://api.github.com/repos/laminas/laminas-view/zipball/93f5c8b52af2603f1aa494f1c98ce2013baff18e", + "reference": "93f5c8b52af2603f1aa494f1c98ce2013baff18e", "shasum": "" }, "require": { @@ -2538,10 +2534,12 @@ "laminas/laminas-json": "^3.3", "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-stdlib": "^3.10.1", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1 || ^2" }, "conflict": { + "amphp/dns": "<2.1.2", + "amphp/socket": "<2.3.1", "container-interop/container-interop": "<1.2", "laminas/laminas-router": "<3.0.1", "laminas/laminas-session": "<2.12", @@ -2549,23 +2547,23 @@ }, "require-dev": { "laminas/laminas-authentication": "^2.18", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-feed": "^2.23", - "laminas/laminas-filter": "^2.39", - "laminas/laminas-http": "^2.20", - "laminas/laminas-i18n": "^2.29.0", - "laminas/laminas-modulemanager": "^2.17", + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-feed": "^2.25.0", + "laminas/laminas-filter": "^2.41", + "laminas/laminas-http": "^2.22", + "laminas/laminas-i18n": "^2.30.0", + "laminas/laminas-modulemanager": "^2.18", "laminas/laminas-mvc": "^3.8.0", "laminas/laminas-mvc-i18n": "^1.9", - "laminas/laminas-mvc-plugin-flashmessenger": "^1.10.1", - "laminas/laminas-navigation": "^2.20.0", - "laminas/laminas-paginator": "^2.19.0", - "laminas/laminas-permissions-acl": "^2.16", + "laminas/laminas-mvc-plugin-flashmessenger": "^1.11.0", + "laminas/laminas-navigation": "^2.21.0", + "laminas/laminas-paginator": "^2.20.0", + "laminas/laminas-permissions-acl": "^2.17", "laminas/laminas-router": "^3.14.0", - "laminas/laminas-uri": "^2.12", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-uri": "^2.13", + "phpunit/phpunit": "^10.5.58", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "laminas/laminas-authentication": "Laminas\\Authentication component", @@ -2613,29 +2611,29 @@ "type": "community_bridge" } ], - "time": "2024-11-21T17:42:20+00:00" + "time": "2025-11-17T01:59:08+00:00" }, { "name": "mezzio/mezzio", - "version": "3.20.1", + "version": "3.26.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio.git", - "reference": "e60bb257e91cdeb9304b02c28b8c72dcc45b38b0" + "reference": "1b3b1014677884db284f2a5c45888f0427a910e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio/zipball/e60bb257e91cdeb9304b02c28b8c72dcc45b38b0", - "reference": "e60bb257e91cdeb9304b02c28b8c72dcc45b38b0", + "url": "https://api.github.com/repos/mezzio/mezzio/zipball/1b3b1014677884db284f2a5c45888f0427a910e8", + "reference": "1b3b1014677884db284f2a5c45888f0427a910e8", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.5", "laminas/laminas-httphandlerrunner": "^2.1", - "laminas/laminas-stratigility": "^3.5", - "mezzio/mezzio-router": "^3.7", - "mezzio/mezzio-template": "^2.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "laminas/laminas-stratigility": "^4.3", + "mezzio/mezzio-router": "^3.15.0 || ^4.0.0", + "mezzio/mezzio-template": "^2.2 || ^3.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0||^2.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0.1 || ^2.0.0", @@ -2652,15 +2650,15 @@ "zendframework/zend-expressive": "*" }, "require-dev": { - "filp/whoops": "^2.16.0", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4.0", - "laminas/laminas-servicemanager": "^3.22.1", - "mezzio/mezzio-fastroute": "^3.11", - "mezzio/mezzio-laminasrouter": "^3.9", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "filp/whoops": "^2.18.4", + "laminas/laminas-coding-standard": "^3.1.0", + "laminas/laminas-diactoros": "^3.8.0", + "laminas/laminas-servicemanager": "^3.24.0", + "mezzio/mezzio-fastroute": "^3.14", + "mezzio/mezzio-laminasrouter": "^3.12", + "phpunit/phpunit": "^11.5.44", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "filp/whoops": "^2.1 to use the Whoops error handler", @@ -2719,28 +2717,28 @@ "type": "community_bridge" } ], - "time": "2024-10-18T07:47:27+00:00" + "time": "2025-11-26T12:40:07+00:00" }, { "name": "mezzio/mezzio-fastroute", - "version": "3.12.0", + "version": "3.14.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-fastroute.git", - "reference": "27bc2c9987f8246d7750e3114c96ee392d3eb1c8" + "reference": "00b1dd8560566d745a5a3a18582d1242ad51dd64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/27bc2c9987f8246d7750e3114c96ee392d3eb1c8", - "reference": "27bc2c9987f8246d7750e3114c96ee392d3eb1c8", + "url": "https://api.github.com/repos/mezzio/mezzio-fastroute/zipball/00b1dd8560566d745a5a3a18582d1242ad51dd64", + "reference": "00b1dd8560566d745a5a3a18582d1242ad51dd64", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.2", "laminas/laminas-stdlib": "^3.19.0", - "mezzio/mezzio-router": "^3.14", + "mezzio/mezzio-router": "^3.18 || ^4.0.1", "nikic/fast-route": "^1.2", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0 || ^2.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, @@ -2749,13 +2747,13 @@ "zendframework/zend-expressive-fastroute": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4.0", - "laminas/laminas-stratigility": "^4.0.2", + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "laminas/laminas-stratigility": "^4.2.0", "mikey179/vfsstream": "^1.6.12", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "extra": { @@ -2797,40 +2795,42 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:16:34+00:00" + "time": "2025-10-11T08:43:04+00:00" }, { "name": "mezzio/mezzio-helpers", - "version": "5.17.0", + "version": "5.20.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-helpers.git", - "reference": "c4a0ca62fe2613c70091a2cd3c93b1deb97b3c31" + "reference": "a26ba04bd449d5cdb5ad38b17ce672365dbc9d90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/c4a0ca62fe2613c70091a2cd3c93b1deb97b3c31", - "reference": "c4a0ca62fe2613c70091a2cd3c93b1deb97b3c31", + "url": "https://api.github.com/repos/mezzio/mezzio-helpers/zipball/a26ba04bd449d5cdb5ad38b17ce672365dbc9d90", + "reference": "a26ba04bd449d5cdb5ad38b17ce672365dbc9d90", "shasum": "" }, "require": { - "mezzio/mezzio-router": "^3.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "mezzio/mezzio-router": "^3.18 || ^4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0 || ^2.0", "psr/http-message": "^1.0.1 || ^2.0.0", "psr/http-server-middleware": "^1.0" }, "conflict": { "amphp/amp": "<2.6.4", + "amphp/dns": "<2.1.2", + "amphp/socket": "<2.3.1", "zendframework/zend-expressive-helpers": "*" }, "require-dev": { "ext-json": "*", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "ext-json": "If you wish to use the JsonStrategy with BodyParamsMiddleware" @@ -2874,29 +2874,29 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:14:19+00:00" + "time": "2025-10-11T08:40:34+00:00" }, { "name": "mezzio/mezzio-laminasviewrenderer", - "version": "2.16.0", + "version": "2.19.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-laminasviewrenderer.git", - "reference": "674fcaf23acd329572050c0eed4fbeff859a645a" + "reference": "ae8439e46908e966d5e288109158b4c6d9508f31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-laminasviewrenderer/zipball/674fcaf23acd329572050c0eed4fbeff859a645a", - "reference": "674fcaf23acd329572050c0eed4fbeff859a645a", + "url": "https://api.github.com/repos/mezzio/mezzio-laminasviewrenderer/zipball/ae8439e46908e966d5e288109158b4c6d9508f31", + "reference": "ae8439e46908e966d5e288109158b4c6d9508f31", "shasum": "" }, "require": { "laminas/laminas-servicemanager": "^3.21.0", "laminas/laminas-view": "^2.27.0", "mezzio/mezzio-helpers": "^5.15.0", - "mezzio/mezzio-router": "^3.16.1", + "mezzio/mezzio-router": "^3.16.1 || ^4.0.0", "mezzio/mezzio-template": "^2.8.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0", "psr/http-message": "^1.0.1 || ^2.0.0" }, @@ -2905,10 +2905,10 @@ "zendframework/zend-expressive-zendviewrenderer": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "extra": { @@ -2949,25 +2949,25 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:04:43+00:00" + "time": "2025-10-12T19:04:54+00:00" }, { "name": "mezzio/mezzio-router", - "version": "3.18.0", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-router.git", - "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675" + "reference": "82846ece61e2c7f903baf734de9fcb47f89f999c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/75e9a3e636ee69f3a51006772cf29c00cb5da675", - "reference": "75e9a3e636ee69f3a51006772cf29c00cb5da675", + "url": "https://api.github.com/repos/mezzio/mezzio-router/zipball/82846ece61e2c7f903baf734de9fcb47f89f999c", + "reference": "82846ece61e2c7f903baf734de9fcb47f89f999c", "shasum": "" }, "require": { "fig/http-message-util": "^1.1.5", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.1.2 || ^2.0", "psr/http-factory": "^1.0.2", "psr/http-message": "^1.0.1 || ^2.0.0", @@ -2979,16 +2979,15 @@ "zendframework/zend-expressive-router": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4.0", - "laminas/laminas-servicemanager": "^4.2.0", - "laminas/laminas-stratigility": "^4.0.2", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "laminas/laminas-servicemanager": "^4.4.0", + "laminas/laminas-stratigility": "^4.2.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { - "mezzio/mezzio-aurarouter": "^3.0 to use the Aura.Router routing adapter", "mezzio/mezzio-fastroute": "^3.0 to use the FastRoute routing adapter", "mezzio/mezzio-laminasrouter": "^3.0 to use the laminas-router routing adapter" }, @@ -3031,26 +3030,26 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:18:01+00:00" + "time": "2025-10-11T09:16:49+00:00" }, { "name": "mezzio/mezzio-session", - "version": "1.16.0", + "version": "1.17.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-session.git", - "reference": "b58dc7ad0c895a109e7849c3f2f991120eb8b61d" + "reference": "215095b4445283f2d527c1edc3338aa1ffbe3067" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-session/zipball/b58dc7ad0c895a109e7849c3f2f991120eb8b61d", - "reference": "b58dc7ad0c895a109e7849c3f2f991120eb8b61d", + "url": "https://api.github.com/repos/mezzio/mezzio-session/zipball/215095b4445283f2d527c1edc3338aa1ffbe3067", + "reference": "215095b4445283f2d527c1edc3338aa1ffbe3067", "shasum": "" }, "require": { "dflydev/fig-cookies": "^3.0", "ext-json": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "psr/container": "^1.0 || ^2.0", "psr/http-server-middleware": "^1.0" }, @@ -3058,11 +3057,11 @@ "zendframework/zend-expressive-session": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.6.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "mezzio/mezzio-csrf": "^1.0 || ^1.0-dev for CSRF protection capabilities", @@ -3107,38 +3106,40 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:28:57+00:00" + "time": "2025-10-11T18:36:13+00:00" }, { "name": "mezzio/mezzio-session-ext", - "version": "1.20.0", + "version": "1.21.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-session-ext.git", - "reference": "5db6a1780fdafa328f85311ecadffd1d5f0c4a7b" + "reference": "c8fe92d67961c23ad222653d61fbb004959e40c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-session-ext/zipball/5db6a1780fdafa328f85311ecadffd1d5f0c4a7b", - "reference": "5db6a1780fdafa328f85311ecadffd1d5f0c4a7b", + "url": "https://api.github.com/repos/mezzio/mezzio-session-ext/zipball/c8fe92d67961c23ad222653d61fbb004959e40c8", + "reference": "c8fe92d67961c23ad222653d61fbb004959e40c8", "shasum": "" }, "require": { "ext-session": "*", "mezzio/mezzio-session": "^1.4", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "amphp/amp": "<2.6.4", "zendframework/zend-expressive-session-ext": "*" }, "require-dev": { - "dflydev/fig-cookies": "^3.1", - "laminas/laminas-coding-standard": "~2.5.0", - "laminas/laminas-diactoros": "^3.4", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "amphp/dns": "^1.24 || ^2.1.2", + "amphp/socket": "^1.2.1 || ^2.3.1", + "dflydev/fig-cookies": "^3.2", + "laminas/laminas-coding-standard": "~3.1.0", + "laminas/laminas-diactoros": "^3.7", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "type": "library", "extra": { @@ -3179,33 +3180,33 @@ "type": "community_bridge" } ], - "time": "2024-10-16T21:26:31+00:00" + "time": "2025-10-12T22:31:09+00:00" }, { "name": "mezzio/mezzio-template", - "version": "2.11.0", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/mezzio/mezzio-template.git", - "reference": "836b7e55f92277d5c557f96895d13a547c4abf14" + "reference": "ad72bb31036d0639a5c5a502af234217faf6932f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/836b7e55f92277d5c557f96895d13a547c4abf14", - "reference": "836b7e55f92277d5c557f96895d13a547c4abf14", + "url": "https://api.github.com/repos/mezzio/mezzio-template/zipball/ad72bb31036d0639a5c5a502af234217faf6932f", + "reference": "ad72bb31036d0639a5c5a502af234217faf6932f", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zendframework/zend-expressive-template": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~2.5.0", - "phpunit/phpunit": "^10.5.36", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "laminas/laminas-coding-standard": "~3.1.0", + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "suggest": { "mezzio/mezzio-laminasviewrenderer": "^2.0 to use the laminas-view PhpRenderer template renderer", @@ -3243,27 +3244,27 @@ "type": "community_bridge" } ], - "time": "2024-10-16T20:54:53+00:00" + "time": "2025-10-11T08:45:28+00:00" }, { "name": "moneyphp/money", - "version": "v4.7.0", + "version": "v4.8.0", "source": { "type": "git", "url": "https://github.com/moneyphp/money.git", - "reference": "af048f0206d3b39b8fad9de6a230cedf765365fa" + "reference": "b358727ea5a5cd2d7475e59c31dfc352440ae7ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/moneyphp/money/zipball/af048f0206d3b39b8fad9de6a230cedf765365fa", - "reference": "af048f0206d3b39b8fad9de6a230cedf765365fa", + "url": "https://api.github.com/repos/moneyphp/money/zipball/b358727ea5a5cd2d7475e59c31dfc352440ae7ec", + "reference": "b358727ea5a5cd2d7475e59c31dfc352440ae7ec", "shasum": "" }, "require": { "ext-bcmath": "*", "ext-filter": "*", "ext-json": "*", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "cache/taggable-cache": "^1.1.0", @@ -3331,9 +3332,9 @@ ], "support": { "issues": "https://github.com/moneyphp/money/issues", - "source": "https://github.com/moneyphp/money/tree/v4.7.0" + "source": "https://github.com/moneyphp/money/tree/v4.8.0" }, - "time": "2025-04-03T08:26:36+00:00" + "time": "2025-10-23T07:55:09+00:00" }, { "name": "monolog/monolog", @@ -3490,16 +3491,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -3518,7 +3519,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.x-dev" } }, "autoload": { @@ -3542,30 +3543,32 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v3.0.0", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512" + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/df1e7fde177501eee2037dd159cf04f5f301a512", - "reference": "df1e7fde177501eee2037dd159cf04f5f301a512", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", + "reference": "d5b01a39b3415c2cd581d3bd3a3575c1ebbd8e77", "shasum": "" }, "require": { "php": "^8" }, "require-dev": { - "phpunit/phpunit": "^9", - "vimeo/psalm": "^4|^5" + "infection/infection": "^0", + "nikic/php-fuzzer": "^0", + "phpunit/phpunit": "^9|^10|^11", + "vimeo/psalm": "^4|^5|^6" }, "type": "library", "autoload": { @@ -3611,7 +3614,7 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2024-05-08T12:36:18+00:00" + "time": "2025-09-24T15:06:41+00:00" }, { "name": "psr/cache", @@ -4081,35 +4084,35 @@ }, { "name": "roave/psr-container-doctrine", - "version": "5.2.2", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/Roave/psr-container-doctrine.git", - "reference": "52eb3163b266a1f97007438c284758a75622bb62" + "reference": "fee8378c681942f994a2d042ffe084b7cf51de5e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Roave/psr-container-doctrine/zipball/52eb3163b266a1f97007438c284758a75622bb62", - "reference": "52eb3163b266a1f97007438c284758a75622bb62", + "url": "https://api.github.com/repos/Roave/psr-container-doctrine/zipball/fee8378c681942f994a2d042ffe084b7cf51de5e", + "reference": "fee8378c681942f994a2d042ffe084b7cf51de5e", "shasum": "" }, "require": { - "doctrine/common": "^3.4.4", - "doctrine/dbal": "^4.0.4", + "doctrine/common": "^3.5.0", + "doctrine/dbal": "^4.3.4", "doctrine/event-manager": "^2.0.1", - "doctrine/migrations": "^3.8.0", - "doctrine/orm": "^3.2.1", - "doctrine/persistence": "^3.3.3", - "php": "~8.2.0 || ~8.3.0", + "doctrine/migrations": "^3.9.4", + "doctrine/orm": "^3.5.2", + "doctrine/persistence": "^3.4.0 || ^4.1.1", + "php": "~8.4.0 || ~8.5.0", "psr/cache": "^2.0.0 || ^3.0.0", "psr/container": "^1.1.2 || ^2.0.2" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "phpunit/phpunit": "^10.5.26", - "psalm/plugin-phpunit": "^0.19.0", - "symfony/yaml": "^7.1.1", - "vimeo/psalm": "^5.25.0" + "doctrine/coding-standard": "^14.0.0", + "phpunit/phpunit": "^12.4.1", + "psalm/plugin-phpunit": "^0.19.5", + "symfony/yaml": "^7.3.3", + "vimeo/psalm": "^6.13.1" }, "type": "library", "autoload": { @@ -4136,9 +4139,9 @@ "homepage": "https://github.com/Roave/psr-container-doctrine", "support": { "issues": "https://github.com/Roave/psr-container-doctrine/issues", - "source": "https://github.com/Roave/psr-container-doctrine/tree/5.2.2" + "source": "https://github.com/Roave/psr-container-doctrine/tree/6.1.0" }, - "time": "2024-07-12T08:47:23+00:00" + "time": "2025-10-23T13:28:05+00:00" }, { "name": "spomky-labs/otphp", @@ -4224,32 +4227,30 @@ }, { "name": "symfony/cache", - "version": "v7.2.5", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c" + "reference": "0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/9131e3018872d2ebb6fe8a9a4d6631273513d42c", - "reference": "9131e3018872d2ebb6fe8a9a4d6631273513d42c", + "url": "https://api.github.com/repos/symfony/cache/zipball/0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e", + "reference": "0e67dc8145810d4e1c0d13c0e1d29ceb930b1c8e", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "psr/cache": "^2.0|^3.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", - "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/cache-contracts": "^3.6", "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^7.4|^8.0" }, "conflict": { - "doctrine/dbal": "<3.6", - "symfony/dependency-injection": "<6.4", - "symfony/http-kernel": "<6.4", - "symfony/var-dumper": "<6.4" + "doctrine/dbal": "<4.3", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1" }, "provide": { "psr/cache-implementation": "2.0|3.0", @@ -4258,16 +4259,16 @@ }, "require-dev": { "cache/integration-tests": "dev-master", - "doctrine/dbal": "^3.6|^4", + "doctrine/dbal": "^4.3", "predis/predis": "^1.1|^2.0", "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/clock": "^7.4|^8.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/filesystem": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4302,7 +4303,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.2.5" + "source": "https://github.com/symfony/cache/tree/v8.0.1" }, "funding": [ { @@ -4313,12 +4314,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-03-25T15:54:33+00:00" + "time": "2025-12-04T18:17:06+00:00" }, { "name": "symfony/cache-contracts", @@ -4398,47 +4403,39 @@ }, { "name": "symfony/console", - "version": "v7.3.1", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" + "reference": "fcb73f69d655b48fcb894a262f074218df08bd58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", - "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", + "url": "https://api.github.com/repos/symfony/console/zipball/fcb73f69d655b48fcb894a262f074218df08bd58", + "reference": "fcb73f69d655b48fcb894a262f074218df08bd58", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "symfony/string": "^7.4|^8.0" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4472,7 +4469,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.3.1" + "source": "https://github.com/symfony/console/tree/v8.0.1" }, "funding": [ { @@ -4483,12 +4480,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-06-27T19:55:54+00:00" + "time": "2025-12-05T15:25:33+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4559,24 +4560,24 @@ }, { "name": "symfony/event-dispatcher", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" + "reference": "573f95783a2ec6e38752979db139f09fec033f03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", - "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/573f95783a2ec6e38752979db139f09fec033f03", + "reference": "573f95783a2ec6e38752979db139f09fec033f03", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/event-dispatcher-contracts": "^2.5|^3" }, "conflict": { - "symfony/dependency-injection": "<6.4", + "symfony/security-http": "<7.4", "symfony/service-contracts": "<2.5" }, "provide": { @@ -4585,13 +4586,14 @@ }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/error-handler": "^7.4|^8.0", + "symfony/expression-language": "^7.4|^8.0", + "symfony/framework-bundle": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/stopwatch": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4619,7 +4621,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/v7.3.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.0" }, "funding": [ { @@ -4630,12 +4632,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-22T09:11:45+00:00" + "time": "2025-10-30T14:17:19+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -4715,39 +4721,35 @@ }, { "name": "symfony/mailer", - "version": "v7.2.3", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3" + "reference": "f9b546f0e28cbd08fd5d03f2472aad913a9398f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f3871b182c44997cf039f3b462af4a48fb85f9d3", - "reference": "f3871b182c44997cf039f3b462af4a48fb85f9d3", + "url": "https://api.github.com/repos/symfony/mailer/zipball/f9b546f0e28cbd08fd5d03f2472aad913a9398f9", + "reference": "f9b546f0e28cbd08fd5d03f2472aad913a9398f9", "shasum": "" }, "require": { "egulias/email-validator": "^2.1.10|^3|^4", - "php": ">=8.2", + "php": ">=8.4", "psr/event-dispatcher": "^1", "psr/log": "^1|^2|^3", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/mime": "^7.2", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/mime": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/messenger": "<6.4", - "symfony/mime": "<6.4", - "symfony/twig-bridge": "<6.4" + "symfony/http-client-contracts": "<2.5" }, "require-dev": { - "symfony/console": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/twig-bridge": "^6.4|^7.0" + "symfony/console": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/twig-bridge": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4775,7 +4777,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.2.3" + "source": "https://github.com/symfony/mailer/tree/v8.0.0" }, "funding": [ { @@ -4786,48 +4788,50 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-01-27T11:08:17+00:00" + "time": "2025-11-27T08:09:45+00:00" }, { "name": "symfony/mime", - "version": "v7.2.4", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + "reference": "7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "url": "https://api.github.com/repos/symfony/mime/zipball/7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40", + "reference": "7576ce3b2b4d3a2a7fe7020a07a392065d6ffd40", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-intl-idn": "^1.10", "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<6.4", - "symfony/serializer": "<6.4.3|>7.0,<7.0.3" + "phpdocumentor/type-resolver": "<1.4.0" }, "require-dev": { "egulias/email-validator": "^2.1.10|^3.1|^4", "league/html-to-markdown": "^5.0", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/serializer": "^6.4.3|^7.0.3" + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/property-access": "^7.4|^8.0", + "symfony/property-info": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -4859,7 +4863,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.4" + "source": "https://github.com/symfony/mime/tree/v8.0.0" }, "funding": [ { @@ -4870,16 +4874,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-19T08:51:20+00:00" + "time": "2025-11-16T10:17:21+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -4938,7 +4946,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0" }, "funding": [ { @@ -4949,6 +4957,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -4958,16 +4970,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", - "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", + "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", "shasum": "" }, "require": { @@ -5016,7 +5028,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" }, "funding": [ { @@ -5027,25 +5039,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-06-27T09:58:17+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { @@ -5099,7 +5115,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.33.0" }, "funding": [ { @@ -5110,16 +5126,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -5180,7 +5200,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" }, "funding": [ { @@ -5191,6 +5211,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5200,7 +5224,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -5261,7 +5285,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" }, "funding": [ { @@ -5272,6 +5296,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -5281,16 +5309,16 @@ }, { "name": "symfony/polyfill-php84", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "000df7860439609837bbe28670b0be15783b7fbf" + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/000df7860439609837bbe28670b0be15783b7fbf", - "reference": "000df7860439609837bbe28670b0be15783b7fbf", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", + "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", "shasum": "" }, "require": { @@ -5337,7 +5365,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" }, "funding": [ { @@ -5348,25 +5376,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-20T12:04:08+00:00" + "time": "2025-06-24T13:30:11+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.0", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", - "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", + "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", "shasum": "" }, "require": { @@ -5420,7 +5452,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -5431,29 +5463,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-25T09:37:31+00:00" + "time": "2025-07-15T11:30:57+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd" + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", - "reference": "5a49289e2b308214c8b9c2fda4ea454d8b8ad7cd", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/67df1914c6ccd2d7b52f70d40cf2aea02159d942", + "reference": "67df1914c6ccd2d7b52f70d40cf2aea02159d942", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -5482,7 +5518,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" + "source": "https://github.com/symfony/stopwatch/tree/v8.0.0" }, "funding": [ { @@ -5493,44 +5529,47 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-02-24T10:49:57+00:00" + "time": "2025-08-04T07:36:47+00:00" }, { "name": "symfony/string", - "version": "v7.3.0", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", - "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", + "url": "https://api.github.com/repos/symfony/string/zipball/ba65a969ac918ce0cc3edfac6cdde847eba231dc", + "reference": "ba65a969ac918ce0cc3edfac6cdde847eba231dc", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1", - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5569,7 +5608,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.3.0" + "source": "https://github.com/symfony/string/tree/v8.0.1" }, "funding": [ { @@ -5580,34 +5619,38 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-20T20:19:01+00:00" + "time": "2025-12-01T09:13:36+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.2.6", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "422b8de94c738830a1e071f59ad14d67417d7007" + "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/422b8de94c738830a1e071f59ad14d67417d7007", - "reference": "422b8de94c738830a1e071f59ad14d67417d7007", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", + "reference": "7345f46c251f2eb27c7b3ebdb5bb076b3ffcae04", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "symfony/property-access": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5645,7 +5688,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.2.6" + "source": "https://github.com/symfony/var-exporter/tree/v8.0.0" }, "funding": [ { @@ -5656,12 +5699,16 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-05-02T08:36:00+00:00" + "time": "2025-11-05T18:53:00+00:00" }, { "name": "webimpress/safe-writer", @@ -5724,28 +5771,28 @@ }, { "name": "webmozart/assert", - "version": "1.11.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68", + "reference": "9be6926d8b485f55b9229203f962b51ed377ba68", "shasum": "" }, "require": { "ext-ctype": "*", + "ext-date": "*", + "ext-filter": "*", "php": "^7.2 || ^8.0" }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" + "suggest": { + "ext-intl": "", + "ext-simplexml": "", + "ext-spl": "" }, "type": "library", "extra": { @@ -5776,22 +5823,22 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "source": "https://github.com/webmozarts/assert/tree/1.12.1" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2025-10-29T15:56:20+00:00" }, { "name": "webonyx/graphql-php", - "version": "v15.24.0", + "version": "v15.29.3", "source": { "type": "git", "url": "https://github.com/webonyx/graphql-php.git", - "reference": "030a04d22d52d7fc07049d0e3b683d2b40f90457" + "reference": "abe7cf760fd7d322e3e685b0b2fe14cedb73fafe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/030a04d22d52d7fc07049d0e3b683d2b40f90457", - "reference": "030a04d22d52d7fc07049d0e3b683d2b40f90457", + "url": "https://api.github.com/repos/webonyx/graphql-php/zipball/abe7cf760fd7d322e3e685b0b2fe14cedb73fafe", + "reference": "abe7cf760fd7d322e3e685b0b2fe14cedb73fafe", "shasum": "" }, "require": { @@ -5804,22 +5851,23 @@ "amphp/http-server": "^2.1", "dms/phpunit-arraysubset-asserts": "dev-master", "ergebnis/composer-normalize": "^2.28", - "friendsofphp/php-cs-fixer": "3.86.0", + "friendsofphp/php-cs-fixer": "3.92.3", "mll-lab/php-cs-fixer-config": "5.11.0", "nyholm/psr7": "^1.5", "phpbench/phpbench": "^1.2", "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "2.1.22", - "phpstan/phpstan-phpunit": "2.0.7", - "phpstan/phpstan-strict-rules": "2.0.6", + "phpstan/phpstan": "2.1.33", + "phpstan/phpstan-phpunit": "2.0.11", + "phpstan/phpstan-strict-rules": "2.0.7", "phpunit/phpunit": "^9.5 || ^10.5.21 || ^11", "psr/http-message": "^1 || ^2", "react/http": "^1.6", "react/promise": "^2.0 || ^3.0", "rector/rector": "^2.0", "symfony/polyfill-php81": "^1.23", - "symfony/var-exporter": "^5 || ^6 || ^7", - "thecodingmachine/safe": "^1.3 || ^2 || ^3" + "symfony/var-exporter": "^5 || ^6 || ^7 || ^8", + "thecodingmachine/safe": "^1.3 || ^2 || ^3", + "ticketswap/phpstan-error-formatter": "1.2.4" }, "suggest": { "amphp/http-server": "To leverage async resolving with webserver on AMPHP platform", @@ -5844,7 +5892,7 @@ ], "support": { "issues": "https://github.com/webonyx/graphql-php/issues", - "source": "https://github.com/webonyx/graphql-php/tree/v15.24.0" + "source": "https://github.com/webonyx/graphql-php/tree/v15.29.3" }, "funding": [ { @@ -5852,7 +5900,7 @@ "type": "open_collective" } ], - "time": "2025-08-20T10:09:37+00:00" + "time": "2025-12-29T13:48:44+00:00" } ], "packages-dev": [ @@ -6001,16 +6049,16 @@ }, { "name": "composer/semver", - "version": "3.4.3", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", - "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -6062,7 +6110,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.3" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -6072,13 +6120,9 @@ { "url": "https://github.com/composer", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/composer/composer", - "type": "tidelift" } ], - "time": "2024-09-19T14:15:21+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "composer/xdebug-handler", @@ -6195,16 +6239,16 @@ }, { "name": "fidry/cpu-core-counter", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "8520451a140d3f46ac33042715115e290cf5785f" + "reference": "db9508f7b1474469d9d3c53b86f817e344732678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", - "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678", + "reference": "db9508f7b1474469d9d3c53b86f817e344732678", "shasum": "" }, "require": { @@ -6214,10 +6258,10 @@ "fidry/makefile": "^0.2.0", "fidry/php-cs-fixer-config": "^1.1.2", "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^8.5.31 || ^9.5.26", "webmozarts/strict-phpunit": "^7.5" }, @@ -6244,7 +6288,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0" }, "funding": [ { @@ -6252,63 +6296,62 @@ "type": "github" } ], - "time": "2024-08-06T10:04:20+00:00" + "time": "2025-08-14T07:29:31+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.82.0", + "version": "v3.92.3", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "db2a44dc899d40f20609f0ea53e952c64c028968" + "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/db2a44dc899d40f20609f0ea53e952c64c028968", - "reference": "db2a44dc899d40f20609f0ea53e952c64c028968", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", + "reference": "2ba8f5a60f6f42fb65758cfb3768434fa2d1c7e8", "shasum": "" }, "require": { - "clue/ndjson-react": "^1.0", + "clue/ndjson-react": "^1.3", "composer/semver": "^3.4", "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", - "fidry/cpu-core-counter": "^1.2", + "fidry/cpu-core-counter": "^1.3", "php": "^7.4 || ^8.0", "react/child-process": "^0.6.6", - "react/event-loop": "^1.0", - "react/promise": "^2.11 || ^3.0", - "react/socket": "^1.0", - "react/stream": "^1.0", + "react/event-loop": "^1.5", + "react/socket": "^1.16", + "react/stream": "^1.4", "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", - "symfony/console": "^5.4.45 || ^6.4.13 || ^7.0", - "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", - "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", - "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", - "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", - "symfony/polyfill-mbstring": "^1.32", - "symfony/polyfill-php80": "^1.32", - "symfony/polyfill-php81": "^1.32", - "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", - "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" + "symfony/console": "^5.4.47 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/filesystem": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/finder": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0", + "symfony/polyfill-mbstring": "^1.33", + "symfony/polyfill-php80": "^1.33", + "symfony/polyfill-php81": "^1.33", + "symfony/polyfill-php84": "^1.33", + "symfony/process": "^5.4.47 || ^6.4.24 || ^7.2 || ^8.0", + "symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0 || ^8.0" }, "require-dev": { - "facile-it/paraunit": "^1.3.1 || ^2.6", - "infection/infection": "^0.29.14", - "justinrainbow/json-schema": "^5.3 || ^6.4", + "facile-it/paraunit": "^1.3.1 || ^2.7", + "infection/infection": "^0.31.0", + "justinrainbow/json-schema": "^6.5", "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.8", - "php-cs-fixer/accessible-object": "^1.1", + "php-coveralls/php-coveralls": "^2.9", "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6", "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6", - "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", - "symfony/polyfill-php84": "^1.32", - "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", - "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" + "phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34", + "symfony/polyfill-php85": "^1.33", + "symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2 || ^8.0", + "symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2 || ^8.0" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -6323,7 +6366,7 @@ "PhpCsFixer\\": "src/" }, "exclude-from-classmap": [ - "src/Fixer/Internal/*" + "src/**/Internal/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -6349,7 +6392,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.82.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.92.3" }, "funding": [ { @@ -6357,34 +6400,34 @@ "type": "github" } ], - "time": "2025-07-07T22:38:13+00:00" + "time": "2025-12-18T10:45:02+00:00" }, { "name": "laminas/laminas-development-mode", - "version": "3.13.0", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-development-mode.git", - "reference": "228efb56b5ecf16c0978082830a2887792b3a67c" + "reference": "87611d4d742dc314244dcbe4e173a2af11a7c0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/228efb56b5ecf16c0978082830a2887792b3a67c", - "reference": "228efb56b5ecf16c0978082830a2887792b3a67c", + "url": "https://api.github.com/repos/laminas/laminas-development-mode/zipball/87611d4d742dc314244dcbe4e173a2af11a7c0bc", + "reference": "87611d4d742dc314244dcbe4e173a2af11a7c0bc", "shasum": "" }, "require": { - "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "conflict": { "zfcampus/zf-development-mode": "*" }, "require-dev": { - "laminas/laminas-coding-standard": "~3.0.1", + "laminas/laminas-coding-standard": "~3.1.0", "mikey179/vfsstream": "^1.6.12", - "phpunit/phpunit": "^10.5.38", - "psalm/plugin-phpunit": "^0.19.0", - "vimeo/psalm": "^5.26.1" + "phpunit/phpunit": "^11.5.42", + "psalm/plugin-phpunit": "^0.19.5", + "vimeo/psalm": "^6.13.1" }, "bin": [ "bin/laminas-development-mode" @@ -6418,20 +6461,20 @@ "type": "community_bridge" } ], - "time": "2024-11-21T21:25:13+00:00" + "time": "2025-10-14T21:17:32+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", "shasum": "" }, "require": { @@ -6470,7 +6513,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" }, "funding": [ { @@ -6478,7 +6521,7 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-08-01T08:46:24+00:00" }, { "name": "phar-io/manifest", @@ -6600,16 +6643,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.12", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c" - }, + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", - "reference": "96dde49e967c0c22812bcfa7bda4ff82c09f3b0c", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -6654,25 +6692,25 @@ "type": "github" } ], - "time": "2025-04-16T13:19:18+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "phpstan/phpstan-doctrine", - "version": "2.0.2", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-doctrine.git", - "reference": "a61a04a361b60014ec04881ccb87252d3bf02e94" + "reference": "d20ee0373d22735271f1eb4d631856b5f847d399" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/a61a04a361b60014ec04881ccb87252d3bf02e94", - "reference": "a61a04a361b60014ec04881ccb87252d3bf02e94", + "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/d20ee0373d22735271f1eb4d631856b5f847d399", + "reference": "d20ee0373d22735271f1eb4d631856b5f847d399", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.0.3" + "phpstan/phpstan": "^2.1.13" }, "conflict": { "doctrine/collections": "<1.0", @@ -6696,11 +6734,13 @@ "gedmo/doctrine-extensions": "^3.8", "nesbot/carbon": "^2.49", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-deprecation-rules": "^2.0.2", + "phpstan/phpstan-phpunit": "^2.0.8", "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.6.20", "ramsey/uuid": "^4.2", - "symfony/cache": "^5.4" + "symfony/cache": "^5.4", + "symfony/uid": "^5.4 || ^6.4 || ^7.3" }, "type": "phpstan-extension", "extra": { @@ -6723,41 +6763,40 @@ "description": "Doctrine extensions for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-doctrine/issues", - "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.2" + "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.12" }, - "time": "2025-03-03T09:29:16+00:00" + "time": "2025-12-01T11:34:02+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.32", + "version": "12.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", - "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/4a9739b51cbcb355f6e95659612f92e282a7077b", + "reference": "4a9739b51cbcb355f6e95659612f92e282a7077b", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.19.1 || ^5.1.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-text-template": "^2.0.4", - "sebastian/code-unit-reverse-lookup": "^2.0.3", - "sebastian/complexity": "^2.0.3", - "sebastian/environment": "^5.1.5", - "sebastian/lines-of-code": "^1.0.4", - "sebastian/version": "^3.0.2", - "theseer/tokenizer": "^1.2.3" + "nikic/php-parser": "^5.7.0", + "php": ">=8.3", + "phpunit/php-file-iterator": "^6.0", + "phpunit/php-text-template": "^5.0", + "sebastian/complexity": "^5.0", + "sebastian/environment": "^8.0.3", + "sebastian/lines-of-code": "^4.0", + "sebastian/version": "^6.0", + "theseer/tokenizer": "^2.0.1" }, "require-dev": { - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^12.5.1" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -6766,7 +6805,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "9.2.x-dev" + "dev-main": "12.5.x-dev" } }, "autoload": { @@ -6795,40 +6834,52 @@ "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.32" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/12.5.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/php-code-coverage", + "type": "tidelift" } ], - "time": "2024-08-22T04:23:01+00:00" + "time": "2025-12-24T07:03:04+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.6", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + "reference": "961bc913d42fe24a257bfff826a5068079ac7782" }, "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/961bc913d42fe24a257bfff826a5068079ac7782", + "reference": "961bc913d42fe24a257bfff826a5068079ac7782", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -6855,7 +6906,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/6.0.0" }, "funding": [ { @@ -6863,28 +6915,28 @@ "type": "github" } ], - "time": "2021-12-02T12:48:52+00:00" + "time": "2025-02-07T04:58:37+00:00" }, { "name": "phpunit/php-invoker", - "version": "3.1.1", + "version": "6.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406" }, "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/12b54e689b07a25a9b41e57736dfab6ec9ae5406", + "reference": "12b54e689b07a25a9b41e57736dfab6ec9ae5406", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-pcntl": "*" @@ -6892,7 +6944,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -6918,7 +6970,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/6.0.0" }, "funding": [ { @@ -6926,32 +6979,32 @@ "type": "github" } ], - "time": "2020-09-28T05:58:55+00:00" + "time": "2025-02-07T04:58:58+00:00" }, { "name": "phpunit/php-text-template", - "version": "2.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53" }, "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/e1367a453f0eda562eedb4f659e13aa900d66c53", + "reference": "e1367a453f0eda562eedb4f659e13aa900d66c53", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -6977,7 +7030,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/5.0.0" }, "funding": [ { @@ -6985,32 +7039,32 @@ "type": "github" } ], - "time": "2020-10-26T05:33:50+00:00" + "time": "2025-02-07T04:59:16+00:00" }, { "name": "phpunit/php-timer", - "version": "5.0.3", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc" }, "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/f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", + "reference": "f258ce36aa457f3aa3339f9ed4c81fc66dc8c2cc", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -7036,7 +7090,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/8.0.0" }, "funding": [ { @@ -7044,54 +7099,48 @@ "type": "github" } ], - "time": "2020-10-26T13:16:10+00:00" + "time": "2025-02-07T04:59:38+00:00" }, { "name": "phpunit/phpunit", - "version": "9.6.22", + "version": "12.5.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", - "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4ba0e923f9d3fc655de22f9547c01d15a41fc93a", + "reference": "4ba0e923f9d3fc655de22f9547c01d15a41fc93a", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.12.1", + "myclabs/deep-copy": "^1.13.4", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", - "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.32", - "phpunit/php-file-iterator": "^3.0.6", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.4", - "phpunit/php-timer": "^5.0.3", - "sebastian/cli-parser": "^1.0.2", - "sebastian/code-unit": "^1.0.8", - "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.6", - "sebastian/environment": "^5.1.5", - "sebastian/exporter": "^4.0.6", - "sebastian/global-state": "^5.0.7", - "sebastian/object-enumerator": "^4.0.4", - "sebastian/resource-operations": "^3.0.4", - "sebastian/type": "^3.2.1", - "sebastian/version": "^3.0.2" - }, - "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" + "php": ">=8.3", + "phpunit/php-code-coverage": "^12.5.1", + "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-invoker": "^6.0.0", + "phpunit/php-text-template": "^5.0.0", + "phpunit/php-timer": "^8.0.0", + "sebastian/cli-parser": "^4.2.0", + "sebastian/comparator": "^7.1.3", + "sebastian/diff": "^7.0.0", + "sebastian/environment": "^8.0.3", + "sebastian/exporter": "^7.0.2", + "sebastian/global-state": "^8.0.2", + "sebastian/object-enumerator": "^7.0.0", + "sebastian/type": "^6.0.3", + "sebastian/version": "^6.0.0", + "staabm/side-effects-detector": "^1.0.5" }, "bin": [ "phpunit" @@ -7099,7 +7148,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.6-dev" + "dev-main": "12.5-dev" } }, "autoload": { @@ -7131,7 +7180,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.22" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.4" }, "funding": [ { @@ -7142,12 +7191,20 @@ "url": "https://github.com/sebastianbergmann", "type": "github" }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", "type": "tidelift" } ], - "time": "2024-12-05T13:48:26+00:00" + "time": "2025-12-15T06:05:34+00:00" }, { "name": "react/cache", @@ -7223,16 +7280,16 @@ }, { "name": "react/child-process", - "version": "v0.6.6", + "version": "v0.6.7", "source": { "type": "git", "url": "https://github.com/reactphp/child-process.git", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", - "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/970f0e71945556422ee4570ccbabaedc3cf04ad3", + "reference": "970f0e71945556422ee4570ccbabaedc3cf04ad3", "shasum": "" }, "require": { @@ -7286,7 +7343,7 @@ ], "support": { "issues": "https://github.com/reactphp/child-process/issues", - "source": "https://github.com/reactphp/child-process/tree/v0.6.6" + "source": "https://github.com/reactphp/child-process/tree/v0.6.7" }, "funding": [ { @@ -7294,20 +7351,20 @@ "type": "open_collective" } ], - "time": "2025-01-01T16:37:48+00:00" + "time": "2025-12-23T15:25:20+00:00" }, { "name": "react/dns", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", - "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "url": "https://api.github.com/repos/reactphp/dns/zipball/7562c05391f42701c1fccf189c8225fece1cd7c3", + "reference": "7562c05391f42701c1fccf189c8225fece1cd7c3", "shasum": "" }, "require": { @@ -7362,7 +7419,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.13.0" + "source": "https://github.com/reactphp/dns/tree/v1.14.0" }, "funding": [ { @@ -7370,20 +7427,20 @@ "type": "open_collective" } ], - "time": "2024-06-13T14:18:03+00:00" + "time": "2025-11-18T19:34:28+00:00" }, { "name": "react/event-loop", - "version": "v1.5.0", + "version": "v1.6.0", "source": { "type": "git", "url": "https://github.com/reactphp/event-loop.git", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", - "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/ba276bda6083df7e0050fd9b33f66ad7a4ac747a", + "reference": "ba276bda6083df7e0050fd9b33f66ad7a4ac747a", "shasum": "" }, "require": { @@ -7434,7 +7491,7 @@ ], "support": { "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + "source": "https://github.com/reactphp/event-loop/tree/v1.6.0" }, "funding": [ { @@ -7442,27 +7499,27 @@ "type": "open_collective" } ], - "time": "2023-11-13T13:48:05+00:00" + "time": "2025-11-17T20:46:25+00:00" }, { "name": "react/promise", - "version": "v3.2.0", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", - "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "url": "https://api.github.com/repos/reactphp/promise/zipball/23444f53a813a3296c1368bb104793ce8d88f04a", + "reference": "23444f53a813a3296c1368bb104793ce8d88f04a", "shasum": "" }, "require": { "php": ">=7.1.0" }, "require-dev": { - "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpstan/phpstan": "1.12.28 || 1.4.10", "phpunit/phpunit": "^9.6 || ^7.5" }, "type": "library", @@ -7507,7 +7564,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.2.0" + "source": "https://github.com/reactphp/promise/tree/v3.3.0" }, "funding": [ { @@ -7515,20 +7572,20 @@ "type": "open_collective" } ], - "time": "2024-05-24T10:39:05+00:00" + "time": "2025-08-19T18:57:03+00:00" }, { "name": "react/socket", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", - "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "url": "https://api.github.com/repos/reactphp/socket/zipball/ef5b17b81f6f60504c539313f94f2d826c5faa08", + "reference": "ef5b17b81f6f60504c539313f94f2d826c5faa08", "shasum": "" }, "require": { @@ -7587,7 +7644,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.16.0" + "source": "https://github.com/reactphp/socket/tree/v1.17.0" }, "funding": [ { @@ -7595,7 +7652,7 @@ "type": "open_collective" } ], - "time": "2024-07-26T10:38:09+00:00" + "time": "2025-11-19T20:47:34+00:00" }, { "name": "react/stream", @@ -7677,28 +7734,28 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.2", + "version": "4.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", - "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/90f41072d220e5c40df6e8635f5dafba2d9d4d04", + "reference": "90f41072d220e5c40df6e8635f5dafba2d9d4d04", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "4.2-dev" } }, "autoload": { @@ -7721,153 +7778,60 @@ "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.2" + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/4.2.0" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" - } - ], - "time": "2024-03-02T06:27:43+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "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" - }, - "funding": [ + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "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" - }, - "funding": [ + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, { - "url": "https://github.com/sebastianbergmann", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/sebastian/cli-parser", + "type": "tidelift" } ], - "time": "2020-09-28T05:30:19+00:00" + "time": "2025-09-14T09:36:45+00:00" }, { "name": "sebastian/comparator", - "version": "4.0.8", + "version": "7.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", - "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/dc904b4bb3ab070865fa4068cd84f3da8b945148", + "reference": "dc904b4bb3ab070865fa4068cd84f3da8b945148", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/diff": "^7.0", + "sebastian/exporter": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.2" + }, + "suggest": { + "ext-bcmath": "For comparing BcMath\\Number objects" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "7.1-dev" } }, "autoload": { @@ -7906,41 +7870,54 @@ ], "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/7.1.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/comparator", + "type": "tidelift" } ], - "time": "2022-09-14T12:41:17+00:00" + "time": "2025-08-20T11:27:00+00:00" }, { "name": "sebastian/complexity", - "version": "2.0.3", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", - "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/bad4316aba5303d0221f43f8cee37eb58d384bbb", + "reference": "bad4316aba5303d0221f43f8cee37eb58d384bbb", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "nikic/php-parser": "^5.0", + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -7963,7 +7940,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/5.0.0" }, "funding": [ { @@ -7971,33 +7949,33 @@ "type": "github" } ], - "time": "2023-12-22T06:19:30+00:00" + "time": "2025-02-07T04:55:25+00:00" }, { "name": "sebastian/diff", - "version": "4.0.6", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + "reference": "7ab1ea946c012266ca32390913653d844ecd085f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", - "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7ab1ea946c012266ca32390913653d844ecd085f", + "reference": "7ab1ea946c012266ca32390913653d844ecd085f", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^12.0", + "symfony/process": "^7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8029,7 +8007,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/7.0.0" }, "funding": [ { @@ -8037,27 +8016,27 @@ "type": "github" } ], - "time": "2024-03-02T06:30:58+00:00" + "time": "2025-02-07T04:55:46+00:00" }, { "name": "sebastian/environment", - "version": "5.1.5", + "version": "8.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", - "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/24a711b5c916efc6d6e62aa65aa2ec98fef77f68", + "reference": "24a711b5c916efc6d6e62aa65aa2ec98fef77f68", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "suggest": { "ext-posix": "*" @@ -8065,7 +8044,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -8084,7 +8063,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", @@ -8092,42 +8071,55 @@ ], "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/8.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/environment", + "type": "tidelift" } ], - "time": "2023-02-03T06:03:51+00:00" + "time": "2025-08-12T14:11:56+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.6", + "version": "7.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + "reference": "016951ae10980765e4e7aee491eb288c64e505b7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", - "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/016951ae10980765e4e7aee491eb288c64e505b7", + "reference": "016951ae10980765e4e7aee491eb288c64e505b7", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" + "ext-mbstring": "*", + "php": ">=8.3", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8169,46 +8161,56 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/7.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/exporter", + "type": "tidelift" } ], - "time": "2024-03-02T06:33:00+00:00" + "time": "2025-09-24T06:16:11+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.7", + "version": "8.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + "reference": "ef1377171613d09edd25b7816f05be8313f9115d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", - "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ef1377171613d09edd25b7816f05be8313f9115d", + "reference": "ef1377171613d09edd25b7816f05be8313f9115d", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -8227,47 +8229,60 @@ } ], "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", "keywords": [ "global state" ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/8.0.2" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/global-state", + "type": "tidelift" } ], - "time": "2024-03-02T06:35:11+00:00" + "time": "2025-08-29T11:29:25+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.4", + "version": "4.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", - "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/97ffee3bcfb5805568d6af7f0f893678fc076d2f", + "reference": "97ffee3bcfb5805568d6af7f0f893678fc076d2f", "shasum": "" }, "require": { - "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=7.3" + "nikic/php-parser": "^5.0", + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -8290,7 +8305,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.4" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/4.0.0" }, "funding": [ { @@ -8298,34 +8314,34 @@ "type": "github" } ], - "time": "2023-12-22T06:20:34+00:00" + "time": "2025-02-07T04:57:28+00:00" }, { "name": "sebastian/object-enumerator", - "version": "4.0.4", + "version": "7.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894" }, "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/1effe8e9b8e068e9ae228e542d5d11b5d16db894", + "reference": "1effe8e9b8e068e9ae228e542d5d11b5d16db894", "shasum": "" }, "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" + "php": ">=8.3", + "sebastian/object-reflector": "^5.0", + "sebastian/recursion-context": "^7.0" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8347,7 +8363,8 @@ "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" + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/7.0.0" }, "funding": [ { @@ -8355,32 +8372,32 @@ "type": "github" } ], - "time": "2020-10-26T13:12:34+00:00" + "time": "2025-02-07T04:57:48+00:00" }, { "name": "sebastian/object-reflector", - "version": "2.0.4", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + "reference": "4bfa827c969c98be1e527abd576533293c634f6a" }, "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/4bfa827c969c98be1e527abd576533293c634f6a", + "reference": "4bfa827c969c98be1e527abd576533293c634f6a", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -8402,7 +8419,8 @@ "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" + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/5.0.0" }, "funding": [ { @@ -8410,32 +8428,32 @@ "type": "github" } ], - "time": "2020-10-26T13:14:26+00:00" + "time": "2025-02-07T04:58:17+00:00" }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c" }, "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/0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", + "reference": "0b01998a7d5b1f122911a66bebcb8d46f0c82d8c", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -8465,40 +8483,53 @@ "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" + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/7.0.1" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-13T04:44:59+00:00" }, { - "name": "sebastian/resource-operations", - "version": "3.0.4", + "name": "sebastian/type", + "version": "6.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", - "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/e549163b9760b8f71f191651d22acf32d56d6d4d", + "reference": "e549163b9760b8f71f191651d22acf32d56d6d4d", "shasum": "" }, "require": { - "php": ">=7.3" + "php": ">=8.3" }, "require-dev": { - "phpunit/phpunit": "^9.0" + "phpunit/phpunit": "^12.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8513,46 +8544,58 @@ "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": { - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/6.0.3" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/type", + "type": "tidelift" } ], - "time": "2024-03-14T16:00:52+00:00" + "time": "2025-08-09T06:57:12+00:00" }, { - "name": "sebastian/type", - "version": "3.2.1", + "name": "sebastian/version", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", - "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/3e6ccf7657d4f0a59200564b08cead899313b53c", + "reference": "3e6ccf7657d4f0a59200564b08cead899313b53c", "shasum": "" }, "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" + "php": ">=8.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -8571,11 +8614,12 @@ "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", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/6.0.0" }, "funding": [ { @@ -8583,82 +8627,81 @@ "type": "github" } ], - "time": "2023-02-03T06:13:03+00:00" + "time": "2025-02-07T05:00:38+00:00" }, { - "name": "sebastian/version", - "version": "3.0.2", + "name": "staabm/side-effects-detector", + "version": "1.0.5", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" + "url": "https://github.com/staabm/side-effects-detector.git", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", + "url": "https://api.github.com/repos/staabm/side-effects-detector/zipball/d8334211a140ce329c13726d4a715adbddd0a163", + "reference": "d8334211a140ce329c13726d4a715adbddd0a163", "shasum": "" }, "require": { - "php": ">=7.3" + "ext-tokenizer": "*", + "php": "^7.4 || ^8.0" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } + "require-dev": { + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^9.6.21", + "symfony/var-dumper": "^5.4.43", + "tomasvotruba/type-coverage": "1.0.0", + "tomasvotruba/unused-public": "1.0.0" }, + "type": "library", "autoload": { "classmap": [ - "src/" + "lib/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } + "description": "A static analysis tool to detect side effects in PHP code", + "keywords": [ + "static analysis" ], - "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/staabm/side-effects-detector/issues", + "source": "https://github.com/staabm/side-effects-detector/tree/1.0.5" }, "funding": [ { - "url": "https://github.com/sebastianbergmann", + "url": "https://github.com/staabm", "type": "github" } ], - "time": "2020-09-28T06:39:44+00:00" + "time": "2024-10-20T05:08:20+00:00" }, { "name": "symfony/filesystem", - "version": "v7.3.0", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb" + "reference": "d937d400b980523dc9ee946bb69972b5e619058d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b8dce482de9d7c9fe2891155035a7248ab5c7fdb", - "reference": "b8dce482de9d7c9fe2891155035a7248ab5c7fdb", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0" + "symfony/process": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -8686,7 +8729,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.3.0" + "source": "https://github.com/symfony/filesystem/tree/v8.0.1" }, "funding": [ { @@ -8697,32 +8740,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-10-25T15:15:23+00:00" + "time": "2025-12-01T09:13:36+00:00" }, { "name": "symfony/finder", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" + "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", - "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", + "url": "https://api.github.com/repos/symfony/finder/zipball/7598dd5770580fa3517ec83e8da0c9b9e01f4291", + "reference": "7598dd5770580fa3517ec83e8da0c9b9e01f4291", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -8750,7 +8797,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.3.0" + "source": "https://github.com/symfony/finder/tree/v8.0.0" }, "funding": [ { @@ -8761,29 +8808,33 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-12-30T19:00:26+00:00" + "time": "2025-11-05T14:36:47+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca" + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca", - "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/d2b592535ffa6600c265a3893a7f7fd2bad82dd7", + "reference": "d2b592535ffa6600c265a3893a7f7fd2bad82dd7", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/deprecation-contracts": "^2.5|^3" }, "type": "library", @@ -8817,7 +8868,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.3.0" + "source": "https://github.com/symfony/options-resolver/tree/v8.0.0" }, "funding": [ { @@ -8828,16 +8879,20 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-04T13:12:05+00:00" + "time": "2025-11-12T15:55:31+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -8897,7 +8952,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.33.0" }, "funding": [ { @@ -8908,6 +8963,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -8917,7 +8976,7 @@ }, { "name": "symfony/polyfill-php81", - "version": "v1.32.0", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -8973,7 +9032,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.33.0" }, "funding": [ { @@ -8984,6 +9043,10 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" @@ -8993,20 +9056,20 @@ }, { "name": "symfony/process", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" + "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", - "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "url": "https://api.github.com/repos/symfony/process/zipball/a0a750500c4ce900d69ba4e9faf16f82c10ee149", + "reference": "a0a750500c4ce900d69ba4e9faf16f82c10ee149", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -9034,7 +9097,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.3.0" + "source": "https://github.com/symfony/process/tree/v8.0.0" }, "funding": [ { @@ -9045,32 +9108,36 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2025-04-17T09:11:12+00:00" + "time": "2025-10-16T16:25:44+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/7989e43bf381af0eac72e4f0ca5bcbfa81658be4", + "reference": "7989e43bf381af0eac72e4f0ca5bcbfa81658be4", "shasum": "" }, "require": { "ext-dom": "*", "ext-tokenizer": "*", "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" + "php": "^8.1" }, "type": "library", "autoload": { @@ -9092,7 +9159,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + "source": "https://github.com/theseer/tokenizer/tree/2.0.1" }, "funding": [ { @@ -9100,19 +9167,20 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-12-08T11:19:18+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { "friendsofphp/php-cs-fixer": 0, - "phpstan/phpstan-doctrine": 0 + "phpstan/phpstan-doctrine": 0, + "phpunit/phpunit": 0 }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.2", + "php": "^8.4", "ext-bcmath": "*", "ext-dom": "*", "ext-fileinfo": "*", @@ -9121,5 +9189,5 @@ "ext-pdo": "*" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/config/autoload/doctrine.global.php b/config/autoload/doctrine.global.php index aac5d824..0251d3ef 100644 --- a/config/autoload/doctrine.global.php +++ b/config/autoload/doctrine.global.php @@ -39,8 +39,6 @@ 'configuration' => [ 'orm_default' => [ 'naming_strategy' => Doctrine\ORM\Mapping\UnderscoreNamingStrategy::class, - 'proxy_dir' => getcwd() . '/data/cache/DoctrineORMModule/Proxy', - 'auto_generate_proxy_classes' => Doctrine\ORM\Proxy\ProxyFactory::AUTOGENERATE_NEVER, 'filters' => [ Ecodev\Felix\ORM\Query\Filter\AclFilter::class => Ecodev\Felix\ORM\Query\Filter\AclFilter::class, ], diff --git a/config/autoload/global.php b/config/autoload/global.php index 55569e90..378ece16 100644 --- a/config/autoload/global.php +++ b/config/autoload/global.php @@ -21,7 +21,7 @@ 'admins' => [], // admin emails to notify of orders, members and newsletter subscriptions... ], 'smtp' => null, - 'phpPath' => '/usr/bin/php8.2', + 'phpPath' => '/usr/bin/php8.4', 'templates' => [ 'paths' => [ 'app' => ['server/templates/app'], diff --git a/config/development.config.php.dist b/config/development.config.php.dist index c3255d01..66c46739 100644 --- a/config/development.config.php.dist +++ b/config/development.config.php.dist @@ -29,11 +29,4 @@ return [ 'debug' => true, ConfigAggregator::ENABLE_CACHE => false, 'logSql' => true, // Log all SQL queries from Doctrine (to logs/all.log) - 'doctrine' => [ - 'configuration' => [ - 'orm_default' => [ - 'auto_generate_proxy_classes' => Doctrine\ORM\Proxy\ProxyFactory::AUTOGENERATE_ALWAYS, - ], - ], - ], ]; diff --git a/e2e/utils.ts b/e2e/utils.ts index 0d04b8fa..864cd6f2 100644 --- a/e2e/utils.ts +++ b/e2e/utils.ts @@ -19,7 +19,7 @@ export async function naturalSelect(page: Page, selector: string, value: string) } function getPhpBinary(): string { - return execSync('which php8.2 || which php').toString().trim(); + return execSync('which php8.4 || which php').toString().trim(); } /** diff --git a/package.json b/package.json index d2358db5..50022fce 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "scripts": { "ng": "ng", "postinstall": "playwright install chromium", - "client-config": "`which php8.2 || which php` ./bin/generate-client-configuration.php", + "client-config": "`which php8.4 || which php` ./bin/generate-client-configuration.php", "prerequisite": "mkdir -p htdocs/ && cp -v server/index.php htdocs/ && yarn client-config && yarn codegen", "dev": "yarn prerequisite && ng serve", "prod": "yarn prerequisite && ng build && find data/tmp/build/browser -type f -not -name '*.gz' -exec gzip --keep --best {} \\; && rm -rf htdocs/ && mv -v data/tmp/build/browser htdocs", diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 4afa4790..ef89ad86 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -2,16 +2,19 @@ + colors="true" + cacheDirectory="data/tmp/.phpunit.cache" + displayDetailsOnAllIssues="true" +> ./tests - + ./server - + diff --git a/server/Application/DBAL/Types/MessageTypeType.php b/server/Application/DBAL/Types/MessageTypeType.php index a46f6364..68a4c6c1 100644 --- a/server/Application/DBAL/Types/MessageTypeType.php +++ b/server/Application/DBAL/Types/MessageTypeType.php @@ -8,16 +8,16 @@ class MessageTypeType extends EnumType { - final public const REGISTER = 'register'; - final public const RESET_PASSWORD = 'reset_password'; - final public const UPDATED_USER = 'updated_user'; - final public const CONFIRMED_REGISTRATION = 'confirmed_registration'; - final public const USER_PENDING_ORDER = 'user_pending_order'; - final public const USER_VALIDATED_ORDER = 'user_validated_order'; - final public const ADMIN_PENDING_ORDER = 'admin_pending_order'; - final public const ADMIN_VALIDATED_ORDER = 'admin_validated_order'; - final public const REQUEST_MEMBERSHIP_END = 'request_membership_end'; - final public const NEWSLETTER_SUBSCRIPTION = 'newsletter_subscription'; + final public const string REGISTER = 'register'; + final public const string RESET_PASSWORD = 'reset_password'; + final public const string UPDATED_USER = 'updated_user'; + final public const string CONFIRMED_REGISTRATION = 'confirmed_registration'; + final public const string USER_PENDING_ORDER = 'user_pending_order'; + final public const string USER_VALIDATED_ORDER = 'user_validated_order'; + final public const string ADMIN_PENDING_ORDER = 'admin_pending_order'; + final public const string ADMIN_VALIDATED_ORDER = 'admin_validated_order'; + final public const string REQUEST_MEMBERSHIP_END = 'request_membership_end'; + final public const string NEWSLETTER_SUBSCRIPTION = 'newsletter_subscription'; protected function getPossibleValues(): array { diff --git a/server/Application/Handler/DatatransHandler.php b/server/Application/Handler/DatatransHandler.php index f433e06c..37137dff 100644 --- a/server/Application/Handler/DatatransHandler.php +++ b/server/Application/Handler/DatatransHandler.php @@ -83,8 +83,8 @@ private function checkSignature(array $body, string $key): void $aliasCC = $body['aliasCC'] ?? ''; $valueToSign = $aliasCC . @$body['merchantId'] . @$body['amount'] . @$body['currency'] . @$body['refno']; - $expectedSign = hash_hmac('sha256', trim($valueToSign), hex2bin(trim($key))); - if ($expectedSign !== $body['sign']) { + $expectedSign = hash_hmac('sha256', mb_trim($valueToSign), hex2bin(mb_trim($key))); + if (!hash_equals($expectedSign, $body['sign'])) { throw new Exception('Invalid HMAC signature'); } } diff --git a/server/Application/Handler/DownloadFile.php b/server/Application/Handler/DownloadFile.php index 9fe7e59b..26dc77ce 100644 --- a/server/Application/Handler/DownloadFile.php +++ b/server/Application/Handler/DownloadFile.php @@ -44,7 +44,7 @@ public function handle(ServerRequestInterface $request): ResponseInterface $response = new Response($resource, 200, [ 'content-type' => 'application/pdf', 'Content-Disposition' => 'attachment; filename="' . basename($path) . '"', - 'content-length' => $size, + 'content-length' => (string) $size, ]); return $response; diff --git a/server/Application/Model/User.php b/server/Application/Model/User.php index 2e5f9baa..5de0a91d 100644 --- a/server/Application/Model/User.php +++ b/server/Application/Model/User.php @@ -33,10 +33,10 @@ #[ORM\AssociationOverrides([new ORM\AssociationOverride(name: 'owner', inversedBy: 'users')])] class User extends AbstractModel implements \Ecodev\Felix\Model\HasPassword, \Ecodev\Felix\Model\User { - final public const ROLE_ANONYMOUS = 'anonymous'; - final public const ROLE_MEMBER = 'member'; - final public const ROLE_FACILITATOR = 'facilitator'; - final public const ROLE_ADMINISTRATOR = 'administrator'; + final public const string ROLE_ANONYMOUS = 'anonymous'; + final public const string ROLE_MEMBER = 'member'; + final public const string ROLE_FACILITATOR = 'facilitator'; + final public const string ROLE_ADMINISTRATOR = 'administrator'; use HasAddress; use HasPassword; diff --git a/server/Application/Repository/LogRepository.php b/server/Application/Repository/LogRepository.php index bc873e36..24dcbb82 100644 --- a/server/Application/Repository/LogRepository.php +++ b/server/Application/Repository/LogRepository.php @@ -14,11 +14,11 @@ class LogRepository extends AbstractRepository implements \Ecodev\Felix\Reposito /** * Log message to be used when the datatrans webhook starts. */ - final public const DATATRANS_WEBHOOK_BEGIN = 'datatrans webhook begin'; + final public const string DATATRANS_WEBHOOK_BEGIN = 'datatrans webhook begin'; /** * Log message to be used when the datatrans webhook finishes. */ - final public const DATATRANS_WEBHOOK_END = 'datatrans webhook end'; + final public const string DATATRANS_WEBHOOK_END = 'datatrans webhook end'; use \Ecodev\Felix\Repository\Traits\LogRepository; } diff --git a/server/Application/Service/Importer.php b/server/Application/Service/Importer.php index 4ab42331..d2b298b9 100644 --- a/server/Application/Service/Importer.php +++ b/server/Application/Service/Importer.php @@ -168,7 +168,7 @@ private function read($file): void { $this->lineNumber = 0; $expectedColumnCount = 14; - while ($line = fgetcsv($file, 0, "\t")) { + while ($line = fgetcsv($file, 0, "\t", escape: '')) { ++$this->lineNumber; $actualColumnCount = count($line); @@ -198,8 +198,8 @@ private function read($file): void $membership, ] = $line; - $email = trim($email); - $pattern = trim($pattern); + $email = mb_trim($email); + $pattern = mb_trim($pattern); if (!$email && !$pattern) { $this->throw('Il faut soit un email, soit un pattern, mais aucun existe'); @@ -222,7 +222,7 @@ private function read($file): void $membership->value, $firstName, $lastName, - trim(implode(' ', [$street, $street2])), + mb_trim(implode(' ', [$street, $street2])), $postcode, $locality, $country, @@ -488,7 +488,7 @@ private function toUpper(string $name): string { $withoutAccent = iconv('UTF-8', 'ASCII//TRANSLIT', mb_strtolower($name)); - return trim(mb_strtoupper($withoutAccent)); + return mb_trim(mb_strtoupper($withoutAccent)); } private function placeholders(int $count, string $placeholder): string diff --git a/server/Application/Traits/HasCode.php b/server/Application/Traits/HasCode.php index a45ac5e6..1eaae351 100644 --- a/server/Application/Traits/HasCode.php +++ b/server/Application/Traits/HasCode.php @@ -16,7 +16,7 @@ trait HasCode */ public function setCode(?string $code): void { - if (is_string($code) && trim($code) === '') { + if (is_string($code) && mb_trim($code) === '') { $code = null; } diff --git a/tests/ApplicationTest/Handler/DatatransHandlerTest.php b/tests/ApplicationTest/Handler/DatatransHandlerTest.php index 5ad3791d..2ca0ed12 100644 --- a/tests/ApplicationTest/Handler/DatatransHandlerTest.php +++ b/tests/ApplicationTest/Handler/DatatransHandlerTest.php @@ -15,6 +15,7 @@ use Ecodev\Felix\Service\MessageRenderer; use Laminas\Diactoros\ServerRequest; use Mezzio\Template\TemplateRendererInterface; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; class DatatransHandlerTest extends TestCase @@ -85,9 +86,7 @@ private function hasMessage(string $email, string $type): bool return $result; } - /** - * @dataProvider providerProcess - */ + #[DataProvider('providerProcess')] public function testProcess(?array $data, array $expectedViewModel, bool $expectedWebTemporaryAccess): void { // Message always include input data @@ -102,23 +101,23 @@ public function testProcess(?array $data, array $expectedViewModel, bool $expect 'key' => '1a03b7bcf2752c8c8a1b46616b0c12658d2c7643403e655450bedb7c78bb2d2f659c2ff4e647e4ea72d37ef6745ebda6733c7b859439107069f291cda98f4844', ]; - $mailer = $this->createMock(Mailer::class); + $mailer = self::createStub(Mailer::class); $messageQueuer = $this->createMock(MessageQueuer::class); $messageQueuer->expects(self::any()) ->method('getAllEmailsToNotify') ->willReturn(['administrator@example.com']); - if ($expectedViewModel['message']['status'] === 'success') { - $messageQueuer->expects(self::once())->method('queueUserValidatedOrder')->willReturn(new Message()); - $messageQueuer->expects(self::once())->method('queueAdminValidatedOrder')->willReturn(new Message()); - } + + $expectSuccess = $expectedViewModel['message']['status'] === 'success'; + $messageQueuer->expects($expectSuccess ? self::once() : self::never())->method('queueUserValidatedOrder')->willReturn(new Message()); + $messageQueuer->expects($expectSuccess ? self::once() : self::never())->method('queueAdminValidatedOrder')->willReturn(new Message()); $handler = new DatatransHandler(_em(), $renderer, $config, $mailer, $messageQueuer); $handler->handle($request); $orderId = $data['refno'] ?? null; if ($orderId) { - $expectedStatus = $expectedViewModel['message']['status'] === 'success' || $orderId === '16002' ? OrderStatus::Validated : OrderStatus::Pending; + $expectedStatus = $expectSuccess || $orderId === '16002' ? OrderStatus::Validated : OrderStatus::Pending; $actualStatus = _em()->getConnection()->fetchOne('SELECT status FROM `order` WHERE id = ' . $orderId); self::assertSame($expectedStatus->value, $actualStatus); diff --git a/tests/ApplicationTest/Model/OrderTest.php b/tests/ApplicationTest/Model/OrderTest.php index 8139a6af..fdec2534 100644 --- a/tests/ApplicationTest/Model/OrderTest.php +++ b/tests/ApplicationTest/Model/OrderTest.php @@ -8,24 +8,18 @@ use Application\Model\Order; use Application\Model\OrderLine; use Money\Money; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; class OrderTest extends TestCase { - /** - * @dataProvider providerGetFormattedBalance - */ + #[DataProvider('providerGetFormattedBalance')] public function testGetFormattedBalance(int $chf, int $eur, string $expected): void { - $order = $this->getMockBuilder(Order::class)->onlyMethods(['getBalanceCHF', 'getBalanceEUR'])->getMock(); + $order = self::getStubBuilder(Order::class)->onlyMethods(['getBalanceCHF', 'getBalanceEUR'])->getStub(); - $order->expects(self::any()) - ->method('getBalanceCHF') - ->willReturn(Money::CHF($chf)); - - $order->expects(self::any()) - ->method('getBalanceEUR') - ->willReturn(Money::EUR($eur)); + $order->method('getBalanceCHF')->willReturn(Money::CHF($chf)); + $order->method('getBalanceEUR')->willReturn(Money::EUR($eur)); self::assertSame($expected, $order->getFormattedBalance()); } diff --git a/tests/ApplicationTest/Model/UserTest.php b/tests/ApplicationTest/Model/UserTest.php index ceda194a..af09654a 100644 --- a/tests/ApplicationTest/Model/UserTest.php +++ b/tests/ApplicationTest/Model/UserTest.php @@ -6,6 +6,7 @@ use Application\Model\Product; use Application\Model\User; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; class UserTest extends TestCase @@ -15,9 +16,7 @@ protected function tearDown(): void User::setCurrent(null); } - /** - * @dataProvider providerSetRole - */ + #[DataProvider('providerSetRole')] public function testSetRole(string $currentRole, string $oldRole, string $newRole, ?string $exception): void { User::setCurrent(null); @@ -46,9 +45,7 @@ public static function providerSetRole(): iterable yield [User::ROLE_ADMINISTRATOR, User::ROLE_ADMINISTRATOR, User::ROLE_MEMBER, null]; } - /** - * @dataProvider providerSetOwner - */ + #[DataProvider('providerSetOwner')] public function testSetOwner(?User $currentUser, ?User $originalOwner, ?User $newOwner, ?string $exception = null): void { User::setCurrent($currentUser); diff --git a/tests/ApplicationTest/Repository/AbstractRepositoryTest.php b/tests/ApplicationTest/Repository/AbstractRepository.php similarity index 78% rename from tests/ApplicationTest/Repository/AbstractRepositoryTest.php rename to tests/ApplicationTest/Repository/AbstractRepository.php index f0359627..3c7f671d 100644 --- a/tests/ApplicationTest/Repository/AbstractRepositoryTest.php +++ b/tests/ApplicationTest/Repository/AbstractRepository.php @@ -7,7 +7,7 @@ use ApplicationTest\Traits\TestWithTransactionAndUser; use PHPUnit\Framework\TestCase; -abstract class AbstractRepositoryTest extends TestCase +abstract class AbstractRepository extends TestCase { use TestWithTransactionAndUser; } diff --git a/tests/ApplicationTest/Repository/FileRepositoryTest.php b/tests/ApplicationTest/Repository/FileRepositoryTest.php index 4b2ef70b..d9877b6a 100644 --- a/tests/ApplicationTest/Repository/FileRepositoryTest.php +++ b/tests/ApplicationTest/Repository/FileRepositoryTest.php @@ -11,7 +11,7 @@ use ApplicationTest\Traits\LimitedAccessSubQuery; use Cake\Chronos\ChronosDate; -class FileRepositoryTest extends AbstractRepositoryTest +class FileRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -23,7 +23,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(File::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { $all = [9000, 9001, 9002, 9003]; $articlesAndReviewsViaSubscriptions = [9000, 9001, 9002, 9003]; diff --git a/tests/ApplicationTest/Repository/ImageRepositoryTest.php b/tests/ApplicationTest/Repository/ImageRepositoryTest.php index f54026ca..654f9209 100644 --- a/tests/ApplicationTest/Repository/ImageRepositoryTest.php +++ b/tests/ApplicationTest/Repository/ImageRepositoryTest.php @@ -9,7 +9,7 @@ use Application\Model\User; use Ecodev\Felix\Service\AbstractDatabase; -class ImageRepositoryTest extends AbstractRepositoryTest +class ImageRepositoryTest extends AbstractRepository { protected function tearDown(): void { diff --git a/tests/ApplicationTest/Repository/LogRepositoryTest.php b/tests/ApplicationTest/Repository/LogRepositoryTest.php index 97e4e4aa..2d33564a 100644 --- a/tests/ApplicationTest/Repository/LogRepositoryTest.php +++ b/tests/ApplicationTest/Repository/LogRepositoryTest.php @@ -7,7 +7,7 @@ use Application\Model\Log; use Application\Repository\LogRepository; -class LogRepositoryTest extends AbstractRepositoryTest +class LogRepositoryTest extends AbstractRepository { private LogRepository $repository; diff --git a/tests/ApplicationTest/Repository/MessageRepositoryTest.php b/tests/ApplicationTest/Repository/MessageRepositoryTest.php index 9e1cb9e9..1dffb0b4 100644 --- a/tests/ApplicationTest/Repository/MessageRepositoryTest.php +++ b/tests/ApplicationTest/Repository/MessageRepositoryTest.php @@ -8,7 +8,7 @@ use Application\Repository\MessageRepository; use ApplicationTest\Traits\LimitedAccessSubQuery; -class MessageRepositoryTest extends AbstractRepositoryTest +class MessageRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -20,7 +20,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(Message::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { // Nobody can see all messages for now, even administrator, because it's useless $all = [11001, 11002]; diff --git a/tests/ApplicationTest/Repository/OrderLineRepositoryTest.php b/tests/ApplicationTest/Repository/OrderLineRepositoryTest.php index b03a7979..fe1f1ae9 100644 --- a/tests/ApplicationTest/Repository/OrderLineRepositoryTest.php +++ b/tests/ApplicationTest/Repository/OrderLineRepositoryTest.php @@ -8,7 +8,7 @@ use Application\Repository\OrderLineRepository; use ApplicationTest\Traits\LimitedAccessSubQuery; -class OrderLineRepositoryTest extends AbstractRepositoryTest +class OrderLineRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -20,7 +20,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(OrderLine::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { $all = [17000, 17001, 17002, 17003, 17004, 17005]; $family = [17000, 17001, 17005]; diff --git a/tests/ApplicationTest/Repository/OrderRepositoryTest.php b/tests/ApplicationTest/Repository/OrderRepositoryTest.php index f891c142..2211b3a9 100644 --- a/tests/ApplicationTest/Repository/OrderRepositoryTest.php +++ b/tests/ApplicationTest/Repository/OrderRepositoryTest.php @@ -8,7 +8,7 @@ use Application\Repository\OrderRepository; use ApplicationTest\Traits\LimitedAccessSubQuery; -class OrderRepositoryTest extends AbstractRepositoryTest +class OrderRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -20,7 +20,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(Order::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { $all = [16000, 16001, 16002, 16003, 16004]; $family = $all; diff --git a/tests/ApplicationTest/Repository/OrganizationRepositoryTest.php b/tests/ApplicationTest/Repository/OrganizationRepositoryTest.php index f240b54c..02fec286 100644 --- a/tests/ApplicationTest/Repository/OrganizationRepositoryTest.php +++ b/tests/ApplicationTest/Repository/OrganizationRepositoryTest.php @@ -7,8 +7,9 @@ use Application\Enum\ProductType; use Application\Model\Organization; use Application\Repository\OrganizationRepository; +use PHPUnit\Framework\Attributes\DataProvider; -class OrganizationRepositoryTest extends AbstractRepositoryTest +class OrganizationRepositoryTest extends AbstractRepository { private OrganizationRepository $repository; @@ -18,9 +19,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(Organization::class); } - /** - * @dataProvider providerApplyOrganizationAccesses - */ + #[DataProvider('providerApplyOrganizationAccesses')] public function testApplyOrganizationAccesses(array $users): void { // Insert all test users diff --git a/tests/ApplicationTest/Repository/ProductRepositoryTest.php b/tests/ApplicationTest/Repository/ProductRepositoryTest.php index 35e0f22b..900beaf2 100644 --- a/tests/ApplicationTest/Repository/ProductRepositoryTest.php +++ b/tests/ApplicationTest/Repository/ProductRepositoryTest.php @@ -10,7 +10,7 @@ use Application\Repository\ProductRepository; use ApplicationTest\Traits\LimitedAccessSubQuery; -class ProductRepositoryTest extends AbstractRepositoryTest +class ProductRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -22,7 +22,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(Product::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { $all = range(3000, 3011); $actives = array_values(array_diff($all, [3010])); diff --git a/tests/ApplicationTest/Repository/UserRepositoryTest.php b/tests/ApplicationTest/Repository/UserRepositoryTest.php index 9a05b2a3..e387b451 100644 --- a/tests/ApplicationTest/Repository/UserRepositoryTest.php +++ b/tests/ApplicationTest/Repository/UserRepositoryTest.php @@ -8,7 +8,7 @@ use Application\Repository\UserRepository; use ApplicationTest\Traits\LimitedAccessSubQuery; -class UserRepositoryTest extends AbstractRepositoryTest +class UserRepositoryTest extends AbstractRepository { use LimitedAccessSubQuery; @@ -20,7 +20,7 @@ protected function setUp(): void $this->repository = _em()->getRepository(User::class); } - public function providerGetAccessibleSubQuery(): iterable + public static function providerGetAccessibleSubQuery(): iterable { $all = [1000, 1001, 1002, 1003]; yield ['anonymous', [1001]]; diff --git a/tests/ApplicationTest/Service/InvoicerTest.php b/tests/ApplicationTest/Service/InvoicerTest.php index 4bab66e0..730f4976 100644 --- a/tests/ApplicationTest/Service/InvoicerTest.php +++ b/tests/ApplicationTest/Service/InvoicerTest.php @@ -14,15 +14,14 @@ use Application\Service\Invoicer; use ApplicationTest\Traits\TestWithTransactionAndUser; use Money\Money; +use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; class InvoicerTest extends TestCase { use TestWithTransactionAndUser; - /** - * @dataProvider providerCreateOrder - */ + #[DataProvider('providerCreateOrder')] public function testCreateOrder(array $input, array $expectedOrderLines): void { $input['orderLines'] = $this->hydrateTestData($input['orderLines']); @@ -245,9 +244,7 @@ public static function providerCreateOrder(): iterable ]; } - /** - * @dataProvider providerUpdateOrderLineAndTransactionLine - */ + #[DataProvider('providerUpdateOrderLineAndTransactionLine')] public function testUpdateOrderLineAndTransactionLine(string $originalOrder, ?array $newProduct, array $expectedOrderLines): void { $input = $this->providerCreateOrder()[$originalOrder][0]; diff --git a/tests/ApplicationTest/Service/MessageQueuerTest.php b/tests/ApplicationTest/Service/MessageQueuerTest.php index f47dd7a3..08bc15ed 100644 --- a/tests/ApplicationTest/Service/MessageQueuerTest.php +++ b/tests/ApplicationTest/Service/MessageQueuerTest.php @@ -200,18 +200,10 @@ public function testGetEmailsToNotify(): void private function createMockOrder(?User $owner, bool $withSubscription = true): Order { - $product = $this->createMock(Product::class); - $product->expects(self::any()) - ->method('getId') - ->willReturn(1); - - $product->expects(self::any()) - ->method('getCode') - ->willReturn('xxx-yyy'); - - $product->expects(self::any()) - ->method('getName') - ->willReturn('Article 1'); + $product = self::createStub(Product::class); + $product->method('getId')->willReturn(1); + $product->method('getCode')->willReturn('xxx-yyy'); + $product->method('getName')->willReturn('Article 1'); $productLine = new OrderLine(); $productLine->setProduct($product); @@ -246,111 +238,56 @@ private function createMockOrder(?User $owner, bool $withSubscription = true): O $lines = new ArrayCollection([$productLine, $donationLine]); } - $order = $this->createPartialMock(Order::class, ['getId', 'getBalanceCHF', 'getBalanceEUR', 'getOrderLines']); + $order = self::getStubBuilder(Order::class)->onlyMethods(['getId', 'getBalanceCHF', 'getBalanceEUR', 'getOrderLines'])->getStub(); $order->setOwner($owner); $order->setPaymentMethod(PaymentMethod::Bvr); - $order->expects(self::any()) - ->method('getId') - ->willReturn(456); - - $order->expects(self::any()) - ->method('getBalanceCHF') - ->willReturn(Money::CHF(3300)); - - $order->expects(self::any()) - ->method('getBalanceEUR') - ->willReturn(Money::EUR(0)); - - $order->expects(self::any()) - ->method('getOrderLines') - ->willReturn($lines); + $order->method('getId')->willReturn(456); + $order->method('getBalanceCHF')->willReturn(Money::CHF(3300)); + $order->method('getBalanceEUR')->willReturn(Money::EUR(0)); + $order->method('getOrderLines')->willReturn($lines); return $order; } private function createMockUser(): User { - $user = $this->createMock(User::class); - - $user->expects(self::any()) - ->method('getId') - ->willReturn(123); - - $user->expects(self::any()) - ->method('getFirstName') - ->willReturn('John'); - - $user->expects(self::any()) - ->method('getLastName') - ->willReturn('Doe'); + $user = self::createStub(User::class); - $user->expects(self::any()) - ->method('getName') - ->willReturn('John Doe'); - - $user->expects(self::any()) - ->method('getStreet') - ->willReturn('Main street'); - - $user->expects(self::any()) - ->method('getPostcode') - ->willReturn('2020'); - - $user->expects(self::any()) - ->method('getLocality') - ->willReturn('Locality'); + $user->method('getId')->willReturn(123); + $user->method('getFirstName')->willReturn('John'); + $user->method('getLastName')->willReturn('Doe'); + $user->method('getName')->willReturn('John Doe'); + $user->method('getStreet')->willReturn('Main street'); + $user->method('getPostcode')->willReturn('2020'); + $user->method('getLocality')->willReturn('Locality'); $country = new Country(); $country->setName('Wookaya'); - $user->expects(self::any()) - ->method('getCountry') - ->willReturn($country); - - $user->expects(self::any()) - ->method('getPhone') - ->willReturn('123 456 87 98'); - - $user->expects(self::any()) - ->method('getEmail') - ->willReturn('john.doe@example.com'); - - $user->expects(self::any()) - ->method('createToken') - ->willReturn(str_repeat('X', 32)); + $user->method('getCountry')->willReturn($country); + $user->method('getPhone')->willReturn('123 456 87 98'); + $user->method('getEmail')->willReturn('john.doe@example.com'); + $user->method('createToken')->willReturn(str_repeat('X', 32)); return $user; } private function createMockUserAdmin(): User { - $user = $this->createMock(User::class); - - $user->expects(self::any()) - ->method('getFirstName') - ->willReturn('Admin'); - - $user->expects(self::any()) - ->method('getLastName') - ->willReturn('Istrator'); + $user = self::createStub(User::class); - $user->expects(self::any()) - ->method('getEmail') - ->willReturn('administrator@example.com'); + $user->method('getFirstName')->willReturn('Admin'); + $user->method('getLastName')->willReturn('Istrator'); + $user->method('getEmail')->willReturn('administrator@example.com'); return $user; } private function createMockUserMinimal(): User { - $user = $this->createMock(User::class); - $user->expects(self::any()) - ->method('getEmail') - ->willReturn('minimal@example.com'); - - $user->expects(self::any()) - ->method('createToken') - ->willReturn(str_repeat('X', 32)); + $user = self::createStub(User::class); + $user->method('getEmail')->willReturn('minimal@example.com'); + $user->method('createToken')->willReturn(str_repeat('X', 32)); return $user; } diff --git a/tests/ApplicationTest/Traits/LimitedAccessSubQuery.php b/tests/ApplicationTest/Traits/LimitedAccessSubQuery.php index cc051a35..ea66745d 100644 --- a/tests/ApplicationTest/Traits/LimitedAccessSubQuery.php +++ b/tests/ApplicationTest/Traits/LimitedAccessSubQuery.php @@ -7,6 +7,7 @@ use Application\Model\User; use Application\Repository\UserRepository; use Doctrine\ORM\EntityManager; +use PHPUnit\Framework\Attributes\DataProvider; /** * Trait to test limited access sub queries. @@ -15,9 +16,9 @@ trait LimitedAccessSubQuery { abstract public function getEntityManager(): EntityManager; - /** - * @dataProvider providerGetAccessibleSubQuery - */ + abstract public static function providerGetAccessibleSubQuery(): iterable; + + #[DataProvider('providerGetAccessibleSubQuery')] public function testGetAccessibleSubQuery(?string $login, array $expected): void { /** @var UserRepository $userRepository */ diff --git a/tests/ApplicationTest/UtilityTest.php b/tests/ApplicationTest/UtilityTest.php index 2eac2292..2c73875f 100644 --- a/tests/ApplicationTest/UtilityTest.php +++ b/tests/ApplicationTest/UtilityTest.php @@ -4,10 +4,13 @@ namespace ApplicationTest; -class UtilityTest extends \PHPUnit\Framework\TestCase +use Application\Utility; +use PHPUnit\Framework\TestCase; + +class UtilityTest extends TestCase { public function testSanitizeRichText(): void { - self::assertSame('foo

bar

', \Application\Utility::sanitizeRichText('

foo

bar

')); + self::assertSame('foo

bar

', Utility::sanitizeRichText('

foo

bar

')); } }