From 9f33944913b1583609159f4c75f727e76e4e05ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Sun, 5 Jul 2026 22:00:01 +0200 Subject: [PATCH 1/4] Switching to PHP 8.5 --- README.md | 4 +- composer.json | 14 +- composer.lock | 1069 +++++++++++++++++++++++++++---------------------- 3 files changed, 607 insertions(+), 480 deletions(-) diff --git a/README.md b/README.md index 414d53cd4..c42f37fc5 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Business logic core of the application and a REST API that provides access to ot ### Prerequisites -You need a web server with PHP (8.2+, 8.3 currently used in development) and MySQL or MariaDB database. +You need a web server with PHP (8.3+, 8.5 currently used, should also work with 8.2 but no longer tested) and MySQL or MariaDB database. We recommend installing PHP from remi repository: @@ -28,7 +28,7 @@ You may list the PHP modules thusly: ...and select the right module: ``` -# dnf module enable php:remi-8.3 +# dnf module enable php:remi-8.5 ``` If you install core-api as a package, the PHP will be installed as dependencies. diff --git a/composer.json b/composer.json index 56d9faff9..0ccad8198 100644 --- a/composer.json +++ b/composer.json @@ -22,31 +22,31 @@ }, "config": { "platform": { - "php": "8.2.0" + "php": "8.5" } }, "require": { - "php": ">=8.2", + "php": ">=8.3", "bjeavons/zxcvbn-php": "^1.4", "contributte/console": "^0.11.0", "firebase/php-jwt": "^7.0", "forxer/gravatar": "^5.0", "guzzlehttp/guzzle": "^7.10", - "eluceo/ical": "^2.7", + "eluceo/ical": "^2.16", "ext-yaml": ">=2.0", "ext-json": ">=1.7", "ext-zip": ">=1.15", "latte/latte": "^3.1", "league/commonmark": "^2.8", "nelmio/alice": "^3.17", - "nette/application": "^3.2", - "nette/bootstrap": "^3.2", + "nette/application": "^3.3", + "nette/bootstrap": "^3.3", "nette/caching": "^3.4", "nette/database": "^3.2", "nette/di": "^3.2", "nette/finder": "^3.0", - "nette/forms": "^3.2", - "nette/http": "^3.3", + "nette/forms": "^3.3", + "nette/http": "^3.4", "nette/mail": "^4.0", "nette/neon": "^3.4", "nette/robot-loader": "^4.1", diff --git a/composer.lock b/composer.lock index ac767c1ef..acb14d0f2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d7d84c794df5c9728c3f179a8bf6eab3", + "content-hash": "7d82ff187a7a3d32e06623520752b83c", "packages": [ { "name": "bjeavons/zxcvbn-php", @@ -64,23 +64,22 @@ }, { "name": "brick/math", - "version": "0.14.8", + "version": "0.18.0", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" + "reference": "82944324d1c1bdb2c2618e89978d4e2ad78d69ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", - "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", + "url": "https://api.github.com/repos/brick/math/zipball/82944324d1c1bdb2c2618e89978d4e2ad78d69ad", + "reference": "82944324d1c1bdb2c2618e89978d4e2ad78d69ad", "shasum": "" }, "require": { "php": "^8.2" }, "require-dev": { - "php-coveralls/php-coveralls": "^2.2", "phpstan/phpstan": "2.1.22", "phpunit/phpunit": "^11.5" }, @@ -112,7 +111,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.8" + "source": "https://github.com/brick/math/tree/0.18.0" }, "funding": [ { @@ -120,7 +119,7 @@ "type": "github" } ], - "time": "2026-02-10T14:33:43+00:00" + "time": "2026-06-14T18:21:03+00:00" }, { "name": "contributte/console", @@ -961,30 +960,29 @@ }, { "name": "doctrine/instantiator", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", - "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/23da848e1a2308728fe5fdddabf4be17ff9720c7", + "reference": "23da848e1a2308728fe5fdddabf4be17ff9720c7", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.4" }, "require-dev": { - "doctrine/coding-standard": "^11", + "doctrine/coding-standard": "^14", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^1.2", - "phpstan/phpstan": "^1.9.4", - "phpstan/phpstan-phpunit": "^1.3", - "phpunit/phpunit": "^9.5.27", - "vimeo/psalm": "^5.4" + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^10.5.58" }, "type": "library", "autoload": { @@ -1011,7 +1009,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + "source": "https://github.com/doctrine/instantiator/tree/2.1.0" }, "funding": [ { @@ -1027,7 +1025,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:23:10+00:00" + "time": "2026-01-05T06:47:08+00:00" }, { "name": "doctrine/lexer", @@ -1109,16 +1107,16 @@ }, { "name": "doctrine/migrations", - "version": "3.9.6", + "version": "3.9.7", "source": { "type": "git", "url": "https://github.com/doctrine/migrations.git", - "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1" + "reference": "96cb2a89b56c9efb0bac38e606dc0b0f13e650ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/migrations/zipball/ffd8355cdd8505fc650d9604f058bf62aedd80a1", - "reference": "ffd8355cdd8505fc650d9604f058bf62aedd80a1", + "url": "https://api.github.com/repos/doctrine/migrations/zipball/96cb2a89b56c9efb0bac38e606dc0b0f13e650ec", + "reference": "96cb2a89b56c9efb0bac38e606dc0b0f13e650ec", "shasum": "" }, "require": { @@ -1192,7 +1190,7 @@ ], "support": { "issues": "https://github.com/doctrine/migrations/issues", - "source": "https://github.com/doctrine/migrations/tree/3.9.6" + "source": "https://github.com/doctrine/migrations/tree/3.9.7" }, "funding": [ { @@ -1208,20 +1206,20 @@ "type": "tidelift" } ], - "time": "2026-02-11T06:46:11+00:00" + "time": "2026-04-23T19:33:20+00:00" }, { "name": "doctrine/orm", - "version": "2.20.9", + "version": "2.20.13", "source": { "type": "git", "url": "https://github.com/doctrine/orm.git", - "reference": "87f1ba74e04c8694ca00099f3c64706ebac0b114" + "reference": "f525f32e11efc60a34f5eecd88093f476c90f90e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/orm/zipball/87f1ba74e04c8694ca00099f3c64706ebac0b114", - "reference": "87f1ba74e04c8694ca00099f3c64706ebac0b114", + "url": "https://api.github.com/repos/doctrine/orm/zipball/f525f32e11efc60a34f5eecd88093f476c90f90e", + "reference": "f525f32e11efc60a34f5eecd88093f476c90f90e", "shasum": "" }, "require": { @@ -1307,22 +1305,22 @@ ], "support": { "issues": "https://github.com/doctrine/orm/issues", - "source": "https://github.com/doctrine/orm/tree/2.20.9" + "source": "https://github.com/doctrine/orm/tree/2.20.13" }, - "time": "2025-11-29T14:03:56+00:00" + "time": "2026-05-25T05:46:05+00:00" }, { "name": "doctrine/persistence", - "version": "3.4.3", + "version": "3.4.5", "source": { "type": "git", "url": "https://github.com/doctrine/persistence.git", - "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0" + "reference": "703a29d8597336fb75f42eeabcdf3f2863156ca8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/persistence/zipball/d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", - "reference": "d59e6ef7caffe6a30f4b6f9e9079a75f52c64ae0", + "url": "https://api.github.com/repos/doctrine/persistence/zipball/703a29d8597336fb75f42eeabcdf3f2863156ca8", + "reference": "703a29d8597336fb75f42eeabcdf3f2863156ca8", "shasum": "" }, "require": { @@ -1345,7 +1343,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Persistence\\": "src/Persistence" + "Doctrine\\Persistence\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1389,7 +1387,7 @@ ], "support": { "issues": "https://github.com/doctrine/persistence/issues", - "source": "https://github.com/doctrine/persistence/tree/3.4.3" + "source": "https://github.com/doctrine/persistence/tree/3.4.5" }, "funding": [ { @@ -1405,37 +1403,33 @@ "type": "tidelift" } ], - "time": "2025-10-21T15:21:39+00:00" + "time": "2026-06-13T19:29:35+00:00" }, { "name": "eluceo/ical", - "version": "2.14.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/markuspoerschke/iCal.git", - "reference": "3123533f7ff0af015da1d788476204f936d18135" + "reference": "4bdc085e14d0a213d7b387a80793320e4f45d430" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/3123533f7ff0af015da1d788476204f936d18135", - "reference": "3123533f7ff0af015da1d788476204f936d18135", + "url": "https://api.github.com/repos/markuspoerschke/iCal/zipball/4bdc085e14d0a213d7b387a80793320e4f45d430", + "reference": "4bdc085e14d0a213d7b387a80793320e4f45d430", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", - "symfony/deprecation-contracts": "^2.1 || ^3.0" - }, - "conflict": { - "php": "7.4.6" + "php": "~8.4.0 || ~8.5.0", + "symfony/deprecation-contracts": "^3.6" }, "require-dev": { - "ergebnis/composer-normalize": "^2.23.1", - "friendsofphp/php-cs-fixer": "^3.4", - "infection/infection": "^0.23 || ^0.26 || ^0.27", - "phpmd/phpmd": "^2.13", - "phpunit/phpunit": "^9.5", - "vimeo/psalm": "^4.8 || ^5.0" + "ergebnis/composer-normalize": "^2.48", + "friendsofphp/php-cs-fixer": "^3.92", + "infection/infection": "^0.32", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^6.14" }, "type": "library", "autoload": { @@ -1469,7 +1463,7 @@ "issues": "https://github.com/markuspoerschke/iCal/issues", "source": "https://github.com/markuspoerschke/iCal" }, - "time": "2024-07-11T22:33:13+00:00" + "time": "2026-01-07T21:34:08+00:00" }, { "name": "fakerphp/faker", @@ -1536,16 +1530,16 @@ }, { "name": "firebase/php-jwt", - "version": "v7.0.3", + "version": "v7.1.0", "source": { "type": "git", - "url": "https://github.com/firebase/php-jwt.git", - "reference": "28aa0694bcfdfa5e2959c394d5a1ee7a5083629e" + "url": "https://github.com/googleapis/php-jwt.git", + "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/firebase/php-jwt/zipball/28aa0694bcfdfa5e2959c394d5a1ee7a5083629e", - "reference": "28aa0694bcfdfa5e2959c394d5a1ee7a5083629e", + "url": "https://api.github.com/repos/googleapis/php-jwt/zipball/b374a5d1a4f1f67fadc2165cdb284645945e2fc0", + "reference": "b374a5d1a4f1f67fadc2165cdb284645945e2fc0", "shasum": "" }, "require": { @@ -1553,6 +1547,8 @@ }, "require-dev": { "guzzlehttp/guzzle": "^7.4", + "phpfastcache/phpfastcache": "^9.2", + "phpseclib/phpseclib": "~3.0", "phpspec/prophecy-phpunit": "^2.0", "phpunit/phpunit": "^9.5", "psr/cache": "^2.0||^3.0", @@ -1561,7 +1557,8 @@ }, "suggest": { "ext-sodium": "Support EdDSA (Ed25519) signatures", - "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present" + "paragonie/sodium_compat": "Support EdDSA (Ed25519) signatures when libsodium is not present", + "phpseclib/phpseclib": "Support PS256 (RSASSA-PSS) signatures" }, "type": "library", "autoload": { @@ -1586,16 +1583,16 @@ } ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", - "homepage": "https://github.com/firebase/php-jwt", + "homepage": "https://github.com/googleapis/php-jwt", "keywords": [ "jwt", "php" ], "support": { - "issues": "https://github.com/firebase/php-jwt/issues", - "source": "https://github.com/firebase/php-jwt/tree/v7.0.3" + "issues": "https://github.com/googleapis/php-jwt/issues", + "source": "https://github.com/googleapis/php-jwt/tree/v7.1.0" }, - "time": "2026-02-25T22:16:40+00:00" + "time": "2026-06-11T17:54:14+00:00" }, { "name": "forxer/gravatar", @@ -1781,26 +1778,26 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.12.1", + "version": "7.13.1", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425" + "reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d34627490fbc03bf5c5d7cfed81f2faa19519425", - "reference": "d34627490fbc03bf5c5d7cfed81f2faa19519425", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/55901a76dfd2006a0cc012b9e3c5b487f796478d", + "reference": "55901a76dfd2006a0cc012b9e3c5b487f796478d", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^2.5", - "guzzlehttp/psr7": "^2.12.1", + "guzzlehttp/psr7": "^2.12.3", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", - "symfony/polyfill-php80": "^1.24" + "symfony/polyfill-php80": "^1.25" }, "provide": { "psr/http-client-implementation": "1.0" @@ -1809,7 +1806,7 @@ "bamarni/composer-bin-plugin": "^1.8.2", "ext-curl": "*", "guzzle/client-integration-tests": "3.0.2", - "guzzlehttp/test-server": "^0.5.1", + "guzzlehttp/test-server": "^0.6", "php-http/message-factory": "^1.1", "phpunit/phpunit": "^8.5.52 || ^9.6.34", "psr/log": "^1.1 || ^2.0 || ^3.0" @@ -1889,7 +1886,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.12.1" + "source": "https://github.com/guzzle/guzzle/tree/7.13.1" }, "funding": [ { @@ -1905,7 +1902,7 @@ "type": "tidelift" } ], - "time": "2026-06-18T14:12:49+00:00" + "time": "2026-06-29T20:14:18+00:00" }, { "name": "guzzlehttp/promises", @@ -1993,16 +1990,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.12.1", + "version": "2.12.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7" + "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", - "reference": "172ef2f4e9824c1e058b7f30be8ae25a02c0f2b7", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/7ec62dc3f44aa218487dbed81a9bf9bc647be55d", + "reference": "7ec62dc3f44aa218487dbed81a9bf9bc647be55d", "shasum": "" }, "require": { @@ -2011,7 +2008,7 @@ "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0", "symfony/deprecation-contracts": "^2.5 || ^3.0", - "symfony/polyfill-php80": "^1.24" + "symfony/polyfill-php80": "^1.25" }, "provide": { "psr/http-factory-implementation": "1.0", @@ -2092,7 +2089,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.12.1" + "source": "https://github.com/guzzle/psr7/tree/2.12.3" }, "funding": [ { @@ -2108,20 +2105,20 @@ "type": "tidelift" } ], - "time": "2026-06-18T09:49:37+00:00" + "time": "2026-06-23T15:21:08+00:00" }, { "name": "latte/latte", - "version": "v3.1.2", + "version": "v3.1.4", "source": { "type": "git", "url": "https://github.com/nette/latte.git", - "reference": "734ab908c17b28bd75b9331debd1901bec2f23ef" + "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/latte/zipball/734ab908c17b28bd75b9331debd1901bec2f23ef", - "reference": "734ab908c17b28bd75b9331debd1901bec2f23ef", + "url": "https://api.github.com/repos/nette/latte/zipball/14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", + "reference": "14dea9fc32c0d1cf5e9a1bd59556ae8be023c2a6", "shasum": "" }, "require": { @@ -2197,9 +2194,9 @@ ], "support": { "issues": "https://github.com/nette/latte/issues", - "source": "https://github.com/nette/latte/tree/v3.1.2" + "source": "https://github.com/nette/latte/tree/v3.1.4" }, - "time": "2026-02-24T21:38:20+00:00" + "time": "2026-04-23T06:30:25+00:00" }, { "name": "league/commonmark", @@ -2547,44 +2544,47 @@ }, { "name": "nette/application", - "version": "v3.2.9", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/nette/application.git", - "reference": "11d9d6fc53d579a3516c1574c707a5de281bc0a0" + "reference": "104484c317fdb1b29baf77617ca040b97685e9bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/application/zipball/11d9d6fc53d579a3516c1574c707a5de281bc0a0", - "reference": "11d9d6fc53d579a3516c1574c707a5de281bc0a0", + "url": "https://api.github.com/repos/nette/application/zipball/104484c317fdb1b29baf77617ca040b97685e9bb", + "reference": "104484c317fdb1b29baf77617ca040b97685e9bb", "shasum": "" }, "require": { - "nette/component-model": "^3.1", - "nette/http": "^3.3.2", + "nette/component-model": "^3.2 || ^4.0", + "nette/http": "^3.4", "nette/routing": "^3.1.1", - "nette/utils": "^4.0", - "php": "8.1 - 8.5" + "nette/utils": "^4.1", + "php": "8.3 - 8.5" }, "conflict": { - "latte/latte": "<2.7.1 || >=3.0.0 <3.0.18 || >=3.2", + "latte/latte": "<3.1.4 || >=3.2", "nette/caching": "<3.2", "nette/di": "<3.2", "nette/forms": "<3.2", "nette/schema": "<1.3", - "tracy/tracy": "<2.9" + "tracy/tracy": "<2.12" }, "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", - "latte/latte": "^2.10.2 || ^3.0.18", + "latte/latte": "^3.1.4", "mockery/mockery": "^1.6@stable", + "nette/caching": "^3.2", "nette/di": "^3.2", "nette/forms": "^3.2", + "nette/phpstan-rules": "^1.0", "nette/robot-loader": "^4.0", "nette/security": "^3.2", - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.9" + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.2@stable", + "tracy/tracy": "^2.12" }, "suggest": { "latte/latte": "Allows using Latte in templates", @@ -2593,7 +2593,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -2636,46 +2636,52 @@ ], "support": { "issues": "https://github.com/nette/application/issues", - "source": "https://github.com/nette/application/tree/v3.2.9" + "source": "https://github.com/nette/application/tree/v3.3.0" }, - "time": "2025-12-19T11:39:00+00:00" + "time": "2026-06-29T19:05:48+00:00" }, { "name": "nette/bootstrap", - "version": "v3.2.7", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/nette/bootstrap.git", - "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439" + "reference": "3c8cbf8383b6df153bfb848a3c311ce42261a336" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/bootstrap/zipball/10fdb1cb05497da39396f2ce1785cea67c8aa439", - "reference": "10fdb1cb05497da39396f2ce1785cea67c8aa439", + "url": "https://api.github.com/repos/nette/bootstrap/zipball/3c8cbf8383b6df153bfb848a3c311ce42261a336", + "reference": "3c8cbf8383b6df153bfb848a3c311ce42261a336", "shasum": "" }, "require": { - "nette/di": "^3.1", - "nette/utils": "^3.2.1 || ^4.0", - "php": "8.0 - 8.5" + "nette/di": "^3.2", + "nette/utils": "^4.1", + "php": "8.3 - 8.5" }, "conflict": { + "nette/caching": "<3.3", + "nette/mail": "<4.1.2", "tracy/tracy": "<2.6" }, "require-dev": { - "latte/latte": "^2.8 || ^3.0", - "nette/application": "^3.1", - "nette/caching": "^3.0", - "nette/database": "^3.0", - "nette/forms": "^3.0", - "nette/http": "^3.0", - "nette/mail": "^3.0 || ^4.0", - "nette/robot-loader": "^3.0 || ^4.0", + "latte/latte": "^3.0", + "nette/application": "^3.2", + "nette/assets": "^1.0", + "nette/caching": "^3.3", + "nette/database": "^3.2", + "nette/forms": "^3.2", + "nette/http": "^3.2", + "nette/mail": "^4.1", + "nette/neon": "^3.4", + "nette/phpstan-rules": "^1.0", + "nette/robot-loader": "^4.0", "nette/safe-stream": "^2.2", - "nette/security": "^3.0", - "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.9" + "nette/security": "^3.2", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.2@stable", + "tracy/tracy": "^2.12" }, "suggest": { "nette/robot-loader": "to use Configurator::createRobotLoader()", @@ -2684,7 +2690,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -2720,22 +2726,22 @@ ], "support": { "issues": "https://github.com/nette/bootstrap/issues", - "source": "https://github.com/nette/bootstrap/tree/v3.2.7" + "source": "https://github.com/nette/bootstrap/tree/v3.3.0" }, - "time": "2025-08-01T02:02:03+00:00" + "time": "2026-06-21T22:20:56+00:00" }, { "name": "nette/caching", - "version": "v3.4.1", + "version": "v3.4.2", "source": { "type": "git", "url": "https://github.com/nette/caching.git", - "reference": "7133d653156b3b9fac2f6f0b5ba35fa020a94e8c" + "reference": "31f4bc6b366e6896998bd4538b26fa88a627bf2b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/caching/zipball/7133d653156b3b9fac2f6f0b5ba35fa020a94e8c", - "reference": "7133d653156b3b9fac2f6f0b5ba35fa020a94e8c", + "url": "https://api.github.com/repos/nette/caching/zipball/31f4bc6b366e6896998bd4538b26fa88a627bf2b", + "reference": "31f4bc6b366e6896998bd4538b26fa88a627bf2b", "shasum": "" }, "require": { @@ -2799,37 +2805,39 @@ ], "support": { "issues": "https://github.com/nette/caching/issues", - "source": "https://github.com/nette/caching/tree/v3.4.1" + "source": "https://github.com/nette/caching/tree/v3.4.2" }, - "time": "2026-02-25T23:23:41+00:00" + "time": "2026-05-12T01:08:42+00:00" }, { "name": "nette/component-model", - "version": "v3.1.3", + "version": "v4.0.1", "source": { "type": "git", "url": "https://github.com/nette/component-model.git", - "reference": "0d100ba05279a1f4b20acecaa617027fbda8ecb2" + "reference": "b4e82e1a3a7ca6f66ce766704aa2e148de277276" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/component-model/zipball/0d100ba05279a1f4b20acecaa617027fbda8ecb2", - "reference": "0d100ba05279a1f4b20acecaa617027fbda8ecb2", + "url": "https://api.github.com/repos/nette/component-model/zipball/b4e82e1a3a7ca6f66ce766704aa2e148de277276", + "reference": "b4e82e1a3a7ca6f66ce766704aa2e148de277276", "shasum": "" }, "require": { - "nette/utils": "^4.0", - "php": "8.1 - 8.5" + "nette/utils": "^4.1", + "php": "8.3 - 8.5" }, "require-dev": { - "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.9" + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.12" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2864,22 +2872,22 @@ ], "support": { "issues": "https://github.com/nette/component-model/issues", - "source": "https://github.com/nette/component-model/tree/v3.1.3" + "source": "https://github.com/nette/component-model/tree/v4.0.1" }, - "time": "2025-11-22T18:56:33+00:00" + "time": "2026-06-21T23:31:36+00:00" }, { "name": "nette/database", - "version": "v3.2.8", + "version": "v3.2.9", "source": { "type": "git", "url": "https://github.com/nette/database.git", - "reference": "1a84d3e61aa33461a3d6415235b25a7cd8b3f442" + "reference": "6fe51398fcfc7719f64b7063f99886b438527755" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/database/zipball/1a84d3e61aa33461a3d6415235b25a7cd8b3f442", - "reference": "1a84d3e61aa33461a3d6415235b25a7cd8b3f442", + "url": "https://api.github.com/repos/nette/database/zipball/6fe51398fcfc7719f64b7063f99886b438527755", + "reference": "6fe51398fcfc7719f64b7063f99886b438527755", "shasum": "" }, "require": { @@ -2892,8 +2900,10 @@ "jetbrains/phpstorm-attributes": "^1.2", "mockery/mockery": "^1.6@stable", "nette/di": "^3.1", - "nette/tester": "^2.5", - "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@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -2942,28 +2952,28 @@ ], "support": { "issues": "https://github.com/nette/database/issues", - "source": "https://github.com/nette/database/tree/v3.2.8" + "source": "https://github.com/nette/database/tree/v3.2.9" }, - "time": "2025-10-30T22:06:23+00:00" + "time": "2026-04-22T05:48:11+00:00" }, { "name": "nette/di", - "version": "v3.2.5", + "version": "v3.2.6", "source": { "type": "git", "url": "https://github.com/nette/di.git", - "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f" + "reference": "481ca2553e792daffa7fcf0ed43f705d80603fa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/di/zipball/5708c328ce7658a73c96b14dd6da7b8b27bf220f", - "reference": "5708c328ce7658a73c96b14dd6da7b8b27bf220f", + "url": "https://api.github.com/repos/nette/di/zipball/481ca2553e792daffa7fcf0ed43f705d80603fa4", + "reference": "481ca2553e792daffa7fcf0ed43f705d80603fa4", "shasum": "" }, "require": { "ext-ctype": "*", "ext-tokenizer": "*", - "nette/neon": "^3.3", + "nette/neon": "^3.4", "nette/php-generator": "^4.1.6", "nette/robot-loader": "^4.0", "nette/schema": "^1.2.5", @@ -2971,8 +2981,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@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -3018,9 +3030,9 @@ ], "support": { "issues": "https://github.com/nette/di/issues", - "source": "https://github.com/nette/di/tree/v3.2.5" + "source": "https://github.com/nette/di/tree/v3.2.6" }, - "time": "2025-08-14T22:59:46+00:00" + "time": "2026-05-06T02:17:57+00:00" }, { "name": "nette/finder", @@ -3078,34 +3090,36 @@ }, { "name": "nette/forms", - "version": "v3.2.8", + "version": "v3.3.0", "source": { "type": "git", "url": "https://github.com/nette/forms.git", - "reference": "3bbf691ea0eb50d9594c2109d9252f267092b91f" + "reference": "90aac9e6a55a71a76aaead65bca1129acb41ec84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/forms/zipball/3bbf691ea0eb50d9594c2109d9252f267092b91f", - "reference": "3bbf691ea0eb50d9594c2109d9252f267092b91f", + "url": "https://api.github.com/repos/nette/forms/zipball/90aac9e6a55a71a76aaead65bca1129acb41ec84", + "reference": "90aac9e6a55a71a76aaead65bca1129acb41ec84", "shasum": "" }, "require": { - "nette/component-model": "^3.1", - "nette/http": "^3.3", - "nette/utils": "^4.0.4", - "php": "8.1 - 8.5" + "nette/component-model": "^3.2 || ^4.0", + "nette/http": "^3.4", + "nette/utils": "^4.1", + "php": "8.3 - 8.5" }, "conflict": { - "latte/latte": ">=3.0.0 <3.0.12 || >=3.2" + "latte/latte": "<3.1.4 || >=3.2" }, "require-dev": { - "latte/latte": "^2.10.2 || ^3.0.12", - "nette/application": "^3.0", - "nette/di": "^3.0", - "nette/tester": "^2.5.2", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.9" + "latte/latte": "^3.1.4", + "nette/application": "^3.2", + "nette/di": "^3.2", + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1@stable", + "tracy/tracy": "^2.12" }, "suggest": { "ext-intl": "to use date/time controls" @@ -3113,7 +3127,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -3152,38 +3166,40 @@ ], "support": { "issues": "https://github.com/nette/forms/issues", - "source": "https://github.com/nette/forms/tree/v3.2.8" + "source": "https://github.com/nette/forms/tree/v3.3.0" }, - "time": "2025-11-22T19:36:34+00:00" + "time": "2026-06-28T12:32:44+00:00" }, { "name": "nette/http", - "version": "v3.3.3", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/nette/http.git", - "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d" + "reference": "de5988d8802e76d9bda85fe5a871d29c794684f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/http/zipball/c557f21c8cedd621dbfd7990752b1d55ef353f1d", - "reference": "c557f21c8cedd621dbfd7990752b1d55ef353f1d", + "url": "https://api.github.com/repos/nette/http/zipball/de5988d8802e76d9bda85fe5a871d29c794684f4", + "reference": "de5988d8802e76d9bda85fe5a871d29c794684f4", "shasum": "" }, "require": { - "nette/utils": "^4.0.4", - "php": "8.1 - 8.5" + "nette/utils": "^4.1", + "php": "8.3 - 8.5" }, "conflict": { "nette/di": "<3.0.3", "nette/schema": "<1.2" }, "require-dev": { - "nette/di": "^3.0", - "nette/security": "^3.0", - "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.8" + "nette/di": "^3.2", + "nette/phpstan-rules": "^1.0", + "nette/security": "^3.2", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.2@stable", + "tracy/tracy": "^2.12" }, "suggest": { "ext-fileinfo": "to detect MIME type of uploaded files by Nette\\Http\\FileUpload", @@ -3194,7 +3210,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -3236,43 +3252,46 @@ ], "support": { "issues": "https://github.com/nette/http/issues", - "source": "https://github.com/nette/http/tree/v3.3.3" + "source": "https://github.com/nette/http/tree/v3.4.0" }, - "time": "2025-10-30T22:32:24+00:00" + "time": "2026-06-13T01:04:19+00:00" }, { "name": "nette/mail", - "version": "v4.0.4", + "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/nette/mail.git", - "reference": "5f16f76ed14a32f34580811d1a07ac357352bbc4" + "reference": "c4ffac25187b1212fb9014341ecf96ed2fd8c4fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/mail/zipball/5f16f76ed14a32f34580811d1a07ac357352bbc4", - "reference": "5f16f76ed14a32f34580811d1a07ac357352bbc4", + "url": "https://api.github.com/repos/nette/mail/zipball/c4ffac25187b1212fb9014341ecf96ed2fd8c4fc", + "reference": "c4ffac25187b1212fb9014341ecf96ed2fd8c4fc", "shasum": "" }, "require": { "ext-iconv": "*", - "nette/utils": "^4.0", - "php": "8.0 - 8.5" + "nette/utils": "^4.1", + "php": "8.2 - 8.5" }, "require-dev": { "nette/di": "^3.1 || ^4.0", - "nette/tester": "^2.4", - "phpstan/phpstan-nette": "^2.0@stable", - "tracy/tracy": "^2.8" + "nette/phpstan-rules": "^1.0", + "nette/tester": "^2.6", + "phpstan/extension-installer": "^1.4@stable", + "phpstan/phpstan": "^2.1.40@stable", + "tracy/tracy": "^2.11" }, "suggest": { + "ext-dom": "to use Nette\\Mail\\CssInliner", "ext-fileinfo": "to detect type of attached files", "ext-openssl": "to use Nette\\Mail\\DkimSigner" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3310,22 +3329,22 @@ ], "support": { "issues": "https://github.com/nette/mail/issues", - "source": "https://github.com/nette/mail/tree/v4.0.4" + "source": "https://github.com/nette/mail/tree/v4.1.2" }, - "time": "2025-08-01T02:09:42+00:00" + "time": "2026-05-19T18:23:42+00:00" }, { "name": "nette/neon", - "version": "v3.4.7", + "version": "v3.4.8", "source": { "type": "git", "url": "https://github.com/nette/neon.git", - "reference": "cc96bf5264d721d0c102bb976272d3d001a23e65" + "reference": "9009f99ce1396b366a88ca16c90177148352b7d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/cc96bf5264d721d0c102bb976272d3d001a23e65", - "reference": "cc96bf5264d721d0c102bb976272d3d001a23e65", + "url": "https://api.github.com/repos/nette/neon/zipball/9009f99ce1396b366a88ca16c90177148352b7d3", + "reference": "9009f99ce1396b366a88ca16c90177148352b7d3", "shasum": "" }, "require": { @@ -3381,9 +3400,9 @@ ], "support": { "issues": "https://github.com/nette/neon/issues", - "source": "https://github.com/nette/neon/tree/v3.4.7" + "source": "https://github.com/nette/neon/tree/v3.4.8" }, - "time": "2026-01-04T08:39:50+00:00" + "time": "2026-05-11T21:34:00+00:00" }, { "name": "nette/php-generator", @@ -3736,16 +3755,16 @@ }, { "name": "nette/security", - "version": "v3.2.2", + "version": "v3.2.5", "source": { "type": "git", "url": "https://github.com/nette/security.git", - "reference": "beca6757457281ebc9428743bec7960809f40d49" + "reference": "50ce3c4b8edd27cb134237cac3af514a84331524" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/security/zipball/beca6757457281ebc9428743bec7960809f40d49", - "reference": "beca6757457281ebc9428743bec7960809f40d49", + "url": "https://api.github.com/repos/nette/security/zipball/50ce3c4b8edd27cb134237cac3af514a84331524", + "reference": "50ce3c4b8edd27cb134237cac3af514a84331524", "shasum": "" }, "require": { @@ -3760,8 +3779,10 @@ "mockery/mockery": "^1.6@stable", "nette/di": "^3.1", "nette/http": "^3.2", - "nette/tester": "^2.5", - "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@stable", "tracy/tracy": "^2.9" }, "type": "library", @@ -3804,22 +3825,22 @@ ], "support": { "issues": "https://github.com/nette/security/issues", - "source": "https://github.com/nette/security/tree/v3.2.2" + "source": "https://github.com/nette/security/tree/v3.2.5" }, - "time": "2025-08-01T02:15:08+00:00" + "time": "2026-06-15T05:40:46+00:00" }, { "name": "nette/utils", - "version": "v4.1.3", + "version": "v4.1.4", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" + "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", - "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", + "url": "https://api.github.com/repos/nette/utils/zipball/7da6c396d7ebe142bc857c20479d5e70a5e1aac7", + "reference": "7da6c396d7ebe142bc857c20479d5e70a5e1aac7", "shasum": "" }, "require": { @@ -3895,9 +3916,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.3" + "source": "https://github.com/nette/utils/tree/v4.1.4" }, - "time": "2026-02-13T03:05:33+00:00" + "time": "2026-05-11T20:49:54+00:00" }, { "name": "nettrine/annotations", @@ -4355,20 +4376,19 @@ }, { "name": "nikic/php-parser", - "version": "v5.7.0", + "version": "v5.8.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/044a6a392ff8ad0d61f14370a5fbbd0a0107152f", + "reference": "044a6a392ff8ad0d61f14370a5fbbd0a0107152f", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-json": "*", "ext-tokenizer": "*", "php": ">=7.4" @@ -4407,9 +4427,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.8.0" }, - "time": "2025-12-06T11:56:16+00:00" + "time": "2026-07-04T14:30:18+00:00" }, { "name": "phpstan/phpdoc-parser", @@ -4767,16 +4787,16 @@ }, { "name": "psr/http-message", - "version": "1.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", - "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { @@ -4785,7 +4805,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -4800,7 +4820,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4814,9 +4834,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/1.1" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2023-04-04T09:50:52+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -4870,16 +4890,16 @@ }, { "name": "radebatz/type-info-extras", - "version": "1.0.6", + "version": "1.0.7", "source": { "type": "git", "url": "https://github.com/DerManoMann/type-info-extras.git", - "reference": "577ac42f3a819b6c0b94821df0c40575811e0c1b" + "reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DerManoMann/type-info-extras/zipball/577ac42f3a819b6c0b94821df0c40575811e0c1b", - "reference": "577ac42f3a819b6c0b94821df0c40575811e0c1b", + "url": "https://api.github.com/repos/DerManoMann/type-info-extras/zipball/95a524a74a61648b44e355cb33d38db4b17ef5ce", + "reference": "95a524a74a61648b44e355cb33d38db4b17ef5ce", "shasum": "" }, "require": { @@ -4926,9 +4946,9 @@ ], "support": { "issues": "https://github.com/DerManoMann/type-info-extras/issues", - "source": "https://github.com/DerManoMann/type-info-extras/tree/1.0.6" + "source": "https://github.com/DerManoMann/type-info-extras/tree/1.0.7" }, - "time": "2026-02-15T21:52:16+00:00" + "time": "2026-03-06T22:40:29+00:00" }, { "name": "ralouphie/getallheaders", @@ -5052,20 +5072,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.2", + "version": "4.9.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8429c78ca35a09f27565311b98101e2826affde0" + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", - "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/1df15849d00943a67d677dc9cfd80795f038c9f8", + "reference": "1df15849d00943a67d677dc9cfd80795f038c9f8", "shasum": "" }, "require": { - "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": ">=0.8.16 <=0.18", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -5124,9 +5144,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.2" + "source": "https://github.com/ramsey/uuid/tree/4.9.3" }, - "time": "2025-12-14T04:43:48+00:00" + "time": "2026-06-18T03:57:49+00:00" }, { "name": "ramsey/uuid-doctrine", @@ -5214,27 +5234,27 @@ }, { "name": "sebastian/comparator", - "version": "6.3.3", + "version": "8.3.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9" + "reference": "c025fc7604afab3f195fab7cdaf72327331af241" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", - "reference": "2c95e1e86cb8dd41beb8d502057d1081ccc8eca9", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c025fc7604afab3f195fab7cdaf72327331af241", + "reference": "c025fc7604afab3f195fab7cdaf72327331af241", "shasum": "" }, "require": { "ext-dom": "*", "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" + "php": ">=8.4", + "sebastian/diff": "^9.0", + "sebastian/exporter": "^8.1.0" }, "require-dev": { - "phpunit/phpunit": "^11.4" + "phpunit/phpunit": "^13.2" }, "suggest": { "ext-bcmath": "For comparing BcMath\\Number objects" @@ -5242,7 +5262,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "8.3-dev" } }, "autoload": { @@ -5282,7 +5302,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.3" + "source": "https://github.com/sebastianbergmann/comparator/tree/8.3.0" }, "funding": [ { @@ -5302,33 +5322,33 @@ "type": "tidelift" } ], - "time": "2026-01-24T09:26:40+00:00" + "time": "2026-06-05T03:06:45+00:00" }, { "name": "sebastian/diff", - "version": "6.0.2", + "version": "9.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544" + "reference": "a3fb6a298a265ff487a91bbea46e03cd01dbb226" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/b4ccd857127db5d41a5b676f24b51371d76d8544", - "reference": "b4ccd857127db5d41a5b676f24b51371d76d8544", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/a3fb6a298a265ff487a91bbea46e03cd01dbb226", + "reference": "a3fb6a298a265ff487a91bbea46e03cd01dbb226", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" + "phpunit/phpunit": "^13.2", + "symfony/process": "^7.4.13" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "9.0-dev" } }, "autoload": { @@ -5361,42 +5381,54 @@ "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.2" + "source": "https://github.com/sebastianbergmann/diff/tree/9.0.0" }, "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": "2024-07-03T04:53:05+00:00" + "time": "2026-06-05T03:04:51+00:00" }, { "name": "sebastian/exporter", - "version": "6.3.2", + "version": "8.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74" + "reference": "c0d29a945f8cf82f300a05e69874508e307ca4c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/70a298763b40b213ec087c51c739efcaa90bcd74", - "reference": "70a298763b40b213ec087c51c739efcaa90bcd74", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c0d29a945f8cf82f300a05e69874508e307ca4c6", + "reference": "c0d29a945f8cf82f300a05e69874508e307ca4c6", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" + "php": ">=8.4", + "sebastian/recursion-context": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^13.1.10" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.3-dev" + "dev-main": "8.1-dev" } }, "autoload": { @@ -5439,7 +5471,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.2" + "source": "https://github.com/sebastianbergmann/exporter/tree/8.1.0" }, "funding": [ { @@ -5459,32 +5491,32 @@ "type": "tidelift" } ], - "time": "2025-09-24T06:12:51+00:00" + "time": "2026-05-21T11:50:56+00:00" }, { "name": "sebastian/recursion-context", - "version": "6.0.3", + "version": "8.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc" + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/f6458abbf32a6c8174f8f26261475dc133b3d9dc", - "reference": "f6458abbf32a6c8174f8f26261475dc133b3d9dc", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/74c5af21f6a5833e91767ca068c4d3dfec15317e", + "reference": "74c5af21f6a5833e91767ca068c4d3dfec15317e", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "phpunit/phpunit": "^11.3" + "phpunit/phpunit": "^13.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-main": "8.0-dev" } }, "autoload": { @@ -5515,7 +5547,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.3" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/8.0.0" }, "funding": [ { @@ -5535,20 +5567,20 @@ "type": "tidelift" } ], - "time": "2025-08-13T04:42:22+00:00" + "time": "2026-02-06T04:51:28+00:00" }, { "name": "symfony/cache", - "version": "v7.4.13", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673" + "reference": "9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/4c09e18a92cce126cc0d1155825279fca8cd0673", - "reference": "4c09e18a92cce126cc0d1155825279fca8cd0673", + "url": "https://api.github.com/repos/symfony/cache/zipball/9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a", + "reference": "9adfcb2a7fc3924473b09f5a0b058dcc2cc7be9a", "shasum": "" }, "require": { @@ -5619,7 +5651,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v7.4.13" + "source": "https://github.com/symfony/cache/tree/v7.4.14" }, "funding": [ { @@ -5639,20 +5671,20 @@ "type": "tidelift" } ], - "time": "2026-05-24T08:43:14+00:00" + "time": "2026-06-17T14:44:48+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "225e8a254166bd3442e370c6f50145465db63831" + "reference": "9789738bc19af1106dc54d6afba9a0b467516cf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/225e8a254166bd3442e370c6f50145465db63831", - "reference": "225e8a254166bd3442e370c6f50145465db63831", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/9789738bc19af1106dc54d6afba9a0b467516cf2", + "reference": "9789738bc19af1106dc54d6afba9a0b467516cf2", "shasum": "" }, "require": { @@ -5699,7 +5731,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.7.1" }, "funding": [ { @@ -5719,20 +5751,20 @@ "type": "tidelift" } ], - "time": "2026-05-05T15:33:14+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/console", - "version": "v7.4.6", + "version": "v7.4.14", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "6d643a93b47398599124022eb24d97c153c12f27" + "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/6d643a93b47398599124022eb24d97c153c12f27", - "reference": "6d643a93b47398599124022eb24d97c153c12f27", + "url": "https://api.github.com/repos/symfony/console/zipball/92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", + "reference": "92f58bc4bf97a92ed1b9f367f0cd44f20bde0e87", "shasum": "" }, "require": { @@ -5797,7 +5829,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.6" + "source": "https://github.com/symfony/console/tree/v7.4.14" }, "funding": [ { @@ -5817,7 +5849,7 @@ "type": "tidelift" } ], - "time": "2026-02-25T17:02:47+00:00" + "time": "2026-06-16T11:50:14+00:00" }, { "name": "symfony/deprecation-contracts", @@ -5892,23 +5924,23 @@ }, { "name": "symfony/finder", - "version": "v7.4.6", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf" + "reference": "e2989e762c70f9490fa3a00a0ac0fae5aa97a531" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8655bf1076b7a3a346cb11413ffdabff50c7ffcf", - "reference": "8655bf1076b7a3a346cb11413ffdabff50c7ffcf", + "url": "https://api.github.com/repos/symfony/finder/zipball/e2989e762c70f9490fa3a00a0ac0fae5aa97a531", + "reference": "e2989e762c70f9490fa3a00a0ac0fae5aa97a531", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4.1" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -5936,7 +5968,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.6" + "source": "https://github.com/symfony/finder/tree/v8.1.1" }, "funding": [ { @@ -5956,7 +5988,7 @@ "type": "tidelift" } ], - "time": "2026-01-29T09:40:50+00:00" + "time": "2026-06-27T09:05:56+00:00" }, { "name": "symfony/polyfill-ctype", @@ -6041,18 +6073,105 @@ ], "time": "2026-04-10T16:19:22+00:00" }, + { + "name": "symfony/polyfill-deepclone", + "version": "v1.40.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-deepclone.git", + "reference": "dca4ccba5f360070b574414dce4c1e7a559844fa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-deepclone/zipball/dca4ccba5f360070b574414dce4c1e7a559844fa", + "reference": "dca4ccba5f360070b574414dce4c1e7a559844fa", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "provide": { + "ext-deepclone": "*" + }, + "suggest": { + "ext-deepclone": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\DeepClone\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the deepclone extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "deepclone", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-deepclone/tree/v1.40.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-06-12T07:27:17+00:00" + }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.33.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70" + "reference": "e9247d281d694a5120554d9afaf54e070e88a603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70", - "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e9247d281d694a5120554d9afaf54e070e88a603", + "reference": "e9247d281d694a5120554d9afaf54e070e88a603", "shasum": "" }, "require": { @@ -6101,7 +6220,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.38.1" }, "funding": [ { @@ -6121,20 +6240,20 @@ "type": "tidelift" } ], - "time": "2025-06-27T09:58:17+00:00" + "time": "2026-05-26T05:58:03+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.33.0", + "version": "v1.38.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/2d446c214bdbe5b71bde5011b060a05fece3ae6b", + "reference": "2d446c214bdbe5b71bde5011b060a05fece3ae6b", "shasum": "" }, "require": { @@ -6186,7 +6305,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.38.0" }, "funding": [ { @@ -6206,20 +6325,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-05-25T13:48:31+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.33.0", + "version": "v1.38.2", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", - "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", + "reference": "d3d318bad5e7a1bfbd026009c8bfb8d8f99ae6b6", "shasum": "" }, "require": { @@ -6271,7 +6390,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.2" }, "funding": [ { @@ -6291,7 +6410,7 @@ "type": "tidelift" } ], - "time": "2024-12-23T08:48:59+00:00" + "time": "2026-05-27T06:59:30+00:00" }, { "name": "symfony/polyfill-php72", @@ -6444,16 +6563,16 @@ }, { "name": "symfony/polyfill-php84", - "version": "v1.33.0", + "version": "v1.38.1", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "d8ced4d875142b6a7426000426b8abc631d6b191" + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191", - "reference": "d8ced4d875142b6a7426000426b8abc631d6b191", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", + "reference": "f4e1dfaee5b74aba5964fe1fd4dfc7ba5e3085fa", "shasum": "" }, "require": { @@ -6500,7 +6619,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.38.1" }, "funding": [ { @@ -6520,20 +6639,20 @@ "type": "tidelift" } ], - "time": "2025-06-24T13:30:11+00:00" + "time": "2026-05-26T12:51:13+00:00" }, { "name": "symfony/process", - "version": "v7.4.5", + "version": "v7.4.13", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "608476f4604102976d687c483ac63a79ba18cc97" + "reference": "f5804be144caceb570f6747519999636b664f24c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", - "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "url": "https://api.github.com/repos/symfony/process/zipball/f5804be144caceb570f6747519999636b664f24c", + "reference": "f5804be144caceb570f6747519999636b664f24c", "shasum": "" }, "require": { @@ -6565,7 +6684,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.5" + "source": "https://github.com/symfony/process/tree/v7.4.13" }, "funding": [ { @@ -6585,29 +6704,29 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-05-23T16:05:06+00:00" }, { "name": "symfony/property-access", - "version": "v7.4.4", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" + "reference": "9261ef060f26cc7b728f67f141ba19b98a6209a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", - "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "url": "https://api.github.com/repos/symfony/property-access/zipball/9261ef060f26cc7b728f67f141ba19b98a6209a9", + "reference": "9261ef060f26cc7b728f67f141ba19b98a6209a9", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" + "php": ">=8.4.1", + "symfony/property-info": "^7.4.4|^8.0.4" }, "require-dev": { - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6646,7 +6765,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.4.4" + "source": "https://github.com/symfony/property-access/tree/v8.1.0" }, "funding": [ { @@ -6666,41 +6785,37 @@ "type": "tidelift" } ], - "time": "2026-01-05T08:47:25+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { "name": "symfony/property-info", - "version": "v7.4.6", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "6396b28f44d7c28b209a1bd73acf0dd985a0a4ef" + "reference": "4721e8c56d0cd2378e0ef9a9899f810008b859f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/6396b28f44d7c28b209a1bd73acf0dd985a0a4ef", - "reference": "6396b28f44d7c28b209a1bd73acf0dd985a0a4ef", + "url": "https://api.github.com/repos/symfony/property-info/zipball/4721e8c56d0cd2378e0ef9a9899f810008b859f7", + "reference": "4721e8c56d0cd2378e0ef9a9899f810008b859f7", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0|^8.0", - "symfony/type-info": "~7.3.10|^7.4.4|^8.0.4" + "php": ">=8.4.1", + "symfony/string": "^7.4|^8.0", + "symfony/type-info": "^7.4.7|^8.0.7" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2|>=7", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/serializer": "<6.4" + "phpdocumentor/type-resolver": "<1.5.1" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2|^6.0", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0" + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6736,7 +6851,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.4.6" + "source": "https://github.com/symfony/property-info/tree/v8.1.0" }, "funding": [ { @@ -6756,20 +6871,20 @@ "type": "tidelift" } ], - "time": "2026-02-13T11:51:31+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.7.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a" + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d25d82433a80eba6aa0e6c24b61d7370d99e444a", - "reference": "d25d82433a80eba6aa0e6c24b61d7370d99e444a", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/c0a284bab1ed8aa0417e3d69250ab437739563a0", + "reference": "c0a284bab1ed8aa0417e3d69250ab437739563a0", "shasum": "" }, "require": { @@ -6823,7 +6938,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.7.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.1" }, "funding": [ { @@ -6843,24 +6958,24 @@ "type": "tidelift" } ], - "time": "2026-03-28T09:44:51+00:00" + "time": "2026-06-16T09:55:08+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.4.0", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "8a24af0a2e8a872fb745047180649b8418303084" + "reference": "21c07b026905d596e8379caeb115d87aa479499d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/8a24af0a2e8a872fb745047180649b8418303084", - "reference": "8a24af0a2e8a872fb745047180649b8418303084", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/21c07b026905d596e8379caeb115d87aa479499d", + "reference": "21c07b026905d596e8379caeb115d87aa479499d", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4.1", "symfony/service-contracts": "^2.5|^3" }, "type": "library", @@ -6889,7 +7004,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.4.0" + "source": "https://github.com/symfony/stopwatch/tree/v8.1.0" }, "funding": [ { @@ -6909,39 +7024,38 @@ "type": "tidelift" } ], - "time": "2025-08-04T07:05:15+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { "name": "symfony/string", - "version": "v7.4.6", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "9f209231affa85aa930a5e46e6eb03381424b30b" + "reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b", - "reference": "9f209231affa85aa930a5e46e6eb03381424b30b", + "url": "https://api.github.com/repos/symfony/string/zipball/afd5944f4005862d961efb85c8bbd5c523c4e3c9", + "reference": "afd5944f4005862d961efb85c8bbd5c523c4e3c9", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.33", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4.1", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -6980,7 +7094,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.6" + "source": "https://github.com/symfony/string/tree/v8.1.0" }, "funding": [ { @@ -7000,26 +7114,25 @@ "type": "tidelift" } ], - "time": "2026-02-09T09:33:46+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { "name": "symfony/type-info", - "version": "v7.4.6", + "version": "v8.1.0", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "4855ceea609b2c09e48ff76e12a97a3955531735" + "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/4855ceea609b2c09e48ff76e12a97a3955531735", - "reference": "4855ceea609b2c09e48ff76e12a97a3955531735", + "url": "https://api.github.com/repos/symfony/type-info/zipball/9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7", + "reference": "9f24df8a79781b9b9f030fea7dfd2f3bd1e7e7e7", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.4.1", + "psr/container": "^1.1|^2.0" }, "conflict": { "phpstan/phpdoc-parser": "<1.30" @@ -7063,7 +7176,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.4.6" + "source": "https://github.com/symfony/type-info/tree/v8.1.0" }, "funding": [ { @@ -7083,30 +7196,31 @@ "type": "tidelift" } ], - "time": "2026-02-17T14:00:31+00:00" + "time": "2026-05-29T05:06:50+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.4.9", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701" + "reference": "75b74315b4e4be40e5534cf9c5cc30dd0907ed71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/22e03a49c95ef054a43601cd159b222bfab1c701", - "reference": "22e03a49c95ef054a43601cd159b222bfab1c701", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/75b74315b4e4be40e5534cf9c5cc30dd0907ed71", + "reference": "75b74315b4e4be40e5534cf9c5cc30dd0907ed71", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.4.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-deepclone": "^1.40" }, "require-dev": { - "symfony/property-access": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "symfony/property-access": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -7131,11 +7245,12 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Allows exporting any serializable PHP data structure to plain PHP code", + "description": "Provides tools to export, instantiate, hydrate, clone and lazy-load PHP objects", "homepage": "https://symfony.com", "keywords": [ "clone", "construct", + "deep-clone", "export", "hydrate", "instantiate", @@ -7144,7 +7259,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.4.9" + "source": "https://github.com/symfony/var-exporter/tree/v8.1.1" }, "funding": [ { @@ -7164,32 +7279,32 @@ "type": "tidelift" } ], - "time": "2026-04-18T13:18:21+00:00" + "time": "2026-06-27T09:05:56+00:00" }, { "name": "symfony/yaml", - "version": "v7.4.14", + "version": "v8.1.1", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc" + "reference": "8e4cdd4311683516be06944f4b85244063cdb886" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/f8f328665ace2370d1e10645b807ba1646dc7dcc", - "reference": "f8f328665ace2370d1e10645b807ba1646dc7dcc", + "url": "https://api.github.com/repos/symfony/yaml/zipball/8e4cdd4311683516be06944f4b85244063cdb886", + "reference": "8e4cdd4311683516be06944f4b85244063cdb886", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", + "php": ">=8.4.1", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<7.4" }, "require-dev": { - "symfony/console": "^6.4|^7.0|^8.0" + "symfony/console": "^7.4|^8.0", + "yaml/yaml-test-suite": "*" }, "bin": [ "Resources/bin/yaml-lint" @@ -7220,7 +7335,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.14" + "source": "https://github.com/symfony/yaml/tree/v8.1.1" }, "funding": [ { @@ -7240,20 +7355,20 @@ "type": "tidelift" } ], - "time": "2026-06-08T20:24:16+00:00" + "time": "2026-06-09T11:06:24+00:00" }, { "name": "tracy/tracy", - "version": "v2.11.3", + "version": "v2.12.0", "source": { "type": "git", "url": "https://github.com/nette/tracy.git", - "reference": "a41a2774c24abbcb0ba31f00a822eb372cf2ac96" + "reference": "535eda4871fd04f2756c8d95f6bdfa43706d79be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tracy/zipball/a41a2774c24abbcb0ba31f00a822eb372cf2ac96", - "reference": "a41a2774c24abbcb0ba31f00a822eb372cf2ac96", + "url": "https://api.github.com/repos/nette/tracy/zipball/535eda4871fd04f2756c8d95f6bdfa43706d79be", + "reference": "535eda4871fd04f2756c8d95f6bdfa43706d79be", "shasum": "" }, "require": { @@ -7279,7 +7394,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.11-dev" + "dev-master": "2.12-dev" } }, "autoload": { @@ -7318,31 +7433,31 @@ ], "support": { "issues": "https://github.com/nette/tracy/issues", - "source": "https://github.com/nette/tracy/tree/v2.11.3" + "source": "https://github.com/nette/tracy/tree/v2.12.0" }, - "time": "2026-02-25T18:34:26+00:00" + "time": "2026-05-04T00:23:53+00:00" }, { "name": "zircote/swagger-php", - "version": "6.0.6", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/zircote/swagger-php.git", - "reference": "9447c1f45b5ae93185caea9a0c8e298399188a25" + "reference": "90aa94ef8a321bc343fe025048c0071b88c188f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zircote/swagger-php/zipball/9447c1f45b5ae93185caea9a0c8e298399188a25", - "reference": "9447c1f45b5ae93185caea9a0c8e298399188a25", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/90aa94ef8a321bc343fe025048c0071b88c188f5", + "reference": "90aa94ef8a321bc343fe025048c0071b88c188f5", "shasum": "" }, "require": { - "ext-json": "*", "nikic/php-parser": "^4.19 || ^5.0", "php": ">=8.2", "phpstan/phpdoc-parser": "^2.0", "psr/log": "^1.1 || ^2.0 || ^3.0", "radebatz/type-info-extras": "^1.0.2", + "symfony/console": "^7.4 || ^8.0", "symfony/deprecation-contracts": "^2 || ^3", "symfony/finder": "^5.0 || ^6.0 || ^7.0 || ^8.0", "symfony/yaml": "^5.4 || ^6.0 || ^7.0 || ^8.0" @@ -7355,7 +7470,7 @@ "doctrine/annotations": "^2.0", "friendsofphp/php-cs-fixer": "^3.62.0", "phpstan/phpstan": "^2.0", - "phpunit/phpunit": "^11.5", + "phpunit/phpunit": "^11.5 || >=12.5.22", "rector/rector": "^2.3.1" }, "bin": [ @@ -7402,7 +7517,7 @@ ], "support": { "issues": "https://github.com/zircote/swagger-php/issues", - "source": "https://github.com/zircote/swagger-php/tree/6.0.6" + "source": "https://github.com/zircote/swagger-php/tree/6.3.0" }, "funding": [ { @@ -7410,7 +7525,7 @@ "type": "github" } ], - "time": "2026-02-28T06:42:58+00:00" + "time": "2026-06-29T08:44:04+00:00" } ], "packages-dev": [ @@ -7602,16 +7717,16 @@ }, { "name": "nette/tester", - "version": "v2.6.0", + "version": "v2.6.1", "source": { "type": "git", "url": "https://github.com/nette/tester.git", - "reference": "0d416a3715ee7547f5e286aa7e65180f35467624" + "reference": "86e4d80d0953256c3b2930b9d47a07d2a9528770" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/tester/zipball/0d416a3715ee7547f5e286aa7e65180f35467624", - "reference": "0d416a3715ee7547f5e286aa7e65180f35467624", + "url": "https://api.github.com/repos/nette/tester/zipball/86e4d80d0953256c3b2930b9d47a07d2a9528770", + "reference": "86e4d80d0953256c3b2930b9d47a07d2a9528770", "shasum": "" }, "require": { @@ -7674,17 +7789,17 @@ ], "support": { "issues": "https://github.com/nette/tester/issues", - "source": "https://github.com/nette/tester/tree/v2.6.0" + "source": "https://github.com/nette/tester/tree/v2.6.1" }, - "time": "2026-01-22T08:39:16+00:00" + "time": "2026-05-11T18:11:12+00:00" }, { "name": "phpstan/phpstan", - "version": "2.1.40", + "version": "2.2.5", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", - "reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/909c1e5fef7989ac0d0c1c5c42e32a5c4f6198a0", + "reference": "909c1e5fef7989ac0d0c1c5c42e32a5c4f6198a0", "shasum": "" }, "require": { @@ -7707,6 +7822,17 @@ "license": [ "MIT" ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], "description": "PHPStan - PHP Static Analysis Tool", "keywords": [ "dev", @@ -7729,25 +7855,25 @@ "type": "github" } ], - "time": "2026-02-23T15:04:35+00:00" + "time": "2026-07-05T06:31:06+00:00" }, { "name": "phpstan/phpstan-nette", - "version": "2.0.9", + "version": "2.0.12", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-nette.git", - "reference": "abd2b295fac8258fb294fd5dc17c5e024c6e3c89" + "reference": "2c104f121b9db65407112069ef4fd43799c9ba0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/abd2b295fac8258fb294fd5dc17c5e024c6e3c89", - "reference": "abd2b295fac8258fb294fd5dc17c5e024c6e3c89", + "url": "https://api.github.com/repos/phpstan/phpstan-nette/zipball/2c104f121b9db65407112069ef4fd43799c9ba0c", + "reference": "2c104f121b9db65407112069ef4fd43799c9ba0c", "shasum": "" }, "require": { "php": "^7.4 || ^8.0", - "phpstan/phpstan": "^2.1.12" + "phpstan/phpstan": "^2.2.3" }, "conflict": { "nette/application": "<2.3.0", @@ -7766,7 +7892,8 @@ "phpstan/phpstan-deprecation-rules": "^2.0", "phpstan/phpstan-phpunit": "^2.0.8", "phpstan/phpstan-strict-rules": "^2.0", - "phpunit/phpunit": "^9.6" + "phpunit/phpunit": "^9.6", + "shipmonk/name-collision-detector": "^2.1" }, "type": "phpstan-extension", "extra": { @@ -7789,9 +7916,9 @@ "description": "Nette Framework class reflection extension for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-nette/issues", - "source": "https://github.com/phpstan/phpstan-nette/tree/2.0.9" + "source": "https://github.com/phpstan/phpstan-nette/tree/2.0.12" }, - "time": "2026-02-11T12:41:39+00:00" + "time": "2026-07-02T10:28:46+00:00" }, { "name": "vrana/adminer", @@ -7867,14 +7994,14 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=8.2", + "php": ">=8.3", "ext-yaml": ">=2.0", "ext-json": ">=1.7", "ext-zip": ">=1.15" }, "platform-dev": {}, "platform-overrides": { - "php": "8.2.0" + "php": "8.5" }, "plugin-api-version": "2.9.0" } From 10f53bf8e64105183a8201e1154c0350267224ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Sun, 5 Jul 2026 22:00:48 +0200 Subject: [PATCH 2/4] Fixing problems with deprecated vendor warnings in tests and fixing our deprecated issues. --- .../presenters/PipelinesPresenter.php | 4 ++-- app/V1Module/presenters/SubmitPresenter.php | 3 +-- app/async/Notify.php | 1 - .../Emails/EmailHelper/EmailHelper.php | 4 ++-- .../Compilation/CompilationParams.php | 3 +-- .../ExerciseConfig/Compilation/Tree/Node.php | 6 ++---- .../Compilation/Tree/PortNode.php | 6 ++---- .../ExerciseConfig/Config/ExerciseConfig.php | 19 +++++++++---------- .../ExerciseConfig/Variables/Variable.php | 2 +- .../LocalStorage/ZipFileStorage.php | 4 ++-- .../Alice/CustomNativeLoader.php | 2 +- app/model/entity/ExerciseConfig.php | 2 +- tests/Authorizator/MockIdentity.php | 6 +++--- .../AssignmentSolversPresenter.phpt | 2 -- tests/Presenters/ExtensionsPresenter.phpt | 2 +- tests/bootstrap.php | 19 +++++++++++++++++-- 16 files changed, 45 insertions(+), 40 deletions(-) diff --git a/app/V1Module/presenters/PipelinesPresenter.php b/app/V1Module/presenters/PipelinesPresenter.php index 99fbe9109..b69f649b1 100644 --- a/app/V1Module/presenters/PipelinesPresenter.php +++ b/app/V1Module/presenters/PipelinesPresenter.php @@ -138,7 +138,7 @@ public function actionGetDefaultBoxes() $this->sendSuccessResponse($boxes); } - public function checkDefault(string $search = null) + public function checkDefault() { if (!$this->pipelineAcl->canViewAll()) { throw new ForbiddenRequestException("You cannot list all pipelines."); @@ -383,7 +383,7 @@ public function actionUpdatePipeline(string $id) $pipeline->setPipelineConfig($newConfig); } - $parameters = $this->request->getPost("parameters"); + $parameters = $req->getPost("parameters"); if ($parameters !== null) { $pipeline->setParameters($parameters); } diff --git a/app/V1Module/presenters/SubmitPresenter.php b/app/V1Module/presenters/SubmitPresenter.php index ecf901e1d..1a501305d 100644 --- a/app/V1Module/presenters/SubmitPresenter.php +++ b/app/V1Module/presenters/SubmitPresenter.php @@ -437,8 +437,7 @@ public function checkPreSubmit(string $id, ?string $userId = null) */ #[Post("files", new VArray(new VUuid()), "Submitted files", nullable: true)] #[Path("id", new VUuid(), "identifier of assignment", required: true)] - #[Query("userId", new VUuid(), "Identifier of the submission author", required: false, nullable: true)] - public function actionPreSubmit(string $id, string $userId = null) + public function actionPreSubmit(string $id) { $assignment = $this->assignments->findOrThrow($id); diff --git a/app/async/Notify.php b/app/async/Notify.php index 2d76135b4..648418fbd 100644 --- a/app/async/Notify.php +++ b/app/async/Notify.php @@ -21,7 +21,6 @@ public static function isAvailable(): bool { $requirements = ['inotify_init', 'inotify_add_watch', 'inotify_read', 'inotify_queue_len', 'stream_select']; foreach ($requirements as $reqFnc) { - // @phpstan-ignore-next-line if (!function_exists($reqFnc)) { return false; } diff --git a/app/helpers/Emails/EmailHelper/EmailHelper.php b/app/helpers/Emails/EmailHelper/EmailHelper.php index 050583323..2fcd03c8c 100644 --- a/app/helpers/Emails/EmailHelper/EmailHelper.php +++ b/app/helpers/Emails/EmailHelper/EmailHelper.php @@ -97,13 +97,13 @@ public function sendFromDefault(array $to, string $locale, string $subject, stri * @param Exception $lastMailerException Exception thrown from the sender (if any). Its message is logged as well. * @throws Exception */ - private function archiveMailCopy(Message $message, Exception $lastMailerException = null) + private function archiveMailCopy(Message $message, ?Exception $lastMailerException = null) { if (!file_exists($this->archivingDir)) { mkdir($this->archivingDir, 0775, true); // make sure logging directory exists } - // Logging is not that important, all following opertions fail silently. + // Logging is not that important, all following operations fail silently. if (file_exists($this->archivingDir) && is_writeable($this->archivingDir)) { $data = [ '----- BEGIN MAIL -----', diff --git a/app/helpers/ExerciseConfig/Compilation/CompilationParams.php b/app/helpers/ExerciseConfig/Compilation/CompilationParams.php index be9cf616d..5c891d4ff 100644 --- a/app/helpers/ExerciseConfig/Compilation/CompilationParams.php +++ b/app/helpers/ExerciseConfig/Compilation/CompilationParams.php @@ -10,7 +10,6 @@ */ class CompilationParams { - /** * Files submitted by user. * @var string[] @@ -69,7 +68,7 @@ public function isDebug(): bool public static function create( array $files = [], bool $debug = false, - SolutionParams $solutionParams = null + ?SolutionParams $solutionParams = null ): CompilationParams { $params = new CompilationParams(); $params->files = $files; diff --git a/app/helpers/ExerciseConfig/Compilation/Tree/Node.php b/app/helpers/ExerciseConfig/Compilation/Tree/Node.php index 096786055..42f80d617 100644 --- a/app/helpers/ExerciseConfig/Compilation/Tree/Node.php +++ b/app/helpers/ExerciseConfig/Compilation/Tree/Node.php @@ -3,7 +3,6 @@ namespace App\Helpers\ExerciseConfig\Compilation\Tree; use App\Helpers\ExerciseConfig\Pipeline\Box\Box; -use App\Helpers\ExerciseConfig\VariablesTable; /** * Node representing Box in the compilation of exercise. It can hold additional @@ -13,7 +12,6 @@ */ class Node { - /** * PortNode from which was this node created. * @var ?PortNode @@ -65,9 +63,9 @@ class Node /** * Node constructor. - * @param ?PortNode $node + * @param PortNode|null $node */ - public function __construct(PortNode $node = null) + public function __construct(?PortNode $node = null) { if ($node) { $this->portNode = $node; diff --git a/app/helpers/ExerciseConfig/Compilation/Tree/PortNode.php b/app/helpers/ExerciseConfig/Compilation/Tree/PortNode.php index 696c50376..35b25243a 100644 --- a/app/helpers/ExerciseConfig/Compilation/Tree/PortNode.php +++ b/app/helpers/ExerciseConfig/Compilation/Tree/PortNode.php @@ -3,7 +3,6 @@ namespace App\Helpers\ExerciseConfig\Compilation\Tree; use App\Helpers\ExerciseConfig\Pipeline\Box\Box; -use App\Helpers\ExerciseConfig\VariablesTable; use Nette\Utils\Arrays; /** @@ -15,7 +14,6 @@ */ class PortNode { - /** * Node structure created based on this node. * @var Node @@ -84,10 +82,10 @@ class PortNode /** * Node constructor. * @param Box $box - * @param ?string $pipelineId + * @param string|null $pipelineId * @param string|null $testId */ - public function __construct(Box $box, string $pipelineId = null, string $testId = null) + public function __construct(Box $box, ?string $pipelineId = null, ?string $testId = null) { $this->box = $box; $this->pipelineId = $pipelineId; diff --git a/app/helpers/ExerciseConfig/Config/ExerciseConfig.php b/app/helpers/ExerciseConfig/Config/ExerciseConfig.php index b8fc9c2a0..e825ceea7 100644 --- a/app/helpers/ExerciseConfig/Config/ExerciseConfig.php +++ b/app/helpers/ExerciseConfig/Config/ExerciseConfig.php @@ -11,16 +11,15 @@ */ class ExerciseConfig implements JsonSerializable { - /** Key for the environments list item */ - const ENVIRONMENTS_KEY = "environments"; + public const ENVIRONMENTS_KEY = "environments"; /** Key for the tests item */ - const TESTS_KEY = "tests"; + public const TESTS_KEY = "tests"; /** @var array tests indexed by test name */ - protected $tests = array(); + protected $tests = []; /** @var array list of which can be present in tests environments */ - protected $environments = array(); + protected $environments = []; /** @@ -35,7 +34,7 @@ public function getEnvironments(): array /** * Add environment into this holder. * @param string $id - * @return $this + * @return ExerciseConfig $this */ public function addEnvironment(string $id): ExerciseConfig { @@ -46,7 +45,7 @@ public function addEnvironment(string $id): ExerciseConfig /** * Remove environment according to given name identification. * @param string $id - * @return $this + * @return ExerciseConfig $this */ public function removeEnvironment(string $id): ExerciseConfig { @@ -83,7 +82,7 @@ public function getTest(string $id): ?Test * Add test into this holder. * @param string $id * @param Test $test - * @return $this + * @return ExerciseConfig $this */ public function addTest(string $id, Test $test): ExerciseConfig { @@ -94,7 +93,7 @@ public function addTest(string $id, Test $test): ExerciseConfig /** * Remove test according to given test identification. * @param string $id - * @return $this + * @return ExerciseConfig $this */ public function removeTest(string $id): ExerciseConfig { @@ -106,7 +105,7 @@ public function removeTest(string $id): ExerciseConfig * Remove test according to given test identification. * @param string $oldId * @param string $newId - * @return $this + * @return ExerciseConfig $this */ public function changeTestId(string $oldId, string $newId): ExerciseConfig { diff --git a/app/helpers/ExerciseConfig/Variables/Variable.php b/app/helpers/ExerciseConfig/Variables/Variable.php index 9257b4f79..1c3c11a63 100644 --- a/app/helpers/ExerciseConfig/Variables/Variable.php +++ b/app/helpers/ExerciseConfig/Variables/Variable.php @@ -63,7 +63,7 @@ class Variable implements JsonSerializable * @param string|array $value * @throws ExerciseConfigException */ - public function __construct(string $type, string $name = null, $value = null) + public function __construct(string $type, ?string $name = null, $value = null) { $this->type = $type; $this->name = $name; diff --git a/app/helpers/FileStorage/LocalStorage/ZipFileStorage.php b/app/helpers/FileStorage/LocalStorage/ZipFileStorage.php index 57affbc9c..3a83d1def 100644 --- a/app/helpers/FileStorage/LocalStorage/ZipFileStorage.php +++ b/app/helpers/FileStorage/LocalStorage/ZipFileStorage.php @@ -88,13 +88,13 @@ private function setCompressionLevel(string $storagePath, ?int $level = null): v /** * Constructor * @param string $archivePath path to the actual ZIP file - * @param string $archiveStoragePath path to ZIP file within external storage (null if standalone) + * @param string|null $archiveStoragePath path to ZIP file within external storage (null if standalone) * @param bool $overwrite whether the OVERWRITE flag should be set when opening the archive */ public function __construct( TmpFilesHelper $tmpFilesHelper, string $archivePath, - string $archiveStoragePath = null, + ?string $archiveStoragePath = null, bool $overwrite = false ) { $this->tmpFilesHelper = $tmpFilesHelper; diff --git a/app/helpers/ZenifyFixtures/Alice/CustomNativeLoader.php b/app/helpers/ZenifyFixtures/Alice/CustomNativeLoader.php index 69117880b..70c3f41a9 100644 --- a/app/helpers/ZenifyFixtures/Alice/CustomNativeLoader.php +++ b/app/helpers/ZenifyFixtures/Alice/CustomNativeLoader.php @@ -20,7 +20,7 @@ class CustomNativeLoader extends NativeLoader * @param FakerGenerator|null $fakerGenerator * @param ChainableParserInterface[] $parsers */ - public function __construct(FakerGenerator $fakerGenerator = null, array $parsers) + public function __construct(?FakerGenerator $fakerGenerator = null, array $parsers = []) { $this->parsers = $parsers; // this needs to be first parent::__construct($fakerGenerator); diff --git a/app/model/entity/ExerciseConfig.php b/app/model/entity/ExerciseConfig.php index f8db2a543..6273d209d 100644 --- a/app/model/entity/ExerciseConfig.php +++ b/app/model/entity/ExerciseConfig.php @@ -57,7 +57,7 @@ public function getAuthor(): ?User public function __construct( string $config, User $author, - ExerciseConfig $createdFrom = null + ?ExerciseConfig $createdFrom = null ) { $this->createdAt = new DateTime(); diff --git a/tests/Authorizator/MockIdentity.php b/tests/Authorizator/MockIdentity.php index 486caee90..45e4d62fc 100644 --- a/tests/Authorizator/MockIdentity.php +++ b/tests/Authorizator/MockIdentity.php @@ -6,7 +6,7 @@ class MockIdentity extends App\Security\Identity private $scopeRoles; private $effectiveRole; - public function __construct(array $roles, array $scopeRoles = [], string $effectiveRole = null) + public function __construct(array $roles, array $scopeRoles = [], ?string $effectiveRole = null) { parent::__construct(null, null); $this->roles = $roles; @@ -19,12 +19,12 @@ public function getRoles(): array return $this->roles; } - function getScopeRoles() + public function getScopeRoles() { return $this->scopeRoles; } - function getEffectiveRole(): ?string + public function getEffectiveRole(): ?string { return $this->effectiveRole; } diff --git a/tests/Presenters/AssignmentSolversPresenter.phpt b/tests/Presenters/AssignmentSolversPresenter.phpt index adeb71c10..e58e13446 100644 --- a/tests/Presenters/AssignmentSolversPresenter.phpt +++ b/tests/Presenters/AssignmentSolversPresenter.phpt @@ -4,7 +4,6 @@ $container = require_once __DIR__ . "/../bootstrap.php"; use App\V1Module\Presenters\AssignmentSolversPresenter; use App\Model\Repository\Assignments; -use Doctrine\ORM\EntityManagerInterface; use Tester\Assert; $_SERVER['REMOTE_ADDR'] = '127.0.0.1'; @@ -32,7 +31,6 @@ class TestAssignmentSolversPresenter extends Tester\TestCase $this->container = $container; $this->user = $container->getByType(\Nette\Security\User::class); $this->assignments = $this->container->getByType(Assignments::class); - $entityManager = $this->container->getByType(EntityManagerInterface::class); } protected function setUp() diff --git a/tests/Presenters/ExtensionsPresenter.phpt b/tests/Presenters/ExtensionsPresenter.phpt index 108559137..573b60eaf 100644 --- a/tests/Presenters/ExtensionsPresenter.phpt +++ b/tests/Presenters/ExtensionsPresenter.phpt @@ -62,7 +62,7 @@ class TestExtensionsPresenter extends Tester\TestCase $caption, string $url, array $scopes = ['master', 'refresh'], - string $user = null, + ?string $user = null, array $instances = [], array $roles = [], array $externalLogins = [], diff --git a/tests/bootstrap.php b/tests/bootstrap.php index b130e324e..d92a88c61 100644 --- a/tests/bootstrap.php +++ b/tests/bootstrap.php @@ -6,12 +6,27 @@ Tester\Environment::setup(); +// We have no control over the errors in imported modules (vendor directory), +// so we ignore deprecated warnings from there +$__previousErrorHandler = set_error_handler( + function (int $severity, string $message, string $file, int $line) use (&$__previousErrorHandler) { + if (($severity === E_DEPRECATED || $severity === E_USER_DEPRECATED) && str_contains($file, '/vendor/')) { + return true; + } + return ($__previousErrorHandler) ? $__previousErrorHandler($severity, $message, $file, $line) : false; + } +); + +// and we need to make the TestCase::run ignore deprecated warnings too +// (otherwise it silently tears down the test in the middle, which is hard to debug) +error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED); + $appDir = __DIR__ . '/../app'; -$configurator = new Nette\Configurator(); +$configurator = new Nette\Bootstrap\Configurator(); $configurator->setDebugMode(false); $configurator->setTempDirectory(TEMP_DIR); -$configurator->addParameters(['appDir' => $appDir]); +$configurator->addStaticParameters(['appDir' => $appDir]); $configurator->createRobotLoader() ->addDirectory($appDir) From 7413f4d5daecba70882b9eb18ef239fbaf3a983a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Sun, 5 Jul 2026 22:01:52 +0200 Subject: [PATCH 3/4] Updating workflows for new PHP versions. --- .github/workflows/ci.yml | 72 ++++++++++++++++++++-------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d46f2007a..a171305fc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,55 +8,55 @@ jobs: strategy: fail-fast: false matrix: - php: ['8.2', '8.3'] + php: ["8.3", "8.4", "8.5"] steps: - - uses: actions/checkout@v2 - - name: Setup PHP with pecl and extensions - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: pecl,composer:v2 - coverage: xdebug - extensions: yaml,tokenizer,ldap,pdo,pdo_sqlite,zip,json,mbstring,iconv,zmq - ini-values: memory_limit=1G,opcache.enable_cli=0 - - run: php --version - - # install - - run: composer install --no-interaction --prefer-dist - - # script - - run: php ./vendor/nette/tester/src/tester.php -j 4 -C tests --coverage ./coverage.xml --coverage-src ./app - - uses: codecov/codecov-action@v1 - + - uses: actions/checkout@v2 + - name: Setup PHP with pecl and extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: pecl,composer:v2 + coverage: xdebug + extensions: yaml,tokenizer,ldap,pdo,pdo_sqlite,zip,json,mbstring,iconv,zmq + ini-values: memory_limit=1G,opcache.enable_cli=0 + - run: php --version + + # install + - run: composer install --no-interaction --prefer-dist + + # script + - run: php ./vendor/nette/tester/src/tester.php -j 4 -C tests --coverage ./coverage.xml --coverage-src ./app + - uses: codecov/codecov-action@v1 + phpstan: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - php: ['8.2', '8.3'] + php: ["8.3", "8.4", "8.5"] steps: - - uses: actions/checkout@v2 - - name: Setup PHP with pecl and extensions - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php }} - tools: pecl,composer:v2 - extensions: yaml,tokenizer,ldap,pdo,pdo_sqlite,zip,json,mbstring,iconv,zmq - ini-values: memory_limit=1G,opcache.enable_cli=0 - - run: php --version - - # install - - run: composer install --no-interaction --prefer-dist - - # script - - run: vendor/bin/phpstan analyse -c phpstan/phpstan.neon app + - uses: actions/checkout@v2 + - name: Setup PHP with pecl and extensions + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: pecl,composer:v2 + extensions: yaml,tokenizer,ldap,pdo,pdo_sqlite,zip,json,mbstring,iconv,zmq + ini-values: memory_limit=1G,opcache.enable_cli=0 + - run: php --version + + # install + - run: composer install --no-interaction --prefer-dist + + # script + - run: vendor/bin/phpstan analyse -c phpstan/phpstan.neon app phpstan-tests: runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - php: ['8.2', '8.3'] + php: ["8.3", "8.4", "8.5"] steps: - uses: actions/checkout@v2 - name: Setup PHP with pecl and extensions From 30d5259d77e4b5edc00ee26c5b2120d32f79b056 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kruli=C5=A1?= Date: Sun, 5 Jul 2026 22:05:41 +0200 Subject: [PATCH 4/4] Dropping support for PHP 8.3 --- .github/workflows/ci.yml | 6 +++--- README.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a171305fc..837b752d1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,7 +8,7 @@ jobs: strategy: fail-fast: false matrix: - php: ["8.3", "8.4", "8.5"] + php: ["8.4", "8.5"] steps: - uses: actions/checkout@v2 - name: Setup PHP with pecl and extensions @@ -33,7 +33,7 @@ jobs: strategy: fail-fast: false matrix: - php: ["8.3", "8.4", "8.5"] + php: ["8.4", "8.5"] steps: - uses: actions/checkout@v2 - name: Setup PHP with pecl and extensions @@ -56,7 +56,7 @@ jobs: strategy: fail-fast: false matrix: - php: ["8.3", "8.4", "8.5"] + php: ["8.4", "8.5"] steps: - uses: actions/checkout@v2 - name: Setup PHP with pecl and extensions diff --git a/README.md b/README.md index c42f37fc5..eb566d65e 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Business logic core of the application and a REST API that provides access to ot ### Prerequisites -You need a web server with PHP (8.3+, 8.5 currently used, should also work with 8.2 but no longer tested) and MySQL or MariaDB database. +You need a web server with PHP (8.4+, 8.5 currently used) and MySQL or MariaDB database. We recommend installing PHP from remi repository: