diff --git a/.github/workflows/run-code-quality.yml b/.github/workflows/run-code-quality.yml index 44d148b..fa75a07 100644 --- a/.github/workflows/run-code-quality.yml +++ b/.github/workflows/run-code-quality.yml @@ -19,7 +19,7 @@ jobs: - name: Setup PHP with PECL extension uses: shivammathur/setup-php@v2 with: - php-version: "8.4" + php-version: "8.5" - name: Validate composer.json and composer.lock run: composer validate --strict diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 67bb2e1..d79a5d2 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -19,7 +19,7 @@ jobs: - name: Setup PHP with PECL extension uses: shivammathur/setup-php@v2 with: - php-version: "8.4" + php-version: "8.5" coverage: xdebug - name: Validate composer.json and composer.lock diff --git a/.tool-versions b/.tool-versions new file mode 100644 index 0000000..54ae07b --- /dev/null +++ b/.tool-versions @@ -0,0 +1 @@ +php 8.5.3 diff --git a/composer.json b/composer.json index 87c1182..c41c4d0 100644 --- a/composer.json +++ b/composer.json @@ -34,14 +34,14 @@ } ], "require": { - "php": "^8.4", - "tempest/framework": "^2.0" + "php": "^8.5", + "tempest/framework": "^3.2" }, "require-dev": { "phpunit/phpunit": "^11.5.15", - "carthage-software/mago": "1.0.0-rc.1" + "carthage-software/mago": "^1.0" }, - "minimum-stability": "dev", + "minimum-stability": "stable", "config": { "allow-plugins": { "carthage-software/mago": true diff --git a/composer.lock b/composer.lock index 1e775f2..647a997 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "854b71f081f3f09f1724f18c9947f464", + "content-hash": "2a6d2e67f63999467127ca2c5d9d81cf", "packages": [ { "name": "composer/semver", - "version": "dev-main", + "version": "3.4.4", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "b52829022cb18210bb84e44e457bd4e890f8d2a7" + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/b52829022cb18210bb84e44e457bd4e890f8d2a7", - "reference": "b52829022cb18210bb84e44e457bd4e890f8d2a7", + "url": "https://api.github.com/repos/composer/semver/zipball/198166618906cb2de69b95d7d47e5fa8aa1b2b95", + "reference": "198166618906cb2de69b95d7d47e5fa8aa1b2b95", "shasum": "" }, "require": { @@ -27,7 +27,6 @@ "phpstan/phpstan": "^1.11", "symfony/phpunit-bridge": "^3 || ^7" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -70,7 +69,7 @@ "support": { "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/main" + "source": "https://github.com/composer/semver/tree/3.4.4" }, "funding": [ { @@ -82,11 +81,11 @@ "type": "github" } ], - "time": "2025-09-03T06:59:12+00:00" + "time": "2025-08-20T19:15:30+00:00" }, { "name": "dflydev/dot-access-data", - "version": "dev-main", + "version": "v3.0.3", "source": { "type": "git", "url": "https://github.com/dflydev/dflydev-dot-access-data.git", @@ -108,7 +107,6 @@ "squizlabs/php_codesniffer": "^3.5", "vimeo/psalm": "^4.0.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -162,7 +160,7 @@ }, { "name": "doctrine/inflector", - "version": "2.2.x-dev", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", @@ -252,16 +250,16 @@ }, { "name": "doctrine/lexer", - "version": "3.1.x-dev", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "042e47e28c5e03f1cf6772fdf3dd4e0785433e05" + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/042e47e28c5e03f1cf6772fdf3dd4e0785433e05", - "reference": "042e47e28c5e03f1cf6772fdf3dd4e0785433e05", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", + "reference": "31ad66abc0fc9e1a1f2d9bc6a42668d2fbbcd6dd", "shasum": "" }, "require": { @@ -309,7 +307,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/3.1.x" + "source": "https://github.com/doctrine/lexer/tree/3.0.1" }, "funding": [ { @@ -325,11 +323,11 @@ "type": "tidelift" } ], - "time": "2024-07-29T08:29:21+00:00" + "time": "2024-02-05T11:56:58+00:00" }, { "name": "egulias/email-validator", - "version": "4.x-dev", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", @@ -353,7 +351,6 @@ "suggest": { "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -468,16 +465,16 @@ }, { "name": "giggsey/libphonenumber-for-php-lite", - "version": "9.0.15", + "version": "9.0.25", "source": { "type": "git", "url": "https://github.com/giggsey/libphonenumber-for-php-lite.git", - "reference": "bdb457250790bba0a4f8f03e3a3eceb47805499e" + "reference": "3288e55938d2fc13883883ec34a860d5c7fb9eae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/bdb457250790bba0a4f8f03e3a3eceb47805499e", - "reference": "bdb457250790bba0a4f8f03e3a3eceb47805499e", + "url": "https://api.github.com/repos/giggsey/libphonenumber-for-php-lite/zipball/3288e55938d2fc13883883ec34a860d5c7fb9eae", + "reference": "3288e55938d2fc13883883ec34a860d5c7fb9eae", "shasum": "" }, "require": { @@ -542,30 +539,29 @@ "issues": "https://github.com/giggsey/libphonenumber-for-php-lite/issues", "source": "https://github.com/giggsey/libphonenumber-for-php-lite" }, - "time": "2025-09-26T07:21:30+00:00" + "time": "2026-02-26T09:06:21+00:00" }, { "name": "graham-campbell/result-type", - "version": "1.1.x-dev", + "version": "v1.1.4", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "bdd52c41913b414f4ca7dcb34482babcd0e9bd58" + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/bdd52c41913b414f4ca7dcb34482babcd0e9bd58", - "reference": "bdd52c41913b414f4ca7dcb34482babcd0e9bd58", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", + "reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3" + "phpoption/phpoption": "^1.9.5" }, "require-dev": { "phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -593,7 +589,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/1.1" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" }, "funding": [ { @@ -605,11 +601,11 @@ "type": "tidelift" } ], - "time": "2025-03-02T21:31:24+00:00" + "time": "2025-12-27T19:43:20+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.10.x-dev", + "version": "7.10.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", @@ -645,7 +641,6 @@ "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "default-branch": true, "type": "library", "extra": { "bamarni-bin": { @@ -736,7 +731,7 @@ }, { "name": "guzzlehttp/promises", - "version": "2.3.x-dev", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", @@ -755,7 +750,6 @@ "bamarni/composer-bin-plugin": "^1.8.2", "phpunit/phpunit": "^8.5.44 || ^9.6.25" }, - "default-branch": true, "type": "library", "extra": { "bamarni-bin": { @@ -820,7 +814,7 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.8.x-dev", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", @@ -850,7 +844,6 @@ "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "default-branch": true, "type": "library", "extra": { "bamarni-bin": { @@ -937,20 +930,20 @@ }, { "name": "laminas/laminas-diactoros", - "version": "3.7.x-dev", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/laminas/laminas-diactoros.git", - "reference": "2be00db99ed3b8947fc8c36efbf21202fa28ff00" + "reference": "60c182916b2749480895601649563970f3f12ec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laminas/laminas-diactoros/zipball/2be00db99ed3b8947fc8c36efbf21202fa28ff00", - "reference": "2be00db99ed3b8947fc8c36efbf21202fa28ff00", + "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" }, @@ -970,10 +963,9 @@ "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" }, - "default-branch": true, "type": "library", "extra": { "laminas": { @@ -1022,20 +1014,20 @@ "type": "community_bridge" } ], - "time": "2025-05-13T10:51:33+00:00" + "time": "2025-10-12T15:31:36+00:00" }, { "name": "league/commonmark", - "version": "dev-main", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405" + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", - "reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/4efa10c1e56488e658d10adf7b7b7dcd19940bfb", + "reference": "4efa10c1e56488e658d10adf7b7b7dcd19940bfb", "shasum": "" }, "require": { @@ -1064,7 +1056,7 @@ "symfony/process": "^5.4 | ^6.0 | ^7.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", - "vimeo/psalm": "^4.24.0 || ^5.0.0" + "vimeo/psalm": "^4.24.0 || ^5.0.0 || ^6.0.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -1072,7 +1064,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.8-dev" + "dev-main": "2.9-dev" } }, "autoload": { @@ -1129,20 +1121,20 @@ "type": "tidelift" } ], - "time": "2025-05-05T12:20:28+00:00" + "time": "2025-11-26T21:48:24+00:00" }, { "name": "league/config", - "version": "dev-main", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/thephpleague/config.git", - "reference": "e6df2a81a60d3054d96cd69eef0d2d472441f9bf" + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/config/zipball/e6df2a81a60d3054d96cd69eef0d2d472441f9bf", - "reference": "e6df2a81a60d3054d96cd69eef0d2d472441f9bf", + "url": "https://api.github.com/repos/thephpleague/config/zipball/754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", + "reference": "754b3604fb2984c71f4af4a9cbe7b57f346ec1f3", "shasum": "" }, "require": { @@ -1152,12 +1144,11 @@ }, "require-dev": { "phpstan/phpstan": "^1.8.2", - "phpunit/phpunit": "^9.5.5 || ^10.0.0 || ^11.0.0", + "phpunit/phpunit": "^9.5.5", "scrutinizer/ocular": "^1.8.1", "unleashedtech/php-coding-standard": "^3.1", "vimeo/psalm": "^4.7.3" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1212,20 +1203,20 @@ "type": "github" } ], - "time": "2025-08-18T00:21:42+00:00" + "time": "2022-12-11T20:36:23+00:00" }, { "name": "league/flysystem", - "version": "3.x-dev", + "version": "3.32.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" + "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", - "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/254b1595b16b22dbddaaef9ed6ca9fdac4956725", + "reference": "254b1595b16b22dbddaaef9ed6ca9fdac4956725", "shasum": "" }, "require": { @@ -1261,7 +1252,6 @@ "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.6.0" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -1294,22 +1284,22 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" + "source": "https://github.com/thephpleague/flysystem/tree/3.32.0" }, - "time": "2025-06-25T13:29:59+00:00" + "time": "2026-02-25T17:01:41+00:00" }, { "name": "league/flysystem-local", - "version": "3.x-dev", + "version": "3.31.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", - "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/2f669db18a4c20c755c2bb7d3a7b0b2340488079", + "reference": "2f669db18a4c20c755c2bb7d3a7b0b2340488079", "shasum": "" }, "require": { @@ -1318,7 +1308,6 @@ "league/mime-type-detection": "^1.0.0", "php": "^8.0.2" }, - "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -1344,9 +1333,9 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.31.0" }, - "time": "2025-05-21T10:34:19+00:00" + "time": "2026-01-23T15:30:45+00:00" }, { "name": "league/mime-type-detection", @@ -1404,18 +1393,83 @@ ], "time": "2024-09-21T08:32:55+00:00" }, + { + "name": "league/oauth2-client", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth2-client.git", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "reference": "26e8c5da4f3d78cede7021e09b1330a0fc093d5e", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", + "php": "^7.1 || >=8.0.0 <8.6.0" + }, + "require-dev": { + "mockery/mockery": "^1.3.5", + "php-parallel-lint/php-parallel-lint": "^1.4", + "phpunit/phpunit": "^7 || ^8 || ^9 || ^10 || ^11", + "squizlabs/php_codesniffer": "^3.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "League\\OAuth2\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Alex Bilbie", + "email": "hello@alexbilbie.com", + "homepage": "http://www.alexbilbie.com", + "role": "Developer" + }, + { + "name": "Woody Gilk", + "homepage": "https://github.com/shadowhand", + "role": "Contributor" + } + ], + "description": "OAuth 2.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "identity", + "idp", + "oauth", + "oauth2", + "single sign on" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth2-client/issues", + "source": "https://github.com/thephpleague/oauth2-client/tree/2.9.0" + }, + "time": "2025-11-25T22:17:17+00:00" + }, { "name": "monolog/monolog", - "version": "dev-main", + "version": "3.10.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "2e97231b969e0ffdeff03329b808945b4ba55e38" + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/2e97231b969e0ffdeff03329b808945b4ba55e38", - "reference": "2e97231b969e0ffdeff03329b808945b4ba55e38", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", + "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", "shasum": "" }, "require": { @@ -1433,7 +1487,7 @@ "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", - "mongodb/mongodb": "^1.8", + "mongodb/mongodb": "^1.8 || ^2.0", "php-amqplib/php-amqplib": "~2.4 || ^3", "php-console/php-console": "^3.1.8", "phpstan/phpstan": "^2", @@ -1462,7 +1516,6 @@ "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1494,7 +1547,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/main" + "source": "https://github.com/Seldaek/monolog/tree/3.10.0" }, "funding": [ { @@ -1506,20 +1559,20 @@ "type": "tidelift" } ], - "time": "2025-04-03T11:44:45+00:00" + "time": "2026-01-02T08:56:05+00:00" }, { "name": "nette/php-generator", - "version": "dev-master", + "version": "v4.2.2", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "1be42b2d64928b87c7e02c96f5c0fb7330342df6" + "reference": "0d7060926f5c3e8c488b9b9ced42d857f12a34b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/1be42b2d64928b87c7e02c96f5c0fb7330342df6", - "reference": "1be42b2d64928b87c7e02c96f5c0fb7330342df6", + "url": "https://api.github.com/repos/nette/php-generator/zipball/0d7060926f5c3e8c488b9b9ced42d857f12a34b5", + "reference": "0d7060926f5c3e8c488b9b9ced42d857f12a34b5", "shasum": "" }, "require": { @@ -1528,15 +1581,16 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", - "nette/tester": "^2.4", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", "nikic/php-parser": "^5.0", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.40@stable", "tracy/tracy": "^2.8" }, "suggest": { "nikic/php-parser": "to use ClassType::from(withBodies: true) & ClassType::fromCode()" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1577,22 +1631,22 @@ ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/master" + "source": "https://github.com/nette/php-generator/tree/v4.2.2" }, - "time": "2025-08-06T18:24:31+00:00" + "time": "2026-02-26T00:58:33+00:00" }, { "name": "nette/schema", - "version": "v1.3.x-dev", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "8c36c043c775254e7a27987f82336e36ca923e0a" + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/8c36c043c775254e7a27987f82336e36ca923e0a", - "reference": "8c36c043c775254e7a27987f82336e36ca923e0a", + "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", + "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", "shasum": "" }, "require": { @@ -1600,8 +1654,10 @@ "php": "8.1 - 8.5" }, "require-dev": { - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^2.0@stable", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.39@stable", "tracy/tracy": "^2.8" }, "type": "library", @@ -1642,26 +1698,26 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3" + "source": "https://github.com/nette/schema/tree/v1.3.5" }, - "time": "2025-08-01T02:15:52+00:00" + "time": "2026-02-23T03:47:12+00:00" }, { "name": "nette/utils", - "version": "dev-master", + "version": "v4.1.3", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "8ee89b19f7a1adcaa59c4aaaf6b5525588a40d4e" + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/8ee89b19f7a1adcaa59c4aaaf6b5525588a40d4e", - "reference": "8ee89b19f7a1adcaa59c4aaaf6b5525588a40d4e", + "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", + "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", "shasum": "" }, "require": { - "php": "8.1 - 8.5" + "php": "8.2 - 8.5" }, "conflict": { "nette/finder": "<3", @@ -1669,8 +1725,10 @@ }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", + "nette/phpstan-rules": "^1.0", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -1681,7 +1739,6 @@ "ext-mbstring": "to use Strings::lower() etc...", "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -1732,22 +1789,22 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/master" + "source": "https://github.com/nette/utils/tree/v4.1.3" }, - "time": "2025-08-06T21:43:54+00:00" + "time": "2026-02-13T03:05:33+00:00" }, { "name": "nikic/php-parser", - "version": "dev-master", + "version": "v5.7.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46" + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/0da2d6679a3df45d6d720aa2e0d4568f82a32e46", - "reference": "0da2d6679a3df45d6d720aa2e0d4568f82a32e46", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", "shasum": "" }, "require": { @@ -1760,7 +1817,6 @@ "ircmaxell/php-yacc": "^0.0.7", "phpunit/phpunit": "^9.0" }, - "default-branch": true, "bin": [ "bin/php-parse" ], @@ -1791,22 +1847,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/master" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" }, - "time": "2025-09-08T07:54:25+00:00" + "time": "2025-12-06T11:56:16+00:00" }, { "name": "phpoption/phpoption", - "version": "dev-master", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d" + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", - "reference": "638a154f8d4ee6a5cfa96d6a34dfbe0cffa9566d", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", + "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", "shasum": "" }, "require": { @@ -1816,7 +1872,6 @@ "bamarni/composer-bin-plugin": "^1.8.2", "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" }, - "default-branch": true, "type": "library", "extra": { "bamarni-bin": { @@ -1857,7 +1912,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.4" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" }, "funding": [ { @@ -1869,20 +1924,15 @@ "type": "tidelift" } ], - "time": "2025-08-21T11:53:16+00:00" + "time": "2025-12-27T19:41:33+00:00" }, { "name": "phpstan/phpstan", - "version": "2.1.x-dev", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-phar-composer-source.git", - "reference": "git" - }, + "version": "2.1.40", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e93ad8d75fcdea8437fb953563a7d89f5072a456", - "reference": "e93ad8d75fcdea8437fb953563a7d89f5072a456", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", "shasum": "" }, "require": { @@ -1891,7 +1941,6 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "default-branch": true, "bin": [ "phpstan", "phpstan.phar" @@ -1928,20 +1977,20 @@ "type": "github" } ], - "time": "2025-09-24T15:47:22+00:00" + "time": "2026-02-23T15:04:35+00:00" }, { "name": "psr-discovery/discovery", - "version": "1.x-dev", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/psr-discovery/discovery.git", - "reference": "74ea448c34ad2caf302c0b5ebd1a1a82a91e88fb" + "reference": "636f67406eadd33a66a7e65b9f0e26abfd7614ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psr-discovery/discovery/zipball/74ea448c34ad2caf302c0b5ebd1a1a82a91e88fb", - "reference": "74ea448c34ad2caf302c0b5ebd1a1a82a91e88fb", + "url": "https://api.github.com/repos/psr-discovery/discovery/zipball/636f67406eadd33a66a7e65b9f0e26abfd7614ac", + "reference": "636f67406eadd33a66a7e65b9f0e26abfd7614ac", "shasum": "" }, "require": { @@ -1958,7 +2007,6 @@ "vimeo/psalm": "^5.8", "wikimedia/composer-merge-plugin": "^2.0" }, - "default-branch": true, "type": "library", "extra": { "merge-plugin": { @@ -2004,13 +2052,13 @@ ], "support": { "issues": "https://github.com/psr-discovery/discovery/issues", - "source": "https://github.com/psr-discovery/discovery/tree/1.x" + "source": "https://github.com/psr-discovery/discovery/tree/1.2.0" }, - "time": "2024-12-05T17:00:58+00:00" + "time": "2024-12-05T16:59:22+00:00" }, { "name": "psr-discovery/http-client-implementations", - "version": "1.x-dev", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/psr-discovery/http-client-implementations.git", @@ -2037,7 +2085,6 @@ "vimeo/psalm": "^5.8", "wikimedia/composer-merge-plugin": "^2.0" }, - "default-branch": true, "type": "library", "extra": { "merge-plugin": { @@ -2084,16 +2131,16 @@ }, { "name": "psr-discovery/http-factory-implementations", - "version": "1.x-dev", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/psr-discovery/http-factory-implementations.git", - "reference": "faca975e28c1a96916bd7a01b8d1a898feb7c294" + "reference": "3979e3d9a95bedd91c13e1de12c6e99a74c449d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/psr-discovery/http-factory-implementations/zipball/faca975e28c1a96916bd7a01b8d1a898feb7c294", - "reference": "faca975e28c1a96916bd7a01b8d1a898feb7c294", + "url": "https://api.github.com/repos/psr-discovery/http-factory-implementations/zipball/3979e3d9a95bedd91c13e1de12c6e99a74c449d3", + "reference": "3979e3d9a95bedd91c13e1de12c6e99a74c449d3", "shasum": "" }, "require": { @@ -2111,7 +2158,6 @@ "vimeo/psalm": "^5.8", "wikimedia/composer-merge-plugin": "^2.0" }, - "default-branch": true, "type": "library", "extra": { "merge-plugin": { @@ -2152,35 +2198,31 @@ ], "support": { "issues": "https://github.com/psr-discovery/http-factory-implementations/issues", - "source": "https://github.com/psr-discovery/http-factory-implementations/tree/1.x" + "source": "https://github.com/psr-discovery/http-factory-implementations/tree/1.2.0" }, - "time": "2024-12-05T17:21:41+00:00" + "time": "2024-12-05T17:18:21+00:00" }, { "name": "psr/cache", - "version": "dev-master", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "588d5ff7035e78cd4f69eb798890749ac4641b30" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/588d5ff7035e78cd4f69eb798890749ac4641b30", - "reference": "588d5ff7035e78cd4f69eb798890749ac4641b30", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { "php": ">=8.0.0" }, - "suggest": { - "fig/cache-util": "Provides some useful PSR-6 utilities" - }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2205,9 +2247,9 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2025-04-11T19:21:12+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/clock", @@ -2259,22 +2301,21 @@ }, { "name": "psr/container", - "version": "dev-master", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "707984727bd5b2b670e59559d3ed2500240cf875" + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/707984727bd5b2b670e59559d3ed2500240cf875", - "reference": "707984727bd5b2b670e59559d3ed2500240cf875", + "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", "shasum": "" }, "require": { "php": ">=7.4.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2307,31 +2348,27 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container" + "source": "https://github.com/php-fig/container/tree/2.0.2" }, - "time": "2023-09-22T11:11:30+00:00" + "time": "2021-11-05T16:47:00+00:00" }, { "name": "psr/event-dispatcher", - "version": "dev-master", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/event-dispatcher.git", - "reference": "bbd9eacc080d33861e5b5c75b3b8c4d7e6d01874" + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/bbd9eacc080d33861e5b5c75b3b8c4d7e6d01874", - "reference": "bbd9eacc080d33861e5b5c75b3b8c4d7e6d01874", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", "shasum": "" }, "require": { "php": ">=7.2.0" }, - "suggest": { - "fig/event-dispatcher-util": "Provides some useful PSR-14 utilities" - }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2350,7 +2387,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Standard interfaces for event handling.", @@ -2360,13 +2397,14 @@ "psr-14" ], "support": { - "source": "https://github.com/php-fig/event-dispatcher" + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2024-03-17T21:29:03+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/http-client", - "version": "dev-master", + "version": "1.0.3", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", @@ -2382,7 +2420,6 @@ "php": "^7.0 || ^8.0", "psr/http-message": "^1.0 || ^2.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2474,7 +2511,7 @@ }, { "name": "psr/http-message", - "version": "dev-master", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", @@ -2489,7 +2526,6 @@ "require": { "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2528,7 +2564,7 @@ }, { "name": "psr/log", - "version": "dev-master", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", @@ -2543,7 +2579,6 @@ "require": { "php": ">=8.0.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -2623,21 +2658,21 @@ }, { "name": "rector/rector", - "version": "2.1.7", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce" + "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/c34cc07c4698f007a20dc5c99ff820089ae413ce", - "reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9afc1bb43571b25629f353c61a9315b5ef31383a", + "reference": "9afc1bb43571b25629f353c61a9315b5ef31383a", "shasum": "" }, "require": { "php": "^7.4|^8.0", - "phpstan/phpstan": "^2.1.18" + "phpstan/phpstan": "^2.1.33" }, "conflict": { "rector/rector-doctrine": "*", @@ -2671,7 +2706,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.1.7" + "source": "https://github.com/rectorphp/rector/tree/2.3.1" }, "funding": [ { @@ -2679,20 +2714,20 @@ "type": "github" } ], - "time": "2025-09-10T11:13:58+00:00" + "time": "2026-01-13T15:13:58+00:00" }, { "name": "symfony/cache", - "version": "7.4.x-dev", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "a3b4db4e88103e9545876753b0423df74b18bbc6" + "reference": "1d06192e8f164e2729b0031e6807d72a6195b8bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/a3b4db4e88103e9545876753b0423df74b18bbc6", - "reference": "a3b4db4e88103e9545876753b0423df74b18bbc6", + "url": "https://api.github.com/repos/symfony/cache/zipball/1d06192e8f164e2729b0031e6807d72a6195b8bb", + "reference": "1d06192e8f164e2729b0031e6807d72a6195b8bb", "shasum": "" }, "require": { @@ -2706,8 +2741,8 @@ }, "conflict": { "doctrine/dbal": "<3.6", - "ext-redis": "<6.2", - "ext-relay": "<0.11.1", + "ext-redis": "<6.1", + "ext-relay": "<0.12.1", "symfony/dependency-injection": "<6.4", "symfony/http-kernel": "<6.4", "symfony/var-dumper": "<6.4" @@ -2763,7 +2798,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/7.4" + "source": "https://github.com/symfony/cache/tree/v7.4.6" }, "funding": [ { @@ -2783,11 +2818,11 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:40:39+00:00" + "time": "2026-02-21T23:29:27+00:00" }, { "name": "symfony/cache-contracts", - "version": "dev-main", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", @@ -2803,7 +2838,6 @@ "php": ">=8.1", "psr/cache": "^3.0" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -2855,10 +2889,6 @@ "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" @@ -2868,7 +2898,7 @@ }, { "name": "symfony/deprecation-contracts", - "version": "dev-main", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", @@ -2883,7 +2913,6 @@ "require": { "php": ">=8.1" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -2927,10 +2956,6 @@ "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" @@ -2940,16 +2965,16 @@ }, { "name": "symfony/event-dispatcher", - "version": "8.0.x-dev", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f28a4142beeb1b8ca38aca3360892bb2eee936e5" + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f28a4142beeb1b8ca38aca3360892bb2eee936e5", - "reference": "f28a4142beeb1b8ca38aca3360892bb2eee936e5", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/99301401da182b6cfaa4700dbe9987bb75474b47", + "reference": "99301401da182b6cfaa4700dbe9987bb75474b47", "shasum": "" }, "require": { @@ -2970,6 +2995,7 @@ "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": "^7.4|^8.0" @@ -3000,7 +3026,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/8.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v8.0.4" }, "funding": [ { @@ -3020,11 +3046,11 @@ "type": "tidelift" } ], - "time": "2025-08-13T13:43:47+00:00" + "time": "2026-01-05T11:45:55+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "dev-main", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", @@ -3040,7 +3066,6 @@ "php": ">=8.1", "psr/event-dispatcher": "^1" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3083,6 +3108,72 @@ "support": { "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v7.4.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3ebc794fa5315e59fd122561623c2e2e4280538e", + "reference": "3ebc794fa5315e59fd122561623c2e2e4280538e", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^6.4|^7.0|^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v7.4.6" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3101,20 +3192,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/mailer", - "version": "7.4.x-dev", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "bee1739939a671e9503f717efa68f6afa11087df" + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/bee1739939a671e9503f717efa68f6afa11087df", - "reference": "bee1739939a671e9503f717efa68f6afa11087df", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b02726f39a20bc65e30364f5c750c4ddbf1f58e9", + "reference": "b02726f39a20bc65e30364f5c750c4ddbf1f58e9", "shasum": "" }, "require": { @@ -3165,7 +3256,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/7.4" + "source": "https://github.com/symfony/mailer/tree/v7.4.6" }, "funding": [ { @@ -3185,20 +3276,20 @@ "type": "tidelift" } ], - "time": "2025-09-18T08:45:38+00:00" + "time": "2026-02-25T16:50:00+00:00" }, { "name": "symfony/mime", - "version": "8.0.x-dev", + "version": "v8.0.6", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "c09c94fb0c237c6d7196d25874ced0ebf9522f89" + "reference": "632aef4f15ead4d48c16395e447f2da12543d201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/c09c94fb0c237c6d7196d25874ced0ebf9522f89", - "reference": "c09c94fb0c237c6d7196d25874ced0ebf9522f89", + "url": "https://api.github.com/repos/symfony/mime/zipball/632aef4f15ead4d48c16395e447f2da12543d201", + "reference": "632aef4f15ead4d48c16395e447f2da12543d201", "shasum": "" }, "require": { @@ -3208,13 +3299,13 @@ }, "conflict": { "egulias/email-validator": "~3.0.0", - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0" + "phpdocumentor/reflection-docblock": "<5.2|>=7", + "phpdocumentor/type-resolver": "<1.5.1" }, "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", + "phpdocumentor/reflection-docblock": "^5.2|^6.0", "symfony/dependency-injection": "^7.4|^8.0", "symfony/process": "^7.4|^8.0", "symfony/property-access": "^7.4|^8.0", @@ -3251,7 +3342,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/8.0" + "source": "https://github.com/symfony/mime/tree/v8.0.6" }, "funding": [ { @@ -3271,11 +3362,11 @@ "type": "tidelift" } ], - "time": "2025-09-16T08:41:54+00:00" + "time": "2026-02-05T16:06:41+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -3296,7 +3387,6 @@ "suggest": { "ext-ctype": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3359,7 +3449,7 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", @@ -3378,7 +3468,6 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3447,7 +3536,7 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -3465,7 +3554,6 @@ "suggest": { "ext-intl": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3533,7 +3621,7 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", @@ -3555,7 +3643,6 @@ "suggest": { "ext-mbstring": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3619,7 +3706,7 @@ }, { "name": "symfony/polyfill-php80", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", @@ -3634,7 +3721,6 @@ "require": { "php": ">=7.2" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3704,7 +3790,7 @@ }, { "name": "symfony/polyfill-uuid", - "version": "1.x-dev", + "version": "v1.33.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", @@ -3725,7 +3811,6 @@ "suggest": { "ext-uuid": "For best performance" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3788,16 +3873,16 @@ }, { "name": "symfony/process", - "version": "7.4.x-dev", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "c61e87dafe1f427ce8d2e1d87c8b90d4806974cd" + "reference": "608476f4604102976d687c483ac63a79ba18cc97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/c61e87dafe1f427ce8d2e1d87c8b90d4806974cd", - "reference": "c61e87dafe1f427ce8d2e1d87c8b90d4806974cd", + "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", + "reference": "608476f4604102976d687c483ac63a79ba18cc97", "shasum": "" }, "require": { @@ -3829,7 +3914,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/7.4" + "source": "https://github.com/symfony/process/tree/v7.4.5" }, "funding": [ { @@ -3849,11 +3934,11 @@ "type": "tidelift" } ], - "time": "2025-08-18T09:46:12+00:00" + "time": "2026-01-26T15:07:59+00:00" }, { "name": "symfony/service-contracts", - "version": "dev-main", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", @@ -3873,7 +3958,6 @@ "conflict": { "ext-psr": "<1.1|>=2" }, - "default-branch": true, "type": "library", "extra": { "thanks": { @@ -3917,7 +4001,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/main" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" }, "funding": [ { @@ -3941,16 +4025,16 @@ }, { "name": "symfony/uid", - "version": "7.4.x-dev", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "2498e9f81b7baa206f44de583f2f48350b90142c" + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/2498e9f81b7baa206f44de583f2f48350b90142c", - "reference": "2498e9f81b7baa206f44de583f2f48350b90142c", + "url": "https://api.github.com/repos/symfony/uid/zipball/7719ce8aba76be93dfe249192f1fbfa52c588e36", + "reference": "7719ce8aba76be93dfe249192f1fbfa52c588e36", "shasum": "" }, "require": { @@ -3995,7 +4079,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/7.4" + "source": "https://github.com/symfony/uid/tree/v7.4.4" }, "funding": [ { @@ -4015,20 +4099,20 @@ "type": "tidelift" } ], - "time": "2025-09-25T11:02:55+00:00" + "time": "2026-01-03T23:30:35+00:00" }, { "name": "symfony/var-dumper", - "version": "7.4.x-dev", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "59052532348d426af0fae6f0bbcc5d8ab598db39" + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/59052532348d426af0fae6f0bbcc5d8ab598db39", - "reference": "59052532348d426af0fae6f0bbcc5d8ab598db39", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/045321c440ac18347b136c63d2e9bf28a2dc0291", + "reference": "045321c440ac18347b136c63d2e9bf28a2dc0291", "shasum": "" }, "require": { @@ -4082,7 +4166,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/7.4" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.6" }, "funding": [ { @@ -4102,11 +4186,11 @@ "type": "tidelift" } ], - "time": "2025-09-09T12:50:48+00:00" + "time": "2026-02-15T10:53:20+00:00" }, { "name": "symfony/var-exporter", - "version": "7.4.x-dev", + "version": "v7.4.0", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", @@ -4163,7 +4247,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/7.4" + "source": "https://github.com/symfony/var-exporter/tree/v7.4.0" }, "funding": [ { @@ -4187,16 +4271,16 @@ }, { "name": "symfony/yaml", - "version": "7.4.x-dev", + "version": "v7.4.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce" + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/87fee1ea580fbbd338642ee42c2dd1906f161bce", - "reference": "87fee1ea580fbbd338642ee42c2dd1906f161bce", + "url": "https://api.github.com/repos/symfony/yaml/zipball/58751048de17bae71c5aa0d13cb19d79bca26391", + "reference": "58751048de17bae71c5aa0d13cb19d79bca26391", "shasum": "" }, "require": { @@ -4239,7 +4323,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/7.4" + "source": "https://github.com/symfony/yaml/tree/v7.4.6" }, "funding": [ { @@ -4259,20 +4343,20 @@ "type": "tidelift" } ], - "time": "2025-08-27T12:26:27+00:00" + "time": "2026-02-09T09:33:46+00:00" }, { "name": "tempest/framework", - "version": "v2.0.4", + "version": "v3.2.1", "source": { "type": "git", "url": "https://github.com/tempestphp/tempest-framework.git", - "reference": "9314bb30c3ccc6013b426479588658bc5156daee" + "reference": "90af5b7a7454c3be1ebbc2ad15a55dba284dba59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tempestphp/tempest-framework/zipball/9314bb30c3ccc6013b426479588658bc5156daee", - "reference": "9314bb30c3ccc6013b426479588658bc5156daee", + "url": "https://api.github.com/repos/tempestphp/tempest-framework/zipball/90af5b7a7454c3be1ebbc2ad15a55dba284dba59", + "reference": "90af5b7a7454c3be1ebbc2ad15a55dba284dba59", "shasum": "" }, "require": { @@ -4293,20 +4377,23 @@ "league/commonmark": "^2.7", "league/flysystem": "^3.29.1", "league/mime-type-detection": "^1.16", + "league/oauth2-client": "^2.8", "monolog/monolog": "^3.7.0", - "nette/php-generator": "^4.1.6", + "nette/php-generator": "^4.2.1", + "nette/schema": "^1.3.4", "nikic/php-parser": "^5.3", - "php": "^8.4", - "psr-discovery/http-client-implementations": "^1.2", - "psr-discovery/http-factory-implementations": "^1.4", + "php": "^8.5", + "psr-discovery/http-client-implementations": "^1.4", + "psr-discovery/http-factory-implementations": "^1.2", "psr/cache": "^3.0", "psr/clock": "^1.0.0", "psr/http-client": "^1.0.0", "psr/http-factory": "^1.0", "psr/http-message": "^1.0|^2.0", "psr/log": "^3.0.0", - "rector/rector": "^2.1", + "rector/rector": "2.3.1", "symfony/cache": "^7.3", + "symfony/filesystem": "^7.3", "symfony/mailer": "^7.2.6", "symfony/process": "^7.3", "symfony/uid": "^7.1", @@ -4351,9 +4438,11 @@ "tempest/vite": "self.version" }, "require-dev": { + "adam-paterson/oauth2-slack": "^1.1", "aws/aws-sdk-php": "^3.338.0", "azure-oss/storage-blob-flysystem": "^1.2", - "carthage-software/mago": "^1.0.0-beta.16", + "brianium/paratest": "^7.14", + "carthage-software/mago": "1.0.0-beta.28", "guzzlehttp/psr7": "^2.6.1", "league/flysystem-aws-s3-v3": "^3.25.1", "league/flysystem-ftp": "^3.25.1", @@ -4363,30 +4452,43 @@ "league/flysystem-read-only": "^3.25.1", "league/flysystem-sftp-v3": "^3.25.1", "league/flysystem-ziparchive": "^3.25.1", + "league/oauth2-facebook": "^2.0", + "league/oauth2-github": "^3.1", + "league/oauth2-google": "^4.0", + "league/oauth2-instagram": "^3.0", + "league/oauth2-linkedin": "^5.1", "masterminds/html5": "^2.9", "microsoft/azure-storage-blob": "^1.5", "mikey179/vfsstream": "^2.0@dev", "nesbot/carbon": "^3.8", "nyholm/psr7": "^1.8", + "patrickbussmann/oauth2-apple": "^0.3", "phpat/phpat": "^0.11.0", - "phpbench/phpbench": "84.x-dev", - "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^12.2.3", + "phpbench/phpbench": "^1.4", + "phpstan/phpstan": "2.1.33", + "phpunit/phpunit": "^12.5.8", "predis/predis": "^3.0.0", + "riskio/oauth2-auth0": "^2.4", + "smolblog/oauth2-twitter": "^1.0", "spatie/phpunit-snapshot-assertions": "^5.1.8", "spaze/phpstan-disallowed-calls": "^4.0", + "stevenmaguire/oauth2-microsoft": "^2.2", "symfony/amazon-mailer": "^7.2.0", "symfony/postmark-mailer": "^7.2.6", "symplify/monorepo-builder": "^11.2", "tempest/blade": "dev-main", - "twig/twig": "^3.16" + "thenetworg/oauth2-azure": "^2.2", + "twig/twig": "^3.16", + "vertisan/oauth2-twitch-helix": "^2.0", + "wohali/oauth2-discord-new": "^1.2" }, "suggest": { "ext-pcntl": "Required to use some interactive console components.", "ext-posix": "Required to use some interactive console components." }, "bin": [ - "packages/console/bin/tempest" + "packages/console/bin/tempest", + "packages/console/bin/tempest-complete" ], "type": "library", "autoload": { @@ -4420,6 +4522,7 @@ "packages/support/src/Regex/functions.php", "packages/support/src/Str/constants.php", "packages/support/src/Str/functions.php", + "packages/support/src/Uri/functions.php", "packages/support/src/functions.php", "packages/view/src/functions.php", "packages/vite/src/functions.php" @@ -4466,7 +4569,7 @@ "description": "The PHP framework that gets out of your way.", "support": { "issues": "https://github.com/tempestphp/tempest-framework/issues", - "source": "https://github.com/tempestphp/tempest-framework/tree/v2.0.4" + "source": "https://github.com/tempestphp/tempest-framework/tree/v3.2.1" }, "funding": [ { @@ -4474,31 +4577,37 @@ "type": "github" } ], - "time": "2025-09-25T07:49:30+00:00" + "time": "2026-02-19T13:23:34+00:00" }, { "name": "tempest/highlight", - "version": "v2.x-dev", + "version": "2.17.1", "source": { "type": "git", "url": "https://github.com/tempestphp/highlight.git", - "reference": "f0d415eab9b129abf60a68dfb6e26da7c28c025d" + "reference": "5b5ef6848dafdfac59a03d9d816ff79ac908651a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tempestphp/highlight/zipball/f0d415eab9b129abf60a68dfb6e26da7c28c025d", - "reference": "f0d415eab9b129abf60a68dfb6e26da7c28c025d", + "url": "https://api.github.com/repos/tempestphp/highlight/zipball/5b5ef6848dafdfac59a03d9d816ff79ac908651a", + "reference": "5b5ef6848dafdfac59a03d9d816ff79ac908651a", "shasum": "" }, "require": { - "php": "^8.3" + "php": "^8.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.21", - "larapack/dd": "^1.1", + "assertchris/ellison": "^1.0.2", + "friendsofphp/php-cs-fixer": "^3.84", "league/commonmark": "^2.4", - "phpstan/phpstan": "^1.10.0", - "phpunit/phpunit": "^10.0" + "phpbench/phpbench": "^1.4", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^12.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0" + }, + "suggest": { + "assertchris/ellison": "Allows you to analyse sentence complexity", + "league/commonmark": "Adds markdown support" }, "type": "library", "autoload": { @@ -4519,7 +4628,7 @@ "description": "Fast, extensible, server-side code highlighting", "support": { "issues": "https://github.com/tempestphp/highlight/issues", - "source": "https://github.com/tempestphp/highlight/tree/v2" + "source": "https://github.com/tempestphp/highlight/tree/2.17.1" }, "funding": [ { @@ -4527,30 +4636,30 @@ "type": "github" } ], - "time": "2024-04-15T07:24:27+00:00" + "time": "2026-02-13T12:23:59+00:00" }, { "name": "vlucas/phpdotenv", - "version": "dev-master", + "version": "v5.6.3", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" + "reference": "955e7815d677a3eaa7075231212f2110983adecc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", - "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", + "reference": "955e7815d677a3eaa7075231212f2110983adecc", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.3", + "graham-campbell/result-type": "^1.1.4", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.3", - "symfony/polyfill-ctype": "^1.24", - "symfony/polyfill-mbstring": "^1.24", - "symfony/polyfill-php80": "^1.24" + "phpoption/phpoption": "^1.9.5", + "symfony/polyfill-ctype": "^1.26", + "symfony/polyfill-mbstring": "^1.26", + "symfony/polyfill-php80": "^1.26" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", @@ -4560,7 +4669,6 @@ "suggest": { "ext-filter": "Required to use the boolean validator." }, - "default-branch": true, "type": "library", "extra": { "bamarni-bin": { @@ -4600,7 +4708,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" }, "funding": [ { @@ -4612,7 +4720,7 @@ "type": "tidelift" } ], - "time": "2025-04-30T23:37:27+00:00" + "time": "2025-12-27T19:49:13+00:00" }, { "name": "voku/portable-ascii", @@ -4692,36 +4800,33 @@ "packages-dev": [ { "name": "carthage-software/mago", - "version": "1.0.0-rc.1", + "version": "1.13.2", "source": { "type": "git", "url": "https://github.com/carthage-software/mago.git", - "reference": "d6a609706e99e943123609712dae3293488b2541" + "reference": "ed4c07ec6555e2ad2f9890e8c2b1dfb7325cd5a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/carthage-software/mago/zipball/d6a609706e99e943123609712dae3293488b2541", - "reference": "d6a609706e99e943123609712dae3293488b2541", + "url": "https://api.github.com/repos/carthage-software/mago/zipball/ed4c07ec6555e2ad2f9890e8c2b1dfb7325cd5a2", + "reference": "ed4c07ec6555e2ad2f9890e8c2b1dfb7325cd5a2", "shasum": "" }, "require": { - "composer-plugin-api": "^2.6", - "php": "~8.1 || ~8.2 || ~8.3 || ~8.4" + "php": "~8.1 || ~8.2 || ~8.3 || ~8.4 || ~8.5 || ~8.6" }, - "require-dev": { - "composer/composer": "^2.8" + "suggest": { + "ext-curl": "To show binary download progress" }, "bin": [ "composer/bin/mago" ], - "type": "composer-plugin", - "extra": { - "class": "Mago\\MagoPlugin" - }, + "type": "library", "autoload": { - "psr-4": { - "Mago\\": "composer/" - } + "files": [ + "composer/functions.php", + "composer/internal.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4739,7 +4844,7 @@ ], "support": { "issues": "https://github.com/carthage-software/mago/issues", - "source": "https://github.com/carthage-software/mago/tree/1.0.0-rc.1" + "source": "https://github.com/carthage-software/mago/tree/1.13.2" }, "funding": [ { @@ -4747,11 +4852,11 @@ "type": "github" } ], - "time": "2025-11-12T07:35:55+00:00" + "time": "2026-02-27T15:00:23+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.x-dev", + "version": "1.13.4", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", @@ -4776,7 +4881,6 @@ "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "default-branch": true, "type": "library", "autoload": { "files": [ @@ -4812,16 +4916,16 @@ }, { "name": "phar-io/manifest", - "version": "dev-master", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "65f90285728eae4eae313b8b6ba11b2f5436038e" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/65f90285728eae4eae313b8b6ba11b2f5436038e", - "reference": "65f90285728eae4eae313b8b6ba11b2f5436038e", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { @@ -4832,7 +4936,6 @@ "phar-io/version": "^3.0.1", "php": "^7.2 || ^8.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -4868,7 +4971,7 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/master" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, "funding": [ { @@ -4876,7 +4979,7 @@ "type": "github" } ], - "time": "2025-07-05T08:48:25+00:00" + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -4931,23 +5034,23 @@ }, { "name": "phpunit/php-code-coverage", - "version": "11.0.x-dev", + "version": "11.0.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "c46078be0a099f555ec9a3e0615b924e8cc01d26" + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c46078be0a099f555ec9a3e0615b924e8cc01d26", - "reference": "c46078be0a099f555ec9a3e0615b924e8cc01d26", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2c1ed04922802c15e1de5d7447b4856de949cf56", + "reference": "2c1ed04922802c15e1de5d7447b4856de949cf56", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^5.6.1", + "nikic/php-parser": "^5.7.0", "php": ">=8.2", "phpunit/php-file-iterator": "^5.1.0", "phpunit/php-text-template": "^4.0.1", @@ -4956,10 +5059,10 @@ "sebastian/environment": "^7.2.1", "sebastian/lines-of-code": "^3.0.1", "sebastian/version": "^5.0.2", - "theseer/tokenizer": "^1.2.3" + "theseer/tokenizer": "^1.3.1" }, "require-dev": { - "phpunit/phpunit": "^11.5.35" + "phpunit/phpunit": "^11.5.46" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4997,7 +5100,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.12" }, "funding": [ { @@ -5017,20 +5120,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T13:00:37+00:00" + "time": "2025-12-24T07:01:01+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "5.1.x-dev", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "18a3d4f3af59807625ae982d88b27085ad38c367" + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/18a3d4f3af59807625ae982d88b27085ad38c367", - "reference": "18a3d4f3af59807625ae982d88b27085ad38c367", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/2f3a64888c814fc235386b7387dd5b5ed92ad903", + "reference": "2f3a64888c814fc235386b7387dd5b5ed92ad903", "shasum": "" }, "require": { @@ -5070,7 +5173,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.1.1" }, "funding": [ { @@ -5090,20 +5193,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T11:52:35+00:00" + "time": "2026-02-02T13:52:54+00:00" }, { "name": "phpunit/php-invoker", - "version": "5.0.x-dev", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "cdf46882fb81433d671ed4ba64c62da7e62b1f12" + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/cdf46882fb81433d671ed4ba64c62da7e62b1f12", - "reference": "cdf46882fb81433d671ed4ba64c62da7e62b1f12", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/c1ca3814734c07492b3d4c5f794f4b0995333da2", + "reference": "c1ca3814734c07492b3d4c5f794f4b0995333da2", "shasum": "" }, "require": { @@ -5111,7 +5214,7 @@ }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "suggest": { "ext-pcntl": "*" @@ -5146,47 +5249,35 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.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/phpunit/php-invoker", - "type": "tidelift" } ], - "time": "2025-09-26T11:56:54+00:00" + "time": "2024-07-03T05:07:44+00:00" }, { "name": "phpunit/php-text-template", - "version": "4.0.x-dev", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "51c29005b7c2781f72381ff01a2fe79be7096d29" + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/51c29005b7c2781f72381ff01a2fe79be7096d29", - "reference": "51c29005b7c2781f72381ff01a2fe79be7096d29", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/3e0404dc6b300e6bf56415467ebcb3fe4f33e964", + "reference": "3e0404dc6b300e6bf56415467ebcb3fe4f33e964", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -5218,47 +5309,35 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.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/phpunit/php-text-template", - "type": "tidelift" } ], - "time": "2025-09-26T12:02:43+00:00" + "time": "2024-07-03T05:08:43+00:00" }, { "name": "phpunit/php-timer", - "version": "7.0.x-dev", + "version": "7.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "97eee3cc4868bb1ae61a59cd95aff98c52d43def" + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/97eee3cc4868bb1ae61a59cd95aff98c52d43def", - "reference": "97eee3cc4868bb1ae61a59cd95aff98c52d43def", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", + "reference": "3b415def83fbcb41f991d9ebf16ae4ad8b7837b3", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -5290,40 +5369,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0" + "source": "https://github.com/sebastianbergmann/php-timer/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/phpunit/php-timer", - "type": "tidelift" } ], - "time": "2025-09-26T12:06:24+00:00" + "time": "2024-07-03T05:09:35+00:00" }, { "name": "phpunit/phpunit", - "version": "11.5.x-dev", + "version": "11.5.55", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "d73994ab2801d43980769271a1735350bd578b35" + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/d73994ab2801d43980769271a1735350bd578b35", - "reference": "d73994ab2801d43980769271a1735350bd578b35", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00", + "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00", "shasum": "" }, "require": { @@ -5337,19 +5404,20 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0.11", - "phpunit/php-file-iterator": "^5.1.0", + "phpunit/php-code-coverage": "^11.0.12", + "phpunit/php-file-iterator": "^5.1.1", "phpunit/php-invoker": "^5.0.1", "phpunit/php-text-template": "^4.0.1", "phpunit/php-timer": "^7.0.1", "sebastian/cli-parser": "^3.0.2", "sebastian/code-unit": "^3.0.3", - "sebastian/comparator": "^6.3.2", + "sebastian/comparator": "^6.3.3", "sebastian/diff": "^6.0.2", "sebastian/environment": "^7.2.1", "sebastian/exporter": "^6.3.2", "sebastian/global-state": "^7.0.2", "sebastian/object-enumerator": "^6.0.1", + "sebastian/recursion-context": "^6.0.3", "sebastian/type": "^5.1.3", "sebastian/version": "^5.0.2", "staabm/side-effects-detector": "^1.0.5" @@ -5395,7 +5463,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.55" }, "funding": [ { @@ -5419,27 +5487,27 @@ "type": "tidelift" } ], - "time": "2025-09-26T05:24:59+00:00" + "time": "2026-02-18T12:37:06+00:00" }, { "name": "sebastian/cli-parser", - "version": "3.0.x-dev", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "3a073702d31bd8bb4f1a010793ac967c6dbc7c85" + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/3a073702d31bd8bb4f1a010793ac967c6dbc7c85", - "reference": "3a073702d31bd8bb4f1a010793ac967c6dbc7c85", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/15c5dd40dc4f38794d383bb95465193f5e0ae180", + "reference": "15c5dd40dc4f38794d383bb95465193f5e0ae180", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -5468,40 +5536,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.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/cli-parser", - "type": "tidelift" } ], - "time": "2025-09-26T09:03:29+00:00" + "time": "2024-07-03T04:41:36+00:00" }, { "name": "sebastian/code-unit", - "version": "dev-main", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "23caa57776ddcaa35a2965b93d5f4212a2c3a2d9" + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/23caa57776ddcaa35a2965b93d5f4212a2c3a2d9", - "reference": "23caa57776ddcaa35a2965b93d5f4212a2c3a2d9", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/54391c61e4af8078e5b276ab082b6d3c54c9ad64", + "reference": "54391c61e4af8078e5b276ab082b6d3c54c9ad64", "shasum": "" }, "require": { @@ -5510,7 +5566,6 @@ "require-dev": { "phpunit/phpunit": "^11.5" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -5538,49 +5593,36 @@ "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.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/code-unit", - "type": "tidelift" } ], - "time": "2025-05-25T06:37:26+00:00" + "time": "2025-03-19T07:56:08+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "dev-main", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5cf245ed8605ac5c89946e4bcdcbbd1565b19d9f" + "reference": "183a9b2632194febd219bb9246eee421dad8d45e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5cf245ed8605ac5c89946e4bcdcbbd1565b19d9f", - "reference": "5cf245ed8605ac5c89946e4bcdcbbd1565b19d9f", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/183a9b2632194febd219bb9246eee421dad8d45e", + "reference": "183a9b2632194febd219bb9246eee421dad8d45e", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, - "default-branch": true, "type": "library", "extra": { "branch-alias": { @@ -5607,40 +5649,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/main" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.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/code-unit-reverse-lookup", - "type": "tidelift" } ], - "time": "2025-05-25T06:37:50+00:00" + "time": "2024-07-03T04:45:54+00:00" }, { "name": "sebastian/comparator", - "version": "6.3.x-dev", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "5bff74a11f16f69c1e9764ff08f12577d9bf8ded" + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5bff74a11f16f69c1e9764ff08f12577d9bf8ded", - "reference": "5bff74a11f16f69c1e9764ff08f12577d9bf8ded", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", "shasum": "" }, "require": { @@ -5699,7 +5729,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/6.3.3" }, "funding": [ { @@ -5719,20 +5749,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T09:17:19+00:00" + "time": "2026-01-24T09:26:40+00:00" }, { "name": "sebastian/complexity", - "version": "4.0.x-dev", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "66dc7be5b87498fc0a94565e3b869515becc6569" + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/66dc7be5b87498fc0a94565e3b869515becc6569", - "reference": "66dc7be5b87498fc0a94565e3b869515becc6569", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/ee41d384ab1906c68852636b6de493846e13e5a0", + "reference": "ee41d384ab1906c68852636b6de493846e13e5a0", "shasum": "" }, "require": { @@ -5740,7 +5770,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -5769,47 +5799,35 @@ "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/4.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/complexity", - "type": "tidelift" } ], - "time": "2025-09-26T09:28:11+00:00" + "time": "2024-07-03T04:49:50+00:00" }, { "name": "sebastian/diff", - "version": "6.0.x-dev", + "version": "6.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "a42039c742783604f4156c17357f22e335ba5d1c" + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a42039c742783604f4156c17357f22e335ba5d1c", - "reference": "a42039c742783604f4156c17357f22e335ba5d1c", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", + "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3", + "phpunit/phpunit": "^11.0", "symfony/process": "^4.2 || ^5" }, "type": "library", @@ -5848,40 +5866,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0" + "source": "https://github.com/sebastianbergmann/diff/tree/6.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/diff", - "type": "tidelift" } ], - "time": "2025-09-26T09:40:22+00:00" + "time": "2024-07-03T04:53:05+00:00" }, { "name": "sebastian/environment", - "version": "7.2.x-dev", + "version": "7.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "05faa86b4c0042e122ed6be66766b9bf820775d6" + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/05faa86b4c0042e122ed6be66766b9bf820775d6", - "reference": "05faa86b4c0042e122ed6be66766b9bf820775d6", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/a5c75038693ad2e8d4b6c15ba2403532647830c4", + "reference": "a5c75038693ad2e8d4b6c15ba2403532647830c4", "shasum": "" }, "require": { @@ -5924,7 +5930,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.2" + "source": "https://github.com/sebastianbergmann/environment/tree/7.2.1" }, "funding": [ { @@ -5944,20 +5950,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T09:53:03+00:00" + "time": "2025-05-21T11:55:47+00:00" }, { "name": "sebastian/exporter", - "version": "6.3.x-dev", + "version": "6.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "c939676885df069c0bc467ca4a1ac7dd367db7a8" + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c939676885df069c0bc467ca4a1ac7dd367db7a8", - "reference": "c939676885df069c0bc467ca4a1ac7dd367db7a8", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", + "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", "shasum": "" }, "require": { @@ -6014,7 +6020,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.3" + "source": "https://github.com/sebastianbergmann/exporter/tree/6.3.2" }, "funding": [ { @@ -6034,20 +6040,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T11:23:57+00:00" + "time": "2025-09-24T06:12:51+00:00" }, { "name": "sebastian/global-state", - "version": "7.0.x-dev", + "version": "7.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "88b1eb038ff5daa6f3c2b76bea3cd0ac48626f53" + "reference": "3be331570a721f9a4b5917f4209773de17f747d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/88b1eb038ff5daa6f3c2b76bea3cd0ac48626f53", - "reference": "88b1eb038ff5daa6f3c2b76bea3cd0ac48626f53", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/3be331570a721f9a4b5917f4209773de17f747d7", + "reference": "3be331570a721f9a4b5917f4209773de17f747d7", "shasum": "" }, "require": { @@ -6057,7 +6063,7 @@ }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -6088,40 +6094,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0" + "source": "https://github.com/sebastianbergmann/global-state/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/global-state", - "type": "tidelift" } ], - "time": "2025-09-26T11:31:14+00:00" + "time": "2024-07-03T04:57:36+00:00" }, { "name": "sebastian/lines-of-code", - "version": "3.0.x-dev", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "8426f4eebca3f4003616c617b89094be52fc7b16" + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/8426f4eebca3f4003616c617b89094be52fc7b16", - "reference": "8426f4eebca3f4003616c617b89094be52fc7b16", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/d36ad0d782e5756913e42ad87cb2890f4ffe467a", + "reference": "d36ad0d782e5756913e42ad87cb2890f4ffe467a", "shasum": "" }, "require": { @@ -6129,7 +6123,7 @@ "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -6158,40 +6152,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.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/lines-of-code", - "type": "tidelift" } ], - "time": "2025-09-26T11:36:26+00:00" + "time": "2024-07-03T04:58:38+00:00" }, { "name": "sebastian/object-enumerator", - "version": "6.0.x-dev", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1748f199f50f7deb6f12c4f08cddc306cf6fd2e2" + "reference": "f5b498e631a74204185071eb41f33f38d64608aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1748f199f50f7deb6f12c4f08cddc306cf6fd2e2", - "reference": "1748f199f50f7deb6f12c4f08cddc306cf6fd2e2", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f5b498e631a74204185071eb41f33f38d64608aa", + "reference": "f5b498e631a74204185071eb41f33f38d64608aa", "shasum": "" }, "require": { @@ -6200,7 +6182,7 @@ "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -6228,47 +6210,35 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.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/object-enumerator", - "type": "tidelift" } ], - "time": "2025-09-26T11:41:57+00:00" + "time": "2024-07-03T05:00:13+00:00" }, { "name": "sebastian/object-reflector", - "version": "4.0.x-dev", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "89dc41f115e98bfa597501c28e489dd7db93b855" + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/89dc41f115e98bfa597501c28e489dd7db93b855", - "reference": "89dc41f115e98bfa597501c28e489dd7db93b855", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/6e1a43b411b2ad34146dee7524cb13a068bb35f9", + "reference": "6e1a43b411b2ad34146dee7524cb13a068bb35f9", "shasum": "" }, "require": { "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { @@ -6296,40 +6266,28 @@ "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.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/object-reflector", - "type": "tidelift" } ], - "time": "2025-09-26T11:47:29+00:00" + "time": "2024-07-03T05:01:32+00:00" }, { "name": "sebastian/recursion-context", - "version": "6.0.x-dev", + "version": "6.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "5d8d13f2fcb3c9839d4ff05613e008ceb02bfc64" + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5d8d13f2fcb3c9839d4ff05613e008ceb02bfc64", - "reference": "5d8d13f2fcb3c9839d4ff05613e008ceb02bfc64", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", "shasum": "" }, "require": { @@ -6372,7 +6330,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.3" }, "funding": [ { @@ -6392,20 +6350,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T12:14:53+00:00" + "time": "2025-08-13T04:42:22+00:00" }, { "name": "sebastian/type", - "version": "5.1.x-dev", + "version": "5.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "6abfe424c60c52cafb35c5c78e142304925817be" + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/6abfe424c60c52cafb35c5c78e142304925817be", - "reference": "6abfe424c60c52cafb35c5c78e142304925817be", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/f77d2d4e78738c98d9a68d2596fe5e8fa380f449", + "reference": "f77d2d4e78738c98d9a68d2596fe5e8fa380f449", "shasum": "" }, "require": { @@ -6441,7 +6399,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/type/issues", "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.1" + "source": "https://github.com/sebastianbergmann/type/tree/5.1.3" }, "funding": [ { @@ -6461,20 +6419,20 @@ "type": "tidelift" } ], - "time": "2025-09-26T12:19:36+00:00" + "time": "2025-08-09T06:55:48+00:00" }, { "name": "sebastian/version", - "version": "5.0.x-dev", + "version": "5.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "0e6075acec40b5ed867eefd095488171404c63fa" + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/0e6075acec40b5ed867eefd095488171404c63fa", - "reference": "0e6075acec40b5ed867eefd095488171404c63fa", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c687e3387b99f5b03b6caa64c74b63e2936ff874", + "reference": "c687e3387b99f5b03b6caa64c74b63e2936ff874", "shasum": "" }, "require": { @@ -6507,27 +6465,15 @@ "support": { "issues": "https://github.com/sebastianbergmann/version/issues", "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0" + "source": "https://github.com/sebastianbergmann/version/tree/5.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/version", - "type": "tidelift" } ], - "time": "2025-09-26T12:27:57+00:00" + "time": "2024-10-09T05:16:32+00:00" }, { "name": "staabm/side-effects-detector", @@ -6583,16 +6529,16 @@ }, { "name": "theseer/tokenizer", - "version": "1.2.3", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c", + "reference": "b7489ce515e168639d17feec34b8847c326b0b3c", "shasum": "" }, "require": { @@ -6621,7 +6567,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/1.3.1" }, "funding": [ { @@ -6629,17 +6575,17 @@ "type": "github" } ], - "time": "2024-03-03T12:36:25+00:00" + "time": "2025-11-17T20:03:58+00:00" } ], "aliases": [], - "minimum-stability": "dev", + "minimum-stability": "stable", "stability-flags": {}, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^8.4" + "php": "^8.5" }, "platform-dev": {}, - "plugin-api-version": "2.6.0" + "plugin-api-version": "2.9.0" } diff --git a/mago.yaml b/mago.yaml index b04aae3..90eab1a 100644 --- a/mago.yaml +++ b/mago.yaml @@ -27,8 +27,6 @@ linter: linter.rules: yoda-conditions: enabled: false - ambiguous-function-call: - enabled: false literal-named-argument: enabled: false halstead: @@ -37,11 +35,6 @@ linter.rules: enabled: false trait-name: enabled: false - return-type: - ignore-arrow-function: true - parameter-type: - ignore-closure: true - ignore-arrow-function: true analyzer: excludes: diff --git a/src/Contracts/MergeableProp.php b/src/Contracts/MergeableProp.php index 9bb4874..1806ec1 100644 --- a/src/Contracts/MergeableProp.php +++ b/src/Contracts/MergeableProp.php @@ -6,9 +6,7 @@ interface MergeableProp { - public bool $shouldMerge { - get; - } + public bool $shouldMerge { get; } public function merge(): static; } diff --git a/src/Http/InertiaResponse.php b/src/Http/InertiaResponse.php index 30e41e3..eff1e10 100644 --- a/src/Http/InertiaResponse.php +++ b/src/Http/InertiaResponse.php @@ -18,7 +18,7 @@ use Tempest\Http\Response; use Tempest\Support\Arr\ArrayInterface; -use function Tempest\invoke; +use function Tempest\Container\invoke; use function Tempest\Support\arr; // @mago-expect lint:cyclomatic-complexity @@ -38,11 +38,7 @@ public function __construct( ) { $pageData = new PageData( component: $component, - props: self::composeProps( - props: $props, - request: $request, - component: $component, - ), + props: self::composeProps(props: $props, request: $request, component: $component), url: $request->uri, version: $version, clearHistory: $clearHistory, @@ -52,10 +48,7 @@ public function __construct( request: $request, component: $component, ), - propsKeysToMerge: self::resolvePropKeysThatShouldMerge( - props: $props, - request: $request, - ), + propsKeysToMerge: self::resolvePropKeysThatShouldMerge(props: $props, request: $request), ); if ($request->headers->has(Header::INERTIA)) { @@ -64,10 +57,7 @@ public function __construct( return; } - $this->body = new InertiaBaseView( - path: $rootView, - page: $pageData, - ); + $this->body = new InertiaBaseView(path: $rootView, page: $pageData); } public static function isPartial(Request $request, string $component): bool @@ -111,14 +101,8 @@ private static function resolvePartialProps(Request $request, string $component, ); } - $only = array_filter(explode( - separator: ',', - string: $headers->get(Header::PARTIAL_ONLY) ?? '', - )); - $except = array_filter(explode( - separator: ',', - string: $headers->get(Header::PARTIAL_EXCEPT) ?? '', - )); + $only = array_filter(explode(separator: ',', string: $headers->get(Header::PARTIAL_ONLY) ?? '')); + $except = array_filter(explode(separator: ',', string: $headers->get(Header::PARTIAL_EXCEPT) ?? '')); $filtered = $only ? array_intersect_key($props, array_flip($only)) : $props; @@ -145,10 +129,7 @@ private static function resolvePropKeysThatShouldDefer(array $props, Request $re private static function resolvePropKeysThatShouldMerge(array $props, Request $request): ?array { - $resetProps = arr(explode( - separator: ',', - string: $request->headers->get(Header::RESET) ?? '', - )); + $resetProps = arr(explode(separator: ',', string: $request->headers->get(Header::RESET) ?? '')); $propKeysToMerge = arr($props) ->filter(static fn($prop) => $prop instanceof MergeableProp && $prop->shouldMerge) diff --git a/src/Http/Middleware.php b/src/Http/Middleware.php index 031ef6d..1c83017 100644 --- a/src/Http/Middleware.php +++ b/src/Http/Middleware.php @@ -29,10 +29,7 @@ public function __invoke(Request $request, HttpMiddlewareCallable $next): Respon { $response = $next($request); - $response = $response->addHeader( - key: 'Vary', - value: Header::INERTIA, - ); + $response = $response->addHeader(key: 'Vary', value: Header::INERTIA); if (!$request->headers->has(Header::INERTIA)) { return $response; diff --git a/src/Inertia.php b/src/Inertia.php index b987cf1..33027b2 100644 --- a/src/Inertia.php +++ b/src/Inertia.php @@ -6,7 +6,6 @@ use Closure; use NeoIsRecursive\Inertia\Http\InertiaResponse; -use NeoIsRecursive\Inertia\InertiaConfig; use NeoIsRecursive\Inertia\Props\AlwaysProp; use NeoIsRecursive\Inertia\Props\DeferProp; use NeoIsRecursive\Inertia\Props\OptionalProp; @@ -88,20 +87,14 @@ public function render(string $component, array $props = []): InertiaResponse public function encryptHistory(): self { - $this->session->flash( - key: 'inertia.encrypt_history', - value: true, - ); + $this->session->flash(key: 'inertia.encrypt_history', value: true); return $this; } public function clearHistory(): self { - $this->session->flash( - key: 'inertia.clear_history', - value: true, - ); + $this->session->flash(key: 'inertia.clear_history', value: true); return $this; } @@ -116,13 +109,9 @@ public function location(string|Redirect $url): Response $url = $url->getHeader(name: 'Location')->values[0] ?? '/'; } - return new GenericResponse( - status: Status::CONFLICT, - body: '', - headers: [ - Header::LOCATION => $url, - ], - ); + return new GenericResponse(status: Status::CONFLICT, body: '', headers: [ + Header::LOCATION => $url, + ]); } return $url instanceof Redirect ? $url : new Redirect($url); diff --git a/src/Installer/InertiaInstaller.php b/src/Installer/InertiaInstaller.php index c4198d1..391dfdd 100644 --- a/src/Installer/InertiaInstaller.php +++ b/src/Installer/InertiaInstaller.php @@ -44,21 +44,18 @@ public function install(): void ); /** @var string */ - $clientPath = $this->ask( - question: 'Where is your client-side code located?', - default: to_relative_path(root_path(), src_path('Client')), - ); + $clientPath = $this->ask(question: 'Where is your client-side code located?', default: to_relative_path( + root_path(), + src_path('Client'), + )); /** @var string */ - $pagesPath = $this->ask( - question: 'Where do you want to keep your Inertia pages?', - default: to_relative_path(to_absolute_path($clientPath), to_absolute_path($clientPath, 'pages')), - ); + $pagesPath = $this->ask(question: 'Where do you want to keep your Inertia pages?', default: to_relative_path( + to_absolute_path($clientPath), + to_absolute_path($clientPath, 'pages'), + )); - $this->publish( - source: __DIR__ . '/app.view.stub', - destination: (string) path(src_path(), 'app.view.php'), - ); + $this->publish(source: __DIR__ . '/app.view.stub', destination: (string) path(src_path(), 'app.view.php')); match ($framework) { 'react' => $this->installReact($clientPath, $pagesPath), @@ -68,14 +65,11 @@ public function install(): void private function installReact(string $clientPath, string $pagesPath): void { - $this->javascript->installDependencies( - cwd: root_path(), - dependencies: [ - '@inertiajs/react', - 'react', - 'react-dom', - ], - ); + $this->javascript->installDependencies(cwd: root_path(), dependencies: [ + '@inertiajs/react', + 'react', + 'react-dom', + ]); $this->javascript->installDependencies( cwd: root_path(), dependencies: [ @@ -110,8 +104,7 @@ private function installReact(string $clientPath, string $pagesPath): void 'We have installed it for you, but you need to add it to your Vite config:', ]); - $this->console->writeWithLanguage( - contents: <<<'JS' + $this->console->writeWithLanguage(contents: <<<'JS' import react from '@vitejs/plugin-react'; // ... export default defineConfig({ @@ -120,20 +113,15 @@ private function installReact(string $clientPath, string $pagesPath): void react(), ], }); - JS, - language: new JavaScriptLanguage(), - ); + JS, language: new JavaScriptLanguage()); } private function installVue(string $clientPath, string $pagesPath): void { - $this->javascript->installDependencies( - cwd: root_path(), - dependencies: [ - '@inertiajs/vue3', - 'vue', - ], - ); + $this->javascript->installDependencies(cwd: root_path(), dependencies: [ + '@inertiajs/vue3', + 'vue', + ]); $this->javascript->installDependencies( cwd: root_path(), dependencies: [ @@ -166,8 +154,7 @@ private function installVue(string $clientPath, string $pagesPath): void 'we have installed it for you, but you need to add it to your vite config:', ]); - $this->console->writeWithLanguage( - contents: <<<'js' + $this->console->writeWithLanguage(contents: <<<'js' import vue from '@vitejs/plugin-vue'; // ... export default defineConfig({ @@ -176,8 +163,6 @@ private function installVue(string $clientPath, string $pagesPath): void vue(), ], }); - js, - language: new JavaScriptLanguage(), - ); + js, language: new JavaScriptLanguage()); } } diff --git a/src/ManifestVersionResolver.php b/src/ManifestVersionResolver.php index 8a5060f..f5cb5f2 100644 --- a/src/ManifestVersionResolver.php +++ b/src/ManifestVersionResolver.php @@ -25,10 +25,7 @@ public function resolve(Container $container): string return ''; } - $hash = hash_file( - algo: 'xxh128', - filename: $manifestPath, - ); + $hash = hash_file(algo: 'xxh128', filename: $manifestPath); if (!$hash) { return ''; diff --git a/src/Props/AlwaysProp.php b/src/Props/AlwaysProp.php index 96074e9..11a1156 100644 --- a/src/Props/AlwaysProp.php +++ b/src/Props/AlwaysProp.php @@ -9,7 +9,7 @@ use NeoIsRecursive\Inertia\Contracts\MergeableProp; use Override; -use function Tempest\invoke; +use function Tempest\Container\invoke; final class AlwaysProp implements CallableProp, MergeableProp { diff --git a/src/Props/DeferProp.php b/src/Props/DeferProp.php index 4407023..4dbb05a 100644 --- a/src/Props/DeferProp.php +++ b/src/Props/DeferProp.php @@ -12,7 +12,7 @@ use Tempest\Reflection\FunctionReflector; use Tempest\Reflection\MethodReflector; -use function Tempest\invoke; +use function Tempest\Container\invoke; final class DeferProp implements CallableProp, MergeableProp { diff --git a/src/Props/OptionalProp.php b/src/Props/OptionalProp.php index c9d2e77..01c8818 100644 --- a/src/Props/OptionalProp.php +++ b/src/Props/OptionalProp.php @@ -12,7 +12,7 @@ use Tempest\Reflection\FunctionReflector; use Tempest\Reflection\MethodReflector; -use function Tempest\invoke; +use function Tempest\Container\invoke; final class OptionalProp implements CallableProp, MergeableProp { diff --git a/src/Support/ResolveErrorProps.php b/src/Support/ResolveErrorProps.php index 8c098cf..4c09de2 100644 --- a/src/Support/ResolveErrorProps.php +++ b/src/Support/ResolveErrorProps.php @@ -4,8 +4,8 @@ namespace NeoIsRecursive\Inertia\Support; -use Tempest\Http\Session\Session; -use Tempest\Validation\Rule; +use Tempest\Http\Session\FormSession; +use Tempest\Validation\FailingRule; use Tempest\Validation\Validator; use function Tempest\Support\arr; @@ -13,20 +13,17 @@ final readonly class ResolveErrorProps { public function __construct( - private Session $session, + private FormSession $session, private Validator $validator, ) {} public function resolve(): array { - /** @var Rule[][] */ - $failingRules = $this->session->get(Session::VALIDATION_ERRORS) ?? []; + $failingRules = $this->session->getErrors(); return arr($failingRules)->map( - // @mago-expect lint:prefer-static-closure fn(array $rules): array => arr($rules)->map( - // @mago-expect lint:prefer-first-class-callable - fn(Rule $rule): string => $this->validator->getErrorMessage($rule), + fn(FailingRule $rule): string => $this->validator->getErrorMessage($rule), )->toArray(), )->toArray(); } diff --git a/src/functions.php b/src/functions.php index 98d8cf0..f923d1e 100644 --- a/src/functions.php +++ b/src/functions.php @@ -4,9 +4,8 @@ namespace NeoIsRecursive\Inertia { use NeoIsRecursive\Inertia\Http\InertiaResponse; - use NeoIsRecursive\Inertia\Inertia; - use function Tempest\get; + use function Tempest\Container\get; /** * @param string|null $component diff --git a/src/inertia.config.php b/src/inertia.config.php index 3a32390..374da79 100644 --- a/src/inertia.config.php +++ b/src/inertia.config.php @@ -7,10 +7,7 @@ use NeoIsRecursive\Inertia\Support\ResolveErrorProps; use Tempest\Auth\Authentication\Authenticator; -return new InertiaConfig( - rootView: 'app.view.php', - sharedProps: [ - 'user' => new AlwaysProp(fn(Authenticator $auth) => $auth->current()), - 'errors' => new AlwaysProp(fn(ResolveErrorProps $errors) => $errors->resolve()), - ], -); +return new InertiaConfig(rootView: 'app.view.php', sharedProps: [ + 'user' => new AlwaysProp(fn(Authenticator $auth) => $auth->current()), + 'errors' => new AlwaysProp(fn(ResolveErrorProps $errors) => $errors->resolve()), +]); diff --git a/tests/Integration/ErrorPropsTest.php b/tests/Integration/ErrorPropsTest.php index 6ea2dc3..7bb82a6 100644 --- a/tests/Integration/ErrorPropsTest.php +++ b/tests/Integration/ErrorPropsTest.php @@ -7,7 +7,6 @@ use NeoIsRecursive\Inertia\PageData; use NeoIsRecursive\Inertia\Tests\Fixtures\TestController; use NeoIsRecursive\Inertia\Tests\TestCase; -use Tempest\Http\Session\Session; use function Tempest\Router\uri; @@ -16,32 +15,33 @@ final class ErrorPropsTest extends TestCase public function test_error_props(): void { $this->http->post( - uri([TestController::class, 'testValidationErrors']), + uri([TestController::class, "testValidationErrors"]), body: [ - 'firstName' => '', - 'lastName' => '', - 'email' => 'not-an-email', - 'age' => -2, + "firstName" => "", + "lastName" => "", + "email" => "not-an-email", + "age" => -2, ], headers: [ - 'X-Inertia' => 'true', - 'X-Version' => '1.0', + "X-Inertia" => "true", + "X-Version" => "1.0", ], ); - $response = $this->http->get(uri([TestController::class, 'index']), headers: [ - 'X-Inertia' => 'true', - 'X-Version' => '1.0', - ]); + $response = $this->http->get( + uri([TestController::class, "index"]), + headers: [ + "X-Inertia" => "true", + "X-Version" => "1.0", + ], + ); /** @var PageData */ $body = $response->body; - $response->assertHasSession(Session::VALIDATION_ERRORS); - - $this->assertArrayHasKey('errors', $body->props); - $this->assertArrayHasKey('firstName', $body->props['errors']); - $this->assertCount(1, $body->props['errors']['firstName']); - $this->assertCount(2, $body->props['errors']['age']); + $this->assertArrayHasKey("errors", $body->props); + $this->assertArrayHasKey("firstName", $body->props["errors"]); + $this->assertCount(1, $body->props["errors"]["firstName"]); + $this->assertCount(2, $body->props["errors"]["age"]); } } diff --git a/tests/Integration/HistoryTest.php b/tests/Integration/HistoryTest.php index e1c89ba..3f9ad96 100644 --- a/tests/Integration/HistoryTest.php +++ b/tests/Integration/HistoryTest.php @@ -11,7 +11,7 @@ use NeoIsRecursive\Inertia\Tests\TestCase; use Tempest\Http\Session\Session; -use function Tempest\get; +use function Tempest\Container\get; use function Tempest\Router\uri; class HistoryTest extends TestCase @@ -20,20 +20,20 @@ public function test_the_history_is_not_encrypted_or_cleared_by_default(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testCanSharePropsFromAnyWhere']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - ]); + $response = $this->http->get( + uri([TestController::class, "testCanSharePropsFromAnyWhere"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + ], + ); $response->assertOk(); /** @var PageData */ $body = $response->body; - static::assertSame( - expected: 'User/Edit', - actual: $body->component, - ); + static::assertSame(expected: "User/Edit", actual: $body->component); static::assertFalse($body->encryptHistory); static::assertFalse($body->clearHistory); } @@ -42,26 +42,28 @@ public function test_the_history_can_be_encrypted(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testEncryptedHistory']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - ]); + $response = $this->http->get( + uri([TestController::class, "testEncryptedHistory"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + ], + ); $response->assertOk(); /** @var PageData */ $body = $response->body; - static::assertSame( - expected: 'User/Edit', - actual: $body->component, - ); + static::assertSame(expected: "User/Edit", actual: $body->component); static::assertTrue($body->encryptHistory); } public function test_the_history_can_be_encrypted_via_middleware(): void { - static::markTestIncomplete(message: 'This test is incomplete and needs to be fixed.'); + static::markTestIncomplete( + message: "This test is incomplete and needs to be fixed.", + ); // Route::middleware([StartSession::class, ExampleMiddleware::class, EncryptHistoryMiddleware::class])->get('/', function () { // return Inertia::render('User/Edit'); @@ -78,7 +80,9 @@ public function test_the_history_can_be_encrypted_via_middleware(): void public function test_the_history_can_be_encrypted_globally(): void { - static::markTestIncomplete(message: 'This test is incomplete and needs to be fixed.'); + static::markTestIncomplete( + message: "This test is incomplete and needs to be fixed.", + ); // Route::middleware([StartSession::class, ExampleMiddleware::class])->get('/', function () { // Config::set('inertia.history.encrypt', true); @@ -96,53 +100,60 @@ public function test_the_history_can_be_encrypted_globally(): void public function test_the_history_can_be_encrypted_globally_and_overridden(): void { - $response = $this->http->get(uri([TestController::class, 'testEncryptedHistoryWithMiddleware']), headers: [ - Header::INERTIA => 'true', - ]); + $response = $this->http->get( + uri([TestController::class, "testEncryptedHistoryWithMiddleware"]), + headers: [ + Header::INERTIA => "true", + ], + ); $response->assertOk(); /** @var PageData */ $body = $response->body; - static::assertSame( - expected: 'User/Edit', - actual: $body->component, - ); + static::assertSame(expected: "User/Edit", actual: $body->component); static::assertTrue($body->encryptHistory); } public function test_the_history_can_be_cleared(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testClearedHistory']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - ]); + $response = $this->http->get( + uri([TestController::class, "testClearedHistory"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + ], + ); $response->assertOk(); /** @var PageData */ $body = $response->body; - static::assertSame( - expected: 'User/Edit', - actual: $body->component, - ); + static::assertSame(expected: "User/Edit", actual: $body->component); static::assertTrue($body->clearHistory); } public function test_the_history_can_be_cleared_when_redirecting(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testRedirectWithClearHistory']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - ]); + $response = $this->http->get( + uri([TestController::class, "testRedirectWithClearHistory"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + ], + ); - $response->assertRedirect(uri([TestController::class, 'testCanSharePropsFromAnyWhere'])); + $response->assertRedirect( + uri([TestController::class, "testCanSharePropsFromAnyWhere"]), + ); - static::assertTrue(get(Session::class)->get(key: 'inertia.clear_history')); + static::assertTrue( + get(Session::class)->get(key: "inertia.clear_history"), + ); // $response->assertContent('
'); } diff --git a/tests/Integration/InertiaTest.php b/tests/Integration/InertiaTest.php index c5f42b5..305ed1a 100644 --- a/tests/Integration/InertiaTest.php +++ b/tests/Integration/InertiaTest.php @@ -15,7 +15,7 @@ use Tempest\Http\Responses\Redirect; use Tempest\Http\Status; -use function Tempest\get; +use function Tempest\Container\get; use function Tempest\Router\uri; final class InertiaTest extends TestCase @@ -27,11 +27,14 @@ private function createFactory(): Inertia public function test_location_response_for_inertia_requests(): void { - $this->container->singleton(Request::class, fn() => $this->createInertiaRequest(Method::GET, uri: '/')); + $this->container->singleton( + Request::class, + fn() => $this->createInertiaRequest(Method::GET, uri: "/"), + ); $factory = $this->createFactory(); - $response = $factory->location(url: 'https://inertiajs.com'); + $response = $factory->location(url: "https://inertiajs.com"); static::assertInstanceOf(Response::class, $response); static::assertSame( @@ -39,7 +42,7 @@ public function test_location_response_for_inertia_requests(): void actual: $response->status, ); static::assertSame( - expected: 'https://inertiajs.com', + expected: "https://inertiajs.com", actual: $response->getHeader(Header::LOCATION)->values[0], ); } @@ -48,25 +51,25 @@ public function test_location_response_for_non_inertia_requests(): void { $factory = $this->createFactory(); - $response = $factory->location(url: 'https://inertiajs.com'); + $response = $factory->location(url: "https://inertiajs.com"); static::assertInstanceOf(Redirect::class, $response); + static::assertSame(expected: Status::FOUND, actual: $response->status); static::assertSame( - expected: Status::FOUND, - actual: $response->status, - ); - static::assertSame( - expected: 'https://inertiajs.com', - actual: $response->getHeader(name: 'Location')->values[0], + expected: "https://inertiajs.com", + actual: $response->getHeader(name: "Location")->values[0], ); } public function test_location_response_for_inertia_requests_using_redirect_response(): void { - $this->container->singleton(Request::class, fn() => $this->createInertiaRequest(Method::GET, uri: '/')); + $this->container->singleton( + Request::class, + fn() => $this->createInertiaRequest(Method::GET, uri: "/"), + ); $factory = $this->createFactory(); - $redirect = new Redirect(to: 'https://inertiajs.com'); + $redirect = new Redirect(to: "https://inertiajs.com"); $response = $factory->location($redirect); static::assertInstanceOf(Response::class, $response); @@ -75,89 +78,76 @@ public function test_location_response_for_inertia_requests_using_redirect_respo actual: $response->status, ); static::assertSame( - expected: 'https://inertiajs.com', + expected: "https://inertiajs.com", actual: $response->getHeader(Header::LOCATION)->values[0], ); } public function test_location_response_for_non_inertia_requests_using_redirect_response(): void { - $redirect = new Redirect(to: 'https://inertiajs.com'); + $redirect = new Redirect(to: "https://inertiajs.com"); $response = $this->createFactory()->location($redirect); static::assertInstanceOf(Redirect::class, $response); + static::assertSame(expected: Status::FOUND, actual: $response->status); static::assertSame( - expected: Status::FOUND, - actual: $response->status, - ); - static::assertSame( - expected: 'https://inertiajs.com', - actual: $response->getHeader(name: 'Location')->values[0], + expected: "https://inertiajs.com", + actual: $response->getHeader(name: "Location")->values[0], ); } public function test_location_redirects_are_not_modified(): void { - $response = $this->createFactory()->location(url: '/foo'); + $response = $this->createFactory()->location(url: "/foo"); static::assertInstanceOf(Redirect::class, $response); + static::assertSame(expected: Status::FOUND, actual: $response->status); static::assertSame( - expected: Status::FOUND, - actual: $response->status, - ); - static::assertSame( - expected: '/foo', - actual: $response->getHeader(name: 'Location')->values[0], + expected: "/foo", + actual: $response->getHeader(name: "Location")->values[0], ); } public function test_location_response_for_non_inertia_requests_using_redirect_response_with_existing_session_and_request_properties(): void { - $redirect = new Redirect(to: 'https://inertiajs.com'); - $redirect->addSession( - name: 'foo', - value: 'bar', - ); + $redirect = new Redirect(to: "https://inertiajs.com"); + $redirect->addSession(name: "foo", value: "bar"); $response = $this->createFactory()->location($redirect); static::assertInstanceOf(Redirect::class, $response); + static::assertSame(expected: Status::FOUND, actual: $response->status); static::assertSame( - expected: Status::FOUND, - actual: $response->status, - ); - static::assertSame( - expected: 'https://inertiajs.com', - actual: $response->getHeader(name: 'Location')->values[0], + expected: "https://inertiajs.com", + actual: $response->getHeader(name: "Location")->values[0], ); - static::assertSame( - expected: $response, - actual: $redirect, - ); + static::assertSame(expected: $response, actual: $redirect); } public function test_returns_conflict_response_for_inertia_requests_with_different_version(): void { - $response = $this->http->get(uri([TestController::class, 'testCanSharePropsFromAnyWhere']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => 'invalid-version', - ]); + $response = $this->http->get( + uri([TestController::class, "testCanSharePropsFromAnyWhere"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => "invalid-version", + ], + ); $response->assertStatus(Status::CONFLICT); } public function test_returns_response_if_it_isnt_an_inertia_request(): void { - $response = $this->http->get(uri([TestController::class, 'nonInertiaPage'])); + $response = $this->http->get( + uri([TestController::class, "nonInertiaPage"]), + ); $response->assertOk(); - $response->assertHeaderContains( - name: 'Vary', - value: Header::INERTIA, - ); + $response->assertHeaderContains(name: "Vary", value: Header::INERTIA); static::assertSame( expected: [ - 'message' => 'This is a non-Inertia page.', + "message" => "This is a non-Inertia page.", ], actual: $response->body, ); @@ -167,25 +157,31 @@ public function test_shared_data_can_be_shared_from_anywhere(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testCanSharePropsFromAnyWhere']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - ]); + $response = $this->http->get( + uri([TestController::class, "testCanSharePropsFromAnyWhere"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + ], + ); $response->assertOk(); static::assertSame( expected: [ - 'component' => 'User/Edit', - 'props' => [ - 'user' => null, - 'errors' => [], - 'foo' => 'bar', - 'baz' => 'qux', + "component" => "User/Edit", + "props" => [ + "user" => null, + "errors" => [], + "foo" => "bar", + "baz" => "qux", ], - 'url' => uri([TestController::class, 'testCanSharePropsFromAnyWhere']), - 'version' => $version, - 'clearHistory' => false, - 'encryptHistory' => false, + "url" => uri([ + TestController::class, + "testCanSharePropsFromAnyWhere", + ]), + "version" => $version, + "clearHistory" => false, + "encryptHistory" => false, ], actual: $response->body->jsonSerialize(), ); @@ -193,15 +189,12 @@ public function test_shared_data_can_be_shared_from_anywhere(): void public function test_can_flush_shared_data(): void { - get(Inertia::class)->share( - key: 'foo', - value: 'bar', - ); + get(Inertia::class)->share(key: "foo", value: "bar"); static::assertArrayHasKey( - key: 'foo', + key: "foo", array: get(InertiaConfig::class)->sharedProps, - message: 'bar', + message: "bar", ); get(Inertia::class)->flushShared(); @@ -215,30 +208,30 @@ public function test_mergeable_props_can_be_merged(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testCanMergeProps']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - Header::PARTIAL_COMPONENT => 'test', - ]); + $response = $this->http->get( + uri([TestController::class, "testCanMergeProps"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + Header::PARTIAL_COMPONENT => "test", + ], + ); $response->assertOk(); static::assertSame( expected: [ - 'component' => 'test', - 'props' => [ - 'user' => null, - 'errors' => [], - 'foo' => 'bar', - 'baz' => 'qux', - ], - 'url' => uri([TestController::class, 'testCanMergeProps']), - 'version' => $version, - 'clearHistory' => false, - 'encryptHistory' => false, - 'mergeProps' => [ - 'foo', - 'baz', + "component" => "test", + "props" => [ + "user" => null, + "errors" => [], + "foo" => "bar", + "baz" => "qux", ], + "url" => uri([TestController::class, "testCanMergeProps"]), + "version" => $version, + "clearHistory" => false, + "encryptHistory" => false, + "mergeProps" => ["foo", "baz"], ], actual: $response->body->jsonSerialize(), ); @@ -248,29 +241,32 @@ public function test_array_helper_props_can_be_resolved(): void { $version = get(Inertia::class)->version; - $response = $this->http->get(uri([TestController::class, 'testAllSortsOfProps']), headers: [ - Header::INERTIA => 'true', - Header::VERSION => $version, - Header::PARTIAL_COMPONENT => 'User/Edit', - Header::PARTIAL_ONLY => 'optional,defer', - ]); + $response = $this->http->get( + uri([TestController::class, "testAllSortsOfProps"]), + headers: [ + Header::INERTIA => "true", + Header::VERSION => $version, + Header::PARTIAL_COMPONENT => "User/Edit", + Header::PARTIAL_ONLY => "optional,defer", + ], + ); $response->assertOk(); static::assertSame( expected: [ - 'component' => 'User/Edit', - 'props' => [ - 'user' => null, - 'errors' => [], - 'shared' => [1, 2, 3], - 'always' => ['always-1', 'always-2'], - 'optional' => ['optional-1', 'optional-2'], - 'defer' => ['defer-1', 'defer-2'], + "component" => "User/Edit", + "props" => [ + "user" => null, + "errors" => [], + "shared" => [1, 2, 3], + "always" => ["always-1", "always-2"], + "optional" => ["optional-1", "optional-2"], + "defer" => ["defer-1", "defer-2"], ], - 'url' => uri([TestController::class, 'testAllSortsOfProps']), - 'version' => $version, - 'clearHistory' => false, - 'encryptHistory' => false, + "url" => uri([TestController::class, "testAllSortsOfProps"]), + "version" => $version, + "clearHistory" => false, + "encryptHistory" => false, ], actual: $response->body->jsonSerialize(), ); diff --git a/tests/Integration/ResponseTest.php b/tests/Integration/ResponseTest.php index c8146bb..f41e7bf 100644 --- a/tests/Integration/ResponseTest.php +++ b/tests/Integration/ResponseTest.php @@ -18,21 +18,21 @@ use Tempest\View\View; use Tempest\View\ViewRenderer; -use function Tempest\get; +use function Tempest\Container\get; final class ResponseTest extends TestCase { public function test_server_response(): void { - $request = new GenericRequest(Method::GET, uri: '/user/123'); + $request = new GenericRequest(Method::GET, uri: "/user/123"); - $user = ['name' => 'Jonathan']; + $user = ["name" => "Jonathan"]; $response = new InertiaResponse( $request, - component: 'User/Edit', - props: ['user' => $user], - rootView: __DIR__ . '/../Fixtures/root.view.php', - version: '123', + component: "User/Edit", + props: ["user" => $user], + rootView: __DIR__ . "/../Fixtures/root.view.php", + version: "123", ); /** @var InertiaBaseView */ $view = $response->body; @@ -41,22 +41,13 @@ public function test_server_response(): void static::assertInstanceOf(Response::class, $response); static::assertInstanceOf(View::class, $view); + static::assertSame(expected: "User/Edit", actual: $page->component); static::assertSame( - expected: 'User/Edit', - actual: $page->component, - ); - static::assertSame( - expected: 'Jonathan', - actual: $page->props['user']['name'], - ); - static::assertSame( - expected: '/user/123', - actual: $page->url, - ); - static::assertSame( - expected: '123', - actual: $page->version, + expected: "Jonathan", + actual: $page->props["user"]["name"], ); + static::assertSame(expected: "/user/123", actual: $page->url); + static::assertSame(expected: "123", actual: $page->version); static::assertSnippetsMatch( expected: '