diff --git a/.phive/phars.xml b/.phive/phars.xml index 809ab39..a98a1a4 100644 --- a/.phive/phars.xml +++ b/.phive/phars.xml @@ -1,5 +1,5 @@ - - + + diff --git a/tools/.phpstan/composer.json b/tools/.phpstan/composer.json index 8e13d13..8882b17 100644 --- a/tools/.phpstan/composer.json +++ b/tools/.phpstan/composer.json @@ -1,10 +1,10 @@ { "require-dev": { - "phpstan/phpstan": "^2.1.33", + "phpstan/phpstan": "^2.1.38", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan-strict-rules": "^2.0.7", + "phpstan/phpstan-strict-rules": "^2.0.8", "tomasvotruba/type-coverage": "^2.1.0", - "ergebnis/phpstan-rules": "^2.12.0" + "ergebnis/phpstan-rules": "^2.13.1" }, "config": { "allow-plugins": { diff --git a/tools/.phpstan/composer.lock b/tools/.phpstan/composer.lock index 774d693..11ac3cf 100644 --- a/tools/.phpstan/composer.lock +++ b/tools/.phpstan/composer.lock @@ -4,40 +4,40 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4409cdc49212f7e878b14b7ae9285bb2", + "content-hash": "7ce1c3a7ecbd24ba1600d5b122929b7c", "packages": [], "packages-dev": [ { "name": "ergebnis/phpstan-rules", - "version": "2.12.0", + "version": "2.13.1", "source": { "type": "git", "url": "https://github.com/ergebnis/phpstan-rules.git", - "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea" + "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/c4e0121a937b3b551f800a86e7d78794da2783ea", - "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea", + "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/f69db86b98595c34fc1f61c89fe3b380141aa519", + "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", - "phpstan/phpstan": "^2.1.8" + "phpstan/phpstan": "^2.1.35" }, "require-dev": { "codeception/codeception": "^4.0.0 || ^5.0.0", "doctrine/orm": "^2.20.0 || ^3.3.0", - "ergebnis/composer-normalize": "^2.47.0", - "ergebnis/license": "^2.6.0", - "ergebnis/php-cs-fixer-config": "^6.54.0", + "ergebnis/composer-normalize": "^2.49.0", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.59.0", "ergebnis/phpunit-slow-test-detector": "^2.20.0", "fakerphp/faker": "^1.24.1", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.7", - "phpstan/phpstan-strict-rules": "^2.0.6", + "phpstan/phpstan-phpunit": "^2.0.12", + "phpstan/phpstan-strict-rules": "^2.0.8", "phpunit/phpunit": "^9.6.21", "psr/container": "^2.0.2", "symfony/finder": "^5.4.45", @@ -78,20 +78,20 @@ "security": "https://github.com/ergebnis/phpstan-rules/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/phpstan-rules" }, - "time": "2025-09-07T13:31:33+00:00" + "time": "2026-01-27T17:13:06+00:00" }, { "name": "nette/utils", - "version": "v4.1.1", + "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", + "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", "shasum": "" }, "require": { @@ -104,7 +104,7 @@ "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -165,9 +165,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.1" + "source": "https://github.com/nette/utils/tree/v4.1.2" }, - "time": "2025-12-22T12:14:32+00:00" + "time": "2026-02-03T17:21:09+00:00" }, { "name": "phpstan/extension-installer", @@ -219,11 +219,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.33", + "version": "2.1.38", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dfaf1f530e1663aa167bc3e52197adb221582629", + "reference": "dfaf1f530e1663aa167bc3e52197adb221582629", "shasum": "" }, "require": { @@ -268,20 +268,20 @@ "type": "github" } ], - "time": "2025-12-05T10:24:31+00:00" + "time": "2026-01-30T17:12:46+00:00" }, { "name": "phpstan/phpstan-strict-rules", - "version": "2.0.7", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538" + "reference": "1ed9e626a37f7067b594422411539aa807190573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/1ed9e626a37f7067b594422411539aa807190573", + "reference": "1ed9e626a37f7067b594422411539aa807190573", "shasum": "" }, "require": { @@ -314,9 +314,9 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.7" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.8" }, - "time": "2025-09-26T11:19:08+00:00" + "time": "2026-01-27T08:10:25+00:00" }, { "name": "tomasvotruba/type-coverage", diff --git a/tools/.phpstan/vendor/composer/installed.json b/tools/.phpstan/vendor/composer/installed.json index 5d61f48..debc4f3 100644 --- a/tools/.phpstan/vendor/composer/installed.json +++ b/tools/.phpstan/vendor/composer/installed.json @@ -2,42 +2,42 @@ "packages": [ { "name": "ergebnis/phpstan-rules", - "version": "2.12.0", - "version_normalized": "2.12.0.0", + "version": "2.13.1", + "version_normalized": "2.13.1.0", "source": { "type": "git", "url": "https://github.com/ergebnis/phpstan-rules.git", - "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea" + "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/c4e0121a937b3b551f800a86e7d78794da2783ea", - "reference": "c4e0121a937b3b551f800a86e7d78794da2783ea", + "url": "https://api.github.com/repos/ergebnis/phpstan-rules/zipball/f69db86b98595c34fc1f61c89fe3b380141aa519", + "reference": "f69db86b98595c34fc1f61c89fe3b380141aa519", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", - "phpstan/phpstan": "^2.1.8" + "phpstan/phpstan": "^2.1.35" }, "require-dev": { "codeception/codeception": "^4.0.0 || ^5.0.0", "doctrine/orm": "^2.20.0 || ^3.3.0", - "ergebnis/composer-normalize": "^2.47.0", - "ergebnis/license": "^2.6.0", - "ergebnis/php-cs-fixer-config": "^6.54.0", + "ergebnis/composer-normalize": "^2.49.0", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.59.0", "ergebnis/phpunit-slow-test-detector": "^2.20.0", "fakerphp/faker": "^1.24.1", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.7", - "phpstan/phpstan-strict-rules": "^2.0.6", + "phpstan/phpstan-phpunit": "^2.0.12", + "phpstan/phpstan-strict-rules": "^2.0.8", "phpunit/phpunit": "^9.6.21", "psr/container": "^2.0.2", "symfony/finder": "^5.4.45", "symfony/process": "^5.4.47" }, - "time": "2025-09-07T13:31:33+00:00", + "time": "2026-01-27T17:13:06+00:00", "type": "phpstan-extension", "extra": { "phpstan": { @@ -78,17 +78,17 @@ }, { "name": "nette/utils", - "version": "v4.1.1", - "version_normalized": "4.1.1.0", + "version": "v4.1.2", + "version_normalized": "4.1.2.0", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72" + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/c99059c0315591f1a0db7ad6002000288ab8dc72", - "reference": "c99059c0315591f1a0db7ad6002000288ab8dc72", + "url": "https://api.github.com/repos/nette/utils/zipball/f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", + "reference": "f76b5dc3d6c6d3043c8d937df2698515b99cbaf5", "shasum": "" }, "require": { @@ -101,7 +101,7 @@ "require-dev": { "jetbrains/phpstorm-attributes": "^1.2", "nette/tester": "^2.5", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/phpstan": "^2.0@stable", "tracy/tracy": "^2.9" }, "suggest": { @@ -112,7 +112,7 @@ "ext-mbstring": "to use Strings::lower() etc...", "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" }, - "time": "2025-12-22T12:14:32+00:00", + "time": "2026-02-03T17:21:09+00:00", "type": "library", "extra": { "branch-alias": { @@ -164,7 +164,7 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.1" + "source": "https://github.com/nette/utils/tree/v4.1.2" }, "install-path": "../nette/utils" }, @@ -221,12 +221,12 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.33", - "version_normalized": "2.1.33.0", + "version": "2.1.38", + "version_normalized": "2.1.38.0", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", - "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dfaf1f530e1663aa167bc3e52197adb221582629", + "reference": "dfaf1f530e1663aa167bc3e52197adb221582629", "shasum": "" }, "require": { @@ -235,7 +235,7 @@ "conflict": { "phpstan/phpstan-shim": "*" }, - "time": "2025-12-05T10:24:31+00:00", + "time": "2026-01-30T17:12:46+00:00", "bin": [ "phpstan", "phpstan.phar" @@ -277,17 +277,17 @@ }, { "name": "phpstan/phpstan-strict-rules", - "version": "2.0.7", - "version_normalized": "2.0.7.0", + "version": "2.0.8", + "version_normalized": "2.0.8.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538" + "reference": "1ed9e626a37f7067b594422411539aa807190573" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/d6211c46213d4181054b3d77b10a5c5cb0d59538", - "reference": "d6211c46213d4181054b3d77b10a5c5cb0d59538", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/1ed9e626a37f7067b594422411539aa807190573", + "reference": "1ed9e626a37f7067b594422411539aa807190573", "shasum": "" }, "require": { @@ -300,7 +300,7 @@ "phpstan/phpstan-phpunit": "^2.0", "phpunit/phpunit": "^9.6" }, - "time": "2025-09-26T11:19:08+00:00", + "time": "2026-01-27T08:10:25+00:00", "type": "phpstan-extension", "extra": { "phpstan": { @@ -322,7 +322,7 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.7" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.8" }, "install-path": "../phpstan/phpstan-strict-rules" }, diff --git a/tools/.phpstan/vendor/composer/installed.php b/tools/.phpstan/vendor/composer/installed.php index 991fe96..de998f0 100644 --- a/tools/.phpstan/vendor/composer/installed.php +++ b/tools/.phpstan/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => '__root__', 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '9aff9b4e75e81bbfe6c769be3f393055febf1c6a', + 'reference' => 'e3b28209358168e812dccd89aae049e699832b26', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -13,25 +13,25 @@ '__root__' => array( 'pretty_version' => 'dev-main', 'version' => 'dev-main', - 'reference' => '9aff9b4e75e81bbfe6c769be3f393055febf1c6a', + 'reference' => 'e3b28209358168e812dccd89aae049e699832b26', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => false, ), 'ergebnis/phpstan-rules' => array( - 'pretty_version' => '2.12.0', - 'version' => '2.12.0.0', - 'reference' => 'c4e0121a937b3b551f800a86e7d78794da2783ea', + 'pretty_version' => '2.13.1', + 'version' => '2.13.1.0', + 'reference' => 'f69db86b98595c34fc1f61c89fe3b380141aa519', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../ergebnis/phpstan-rules', 'aliases' => array(), 'dev_requirement' => true, ), 'nette/utils' => array( - 'pretty_version' => 'v4.1.1', - 'version' => '4.1.1.0', - 'reference' => 'c99059c0315591f1a0db7ad6002000288ab8dc72', + 'pretty_version' => 'v4.1.2', + 'version' => '4.1.2.0', + 'reference' => 'f76b5dc3d6c6d3043c8d937df2698515b99cbaf5', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), @@ -47,18 +47,18 @@ 'dev_requirement' => true, ), 'phpstan/phpstan' => array( - 'pretty_version' => '2.1.33', - 'version' => '2.1.33.0', - 'reference' => '9e800e6bee7d5bd02784d4c6069b48032d16224f', + 'pretty_version' => '2.1.38', + 'version' => '2.1.38.0', + 'reference' => 'dfaf1f530e1663aa167bc3e52197adb221582629', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpstan', 'aliases' => array(), 'dev_requirement' => true, ), 'phpstan/phpstan-strict-rules' => array( - 'pretty_version' => '2.0.7', - 'version' => '2.0.7.0', - 'reference' => 'd6211c46213d4181054b3d77b10a5c5cb0d59538', + 'pretty_version' => '2.0.8', + 'version' => '2.0.8.0', + 'reference' => '1ed9e626a37f7067b594422411539aa807190573', 'type' => 'phpstan-extension', 'install_path' => __DIR__ . '/../phpstan/phpstan-strict-rules', 'aliases' => array(), diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/CHANGELOG.md b/tools/.phpstan/vendor/ergebnis/phpstan-rules/CHANGELOG.md index 7729147..6e0d020 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/CHANGELOG.md +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/CHANGELOG.md @@ -6,7 +6,27 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## Unreleased -For a full diff see [`2.12.0...main`][2.12.0...main]. +For a full diff see [`2.13.1...main`][2.13.1...main]. + +## [`2.13.1`][2.13.1] + +For a full diff see [`2.13.0...2.13.1`][2.13.0...2.13.1]. + +### Fixed + +- Adjusted `Files\NoPhpstanIgnoreRule` to traverse into all nodes ([#1011]), by [@localheinz] + +## [`2.13.0`][2.13.0] + +For a full diff see [`2.12.0...2.13.0`][2.12.0...2.13.0]. + +### Added + +- Added `Files\NoPhpstanIgnoreRule`, which reports an error when a `@phpstan-ignore`, `@phpstan-ignore-line`, or `@phpstan-ignore-next-line` tag is used to suppress an error ([#1009]), by [@localheinz] + +### Changed + +- Required `phpstan/phpstan:^2.1.35` ([#1010]), by [@localheinz] ## [`2.12.0`][2.12.0] @@ -588,6 +608,8 @@ For a full diff see [`362c7ea...0.1.0`][362c7ea...0.1.0]. [2.10.5]: https://github.com/ergebnis/phpstan-rules/releases/tag/2.10.5 [2.11.0]: https://github.com/ergebnis/phpstan-rules/releases/tag/2.11.0 [2.12.0]: https://github.com/ergebnis/phpstan-rules/releases/tag/2.12.0 +[2.13.0]: https://github.com/ergebnis/phpstan-rules/releases/tag/2.13.0 +[2.13.1]: https://github.com/ergebnis/phpstan-rules/releases/tag/2.13.1 [362c7ea...0.1.0]: https://github.com/ergebnis/phpstan-rules/compare/362c7ea...0.1.0 [0.1.0...0.2.0]: https://github.com/ergebnis/phpstan-rules/compare/0.1.0...0.2.0 @@ -638,7 +660,9 @@ For a full diff see [`362c7ea...0.1.0`][362c7ea...0.1.0]. [2.10.4...2.10.5]: https://github.com/ergebnis/phpstan-rules/compare/2.10.4...2.10.5 [2.10.5...2.11.0]: https://github.com/ergebnis/phpstan-rules/compare/2.10.5...2.11.0 [2.11.0...2.12.0]: https://github.com/ergebnis/phpstan-rules/compare/2.11.0...2.12.0 -[2.12.0...main]: https://github.com/ergebnis/phpstan-rules/compare/2.12.0...main +[2.12.0...2.13.0]: https://github.com/ergebnis/phpstan-rules/compare/2.12.0...2.13.0 +[2.13.0...2.13.1]: https://github.com/ergebnis/phpstan-rules/compare/2.13.0...2.13.1 +[2.13.1...main]: https://github.com/ergebnis/phpstan-rules/compare/2.13.1...main [#1]: https://github.com/ergebnis/phpstan-rules/pull/1 [#4]: https://github.com/ergebnis/phpstan-rules/pull/4 @@ -736,6 +760,9 @@ For a full diff see [`362c7ea...0.1.0`][362c7ea...0.1.0]. [#958]: https://github.com/ergebnis/phpstan-rules/pull/958 [#972]: https://github.com/ergebnis/phpstan-rules/pull/972 [#977]: https://github.com/ergebnis/phpstan-rules/pull/977 +[#1009]: https://github.com/ergebnis/phpstan-rules/pull/1009 +[#1010]: https://github.com/ergebnis/phpstan-rules/pull/1010 +[#1011]: https://github.com/ergebnis/phpstan-rules/pull/1011 [@cosmastech]: https://github.com/cosmastech [@enumag]: https://github.com/enumag diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/LICENSE.md b/tools/.phpstan/vendor/ergebnis/phpstan-rules/LICENSE.md index 130e719..987526c 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/LICENSE.md +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/LICENSE.md @@ -1,6 +1,6 @@ # The MIT License (MIT) -Copyright (c) 2018-2025 Andreas Möller +Copyright (c) 2018-2026 Andreas Möller Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the _Software_), to deal in the Software without restriction, including without limitation the diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/README.md b/tools/.phpstan/vendor/ergebnis/phpstan-rules/README.md index 690d4ad..afe6464 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/README.md +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/README.md @@ -58,6 +58,7 @@ This package provides the following rules for use with [`phpstan/phpstan`](https - [`Ergebnis\PHPStan\Rules\Expressions\NoEvalRule`](https://github.com/ergebnis/phpstan-rules#expressionsnoevalrule) - [`Ergebnis\PHPStan\Rules\Expressions\NoIssetRule`](https://github.com/ergebnis/phpstan-rules#expressionsnoissetrule) - [`Ergebnis\PHPStan\Rules\Files\DeclareStrictTypesRule`](https://github.com/ergebnis/phpstan-rules#filesdeclarestricttypesrule) +- [`Ergebnis\PHPStan\Rules\Files\NoPhpstanIgnoreRule`](https://github.com/ergebnis/phpstan-rules#filesnophpstanignorerule) - [`Ergebnis\PHPStan\Rules\Functions\NoNullableReturnTypeDeclarationRule`](https://github.com/ergebnis/phpstan-rules#functionsnonullablereturntypedeclarationrule) - [`Ergebnis\PHPStan\Rules\Functions\NoParameterPassedByReferenceRule`](https://github.com/ergebnis/phpstan-rules#functionsnoparameterpassedbyreferencerule) - [`Ergebnis\PHPStan\Rules\Functions\NoParameterWithNullableTypeDeclarationRule`](https://github.com/ergebnis/phpstan-rules#functionsnoparameterwithnullabletypedeclarationrule) @@ -348,6 +349,21 @@ parameters: enabled: false ``` +#### `Files\NoPhpstanIgnoreRule` + +This rule reports an error when a `@phpstan-ignore`, `@phpstan-ignore-line`, or `@phpstan-ignore-next-line` tag is used to [ignore errors reported by `phpstan/phpstan`](https://phpstan.org/user-guide/ignoring-errors#ignoring-in-code-using-phpdocs). + +##### Disabling the rule + +You can set the `enabled` parameter to `false` to disable this rule. + +```neon +parameters: + ergebnis: + noPhpstanIgnore: + enabled: false +``` + ### Functions #### `Functions\NoNullableReturnTypeDeclarationRule` diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/composer.json b/tools/.phpstan/vendor/ergebnis/phpstan-rules/composer.json index 5060dde..7235712 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/composer.json +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/composer.json @@ -23,20 +23,20 @@ "require": { "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0", "ext-mbstring": "*", - "phpstan/phpstan": "^2.1.8" + "phpstan/phpstan": "^2.1.35" }, "require-dev": { "codeception/codeception": "^4.0.0 || ^5.0.0", "doctrine/orm": "^2.20.0 || ^3.3.0", - "ergebnis/composer-normalize": "^2.47.0", - "ergebnis/license": "^2.6.0", - "ergebnis/php-cs-fixer-config": "^6.54.0", + "ergebnis/composer-normalize": "^2.49.0", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.59.0", "ergebnis/phpunit-slow-test-detector": "^2.20.0", "fakerphp/faker": "^1.24.1", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan-deprecation-rules": "^2.0.3", - "phpstan/phpstan-phpunit": "^2.0.7", - "phpstan/phpstan-strict-rules": "^2.0.6", + "phpstan/phpstan-phpunit": "^2.0.12", + "phpstan/phpstan-strict-rules": "^2.0.8", "phpunit/phpunit": "^9.6.21", "psr/container": "^2.0.2", "symfony/finder": "^5.4.45", diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/rules.neon b/tools/.phpstan/vendor/ergebnis/phpstan-rules/rules.neon index 0458e5a..e1287c5 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/rules.neon +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/rules.neon @@ -25,6 +25,8 @@ conditionalTags: phpstan.rules.rule: %ergebnis.noIsset.enabled% Ergebnis\PHPStan\Rules\Files\DeclareStrictTypesRule: phpstan.rules.rule: %ergebnis.declareStrictTypes.enabled% + Ergebnis\PHPStan\Rules\Files\NoPhpstanIgnoreRule: + phpstan.rules.rule: %ergebnis.noPhpstanIgnore.enabled% Ergebnis\PHPStan\Rules\Functions\NoNullableReturnTypeDeclarationRule: phpstan.rules.rule: %ergebnis.noNullableReturnTypeDeclaration.enabled% Ergebnis\PHPStan\Rules\Functions\NoParameterPassedByReferenceRule: @@ -102,6 +104,8 @@ parameters: enabled: %ergebnis.allRules% noParameterWithNullDefaultValue: enabled: %ergebnis.allRules% + noPhpstanIgnore: + enabled: %ergebnis.allRules% noReturnByReference: enabled: %ergebnis.allRules% noSwitch: @@ -176,6 +180,9 @@ parametersSchema: noParameterWithNullDefaultValue: structure([ enabled: bool(), ]) + noPhpstanIgnore: structure([ + enabled: bool(), + ]) noReturnByReference: structure([ enabled: bool(), ]) @@ -238,6 +245,9 @@ services: - class: Ergebnis\PHPStan\Rules\Files\DeclareStrictTypesRule + - + class: Ergebnis\PHPStan\Rules\Files\NoPhpstanIgnoreRule + - class: Ergebnis\PHPStan\Rules\Functions\NoNullableReturnTypeDeclarationRule diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Analyzer.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Analyzer.php index 938cab7..996aea2 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Analyzer.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Analyzer.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/CallLikes/NoNamedArgumentRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/CallLikes/NoNamedArgumentRule.php index a87bbaf..d76397e 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/CallLikes/NoNamedArgumentRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/CallLikes/NoNamedArgumentRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ClassName.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ClassName.php index e62b908..1aa116f 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ClassName.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ClassName.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/FinalRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/FinalRule.php index 05a9f3c..7deed48 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/FinalRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/FinalRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/NoExtendsRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/NoExtendsRule.php index 4d4864e..7674298 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/NoExtendsRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/NoExtendsRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php index 4b6d479..7c1ee57 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Classes/PHPUnit/Framework/TestCaseWithSuffixRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoNullableReturnTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoNullableReturnTypeDeclarationRule.php index 6435157..cca6f29 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoNullableReturnTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoNullableReturnTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterPassedByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterPassedByReferenceRule.php index 2c47cb7..7a5027e 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterPassedByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterPassedByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullDefaultValueRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullDefaultValueRule.php index 94bd146..0982f9e 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullDefaultValueRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullDefaultValueRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullableTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullableTypeDeclarationRule.php index 3cff6ee..b314519 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullableTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Closures/NoParameterWithNullableTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ErrorIdentifier.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ErrorIdentifier.php index 3435c19..8f9d6f6 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ErrorIdentifier.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/ErrorIdentifier.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. @@ -110,6 +110,11 @@ public static function noNullableReturnTypeDeclaration(): self return new self('noNullableReturnTypeDeclaration'); } + public static function noPhpstanIgnore(): self + { + return new self('noPhpstanIgnore'); + } + public static function noReturnByReference(): self { return new self('noReturnByReference'); diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoAssignByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoAssignByReferenceRule.php index ad8cc1e..9f1f09c 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoAssignByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoAssignByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoCompactRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoCompactRule.php index cd12ffe..0374f3a 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoCompactRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoCompactRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoErrorSuppressionRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoErrorSuppressionRule.php index 49c0939..3640166 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoErrorSuppressionRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoErrorSuppressionRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoEvalRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoEvalRule.php index b542057..3cc858a 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoEvalRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoEvalRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoIssetRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoIssetRule.php index f1443d6..3b78517 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoIssetRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Expressions/NoIssetRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/DeclareStrictTypesRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/DeclareStrictTypesRule.php index 5f9ec11..e62a854 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/DeclareStrictTypesRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/DeclareStrictTypesRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/NoPhpstanIgnoreRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/NoPhpstanIgnoreRule.php new file mode 100644 index 0000000..28ba7e7 --- /dev/null +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Files/NoPhpstanIgnoreRule.php @@ -0,0 +1,70 @@ + + */ +final class NoPhpstanIgnoreRule implements Rules\Rule +{ + public function getNodeType(): string + { + return FileNode::class; + } + + public function processNode( + Node $node, + Analyser\Scope $scope + ): array { + $nodeFinder = new NodeFinder(); + + $foundNodes = $nodeFinder->find($node->getNodes(), static function (Node $node): bool { + return true; + }); + + $errors = []; + + foreach ($foundNodes as $foundNode) { + foreach ($foundNode->getComments() as $comment) { + foreach (\explode("\n", $comment->getText()) as $index => $line) { + if (0 === \preg_match('/@phpstan-ignore(-line|-next-line)?(?=\s|$|,)/', $line, $matches)) { + continue; + } + + $tag = $matches[0]; + + $message = \sprintf( + 'Errors reported by phpstan/phpstan should not be ignored via "%s", fix the error or use the baseline instead.', + $tag, + ); + + $errors[] = Rules\RuleErrorBuilder::message($message) + ->identifier(ErrorIdentifier::noPhpstanIgnore()->toString()) + ->line($comment->getStartLine() + $index) + ->nonIgnorable() + ->build(); + } + } + } + + return $errors; + } +} diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoNullableReturnTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoNullableReturnTypeDeclarationRule.php index 06da4f7..32c4f2e 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoNullableReturnTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoNullableReturnTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterPassedByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterPassedByReferenceRule.php index e461aa1..e36f07f 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterPassedByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterPassedByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullDefaultValueRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullDefaultValueRule.php index fe82a4e..f22c006 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullDefaultValueRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullDefaultValueRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullableTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullableTypeDeclarationRule.php index 9027553..92a8ae5 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullableTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoParameterWithNullableTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoReturnByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoReturnByReferenceRule.php index 0efb700..2c621e0 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoReturnByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Functions/NoReturnByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HasContent.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HasContent.php index ced8177..c37afe8 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HasContent.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HasContent.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HookMethod.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HookMethod.php index 2d14cad..b944e5e 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HookMethod.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/HookMethod.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Invocation.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Invocation.php index 722ff5f..3afcc9f 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Invocation.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Invocation.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/MethodName.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/MethodName.php index 47116ce..597a586 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/MethodName.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/MethodName.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/FinalInAbstractClassRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/FinalInAbstractClassRule.php index 271870a..9c9e6fa 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/FinalInAbstractClassRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/FinalInAbstractClassRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/InvokeParentHookMethodRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/InvokeParentHookMethodRule.php index 888aa92..041858d 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/InvokeParentHookMethodRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/InvokeParentHookMethodRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoConstructorParameterWithDefaultValueRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoConstructorParameterWithDefaultValueRule.php index e8b7e34..9315474 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoConstructorParameterWithDefaultValueRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoConstructorParameterWithDefaultValueRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoNullableReturnTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoNullableReturnTypeDeclarationRule.php index e0e84c9..facc9fc 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoNullableReturnTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoNullableReturnTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterPassedByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterPassedByReferenceRule.php index 4c90f69..e50a0ef 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterPassedByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterPassedByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithContainerTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithContainerTypeDeclarationRule.php index f64a831..cfd88cf 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithContainerTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithContainerTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullDefaultValueRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullDefaultValueRule.php index 9888974..5a100a1 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullDefaultValueRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullDefaultValueRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullableTypeDeclarationRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullableTypeDeclarationRule.php index 632cd7b..73d714d 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullableTypeDeclarationRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoParameterWithNullableTypeDeclarationRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoReturnByReferenceRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoReturnByReferenceRule.php index a1bf87f..11ecbcd 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoReturnByReferenceRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/NoReturnByReferenceRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/PrivateInFinalClassRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/PrivateInFinalClassRule.php index 9aa2c3c..91fa562 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/PrivateInFinalClassRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Methods/PrivateInFinalClassRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Statements/NoSwitchRule.php b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Statements/NoSwitchRule.php index 127e5ee..38461f5 100644 --- a/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Statements/NoSwitchRule.php +++ b/tools/.phpstan/vendor/ergebnis/phpstan-rules/src/Statements/NoSwitchRule.php @@ -3,7 +3,7 @@ declare(strict_types=1); /** - * Copyright (c) 2018-2025 Andreas Möller + * Copyright (c) 2018-2026 Andreas Möller * * For the full copyright and license information, please view * the LICENSE.md file that was distributed with this source code. diff --git a/tools/.phpstan/vendor/nette/utils/composer.json b/tools/.phpstan/vendor/nette/utils/composer.json index 6f6db4a..8076d74 100644 --- a/tools/.phpstan/vendor/nette/utils/composer.json +++ b/tools/.phpstan/vendor/nette/utils/composer.json @@ -20,7 +20,7 @@ "require-dev": { "nette/tester": "^2.5", "tracy/tracy": "^2.9", - "phpstan/phpstan-nette": "^2.0@stable", + "phpstan/phpstan": "^2.0@stable", "jetbrains/phpstorm-attributes": "^1.2" }, "conflict": { diff --git a/tools/.phpstan/vendor/nette/utils/src/HtmlStringable.php b/tools/.phpstan/vendor/nette/utils/src/HtmlStringable.php index d749d4e..cdd0bbd 100644 --- a/tools/.phpstan/vendor/nette/utils/src/HtmlStringable.php +++ b/tools/.phpstan/vendor/nette/utils/src/HtmlStringable.php @@ -10,10 +10,13 @@ namespace Nette; +/** + * Represents object convertible to HTML string. + */ interface HtmlStringable { /** - * Returns string in HTML format + * Returns string in HTML format. */ function __toString(): string; } diff --git a/tools/.phpstan/vendor/nette/utils/src/Iterators/CachingIterator.php b/tools/.phpstan/vendor/nette/utils/src/Iterators/CachingIterator.php index bf6ef85..1be69e6 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Iterators/CachingIterator.php +++ b/tools/.phpstan/vendor/nette/utils/src/Iterators/CachingIterator.php @@ -13,8 +13,11 @@ /** - * Smarter caching iterator. + * Enhanced caching iterator with first/last/counter tracking. * + * @template TKey + * @template TValue + * @extends \CachingIterator> * @property-read bool $first * @property-read bool $last * @property-read bool $empty @@ -31,6 +34,9 @@ class CachingIterator extends \CachingIterator implements \Countable private int $counter = 0; + /** + * @param iterable|\stdClass $iterable + */ public function __construct(iterable|\stdClass $iterable) { $iterable = $iterable instanceof \stdClass @@ -58,45 +64,30 @@ public function isLast(?int $gridWidth = null): bool } - /** - * Is the iterator empty? - */ public function isEmpty(): bool { return $this->counter === 0; } - /** - * Is the counter odd? - */ public function isOdd(): bool { return $this->counter % 2 === 1; } - /** - * Is the counter even? - */ public function isEven(): bool { return $this->counter % 2 === 0; } - /** - * Returns the counter. - */ public function getCounter(): int { return $this->counter; } - /** - * Returns the count of elements. - */ public function count(): int { $inner = $this->getInnerIterator(); @@ -131,18 +122,12 @@ public function rewind(): void } - /** - * Returns the next key. - */ public function getNextKey(): mixed { return $this->getInnerIterator()->key(); } - /** - * Returns the next element. - */ public function getNextValue(): mixed { return $this->getInnerIterator()->current(); diff --git a/tools/.phpstan/vendor/nette/utils/src/Iterators/Mapper.php b/tools/.phpstan/vendor/nette/utils/src/Iterators/Mapper.php index 284da29..94a4722 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Iterators/Mapper.php +++ b/tools/.phpstan/vendor/nette/utils/src/Iterators/Mapper.php @@ -15,14 +15,13 @@ */ class Mapper extends \IteratorIterator { - /** @var callable */ - private $callback; + private \Closure $callback; public function __construct(\Traversable $iterator, callable $callback) { parent::__construct($iterator); - $this->callback = $callback; + $this->callback = $callback(...); } diff --git a/tools/.phpstan/vendor/nette/utils/src/SmartObject.php b/tools/.phpstan/vendor/nette/utils/src/SmartObject.php index 3b2203f..a102979 100644 --- a/tools/.phpstan/vendor/nette/utils/src/SmartObject.php +++ b/tools/.phpstan/vendor/nette/utils/src/SmartObject.php @@ -22,6 +22,7 @@ trait SmartObject { /** + * @param list $args * @return mixed * @throws MemberAccessException */ @@ -47,6 +48,8 @@ public function __call(string $name, array $args) /** + * @param list $args + * @return never * @throws MemberAccessException */ public static function __callStatic(string $name, array $args) diff --git a/tools/.phpstan/vendor/nette/utils/src/StaticClass.php b/tools/.phpstan/vendor/nette/utils/src/StaticClass.php index 46b2786..0364cf9 100644 --- a/tools/.phpstan/vendor/nette/utils/src/StaticClass.php +++ b/tools/.phpstan/vendor/nette/utils/src/StaticClass.php @@ -11,7 +11,7 @@ /** - * Static class. + * Prevents instantiation. */ trait StaticClass { diff --git a/tools/.phpstan/vendor/nette/utils/src/Translator.php b/tools/.phpstan/vendor/nette/utils/src/Translator.php index f973f5f..16afdc6 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Translator.php +++ b/tools/.phpstan/vendor/nette/utils/src/Translator.php @@ -11,7 +11,7 @@ /** - * Translator adapter. + * Translation provider. */ interface Translator { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayHash.php b/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayHash.php index c83b84f..69473fb 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayHash.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayHash.php @@ -14,7 +14,7 @@ /** - * Provides objects to work as array. + * Array-like object with property access. * @template T * @implements \IteratorAggregate * @implements \ArrayAccess @@ -39,7 +39,6 @@ public static function from(array $array, bool $recursive = true): static /** - * Returns an iterator over all items. * @return \Iterator */ public function &getIterator(): \Iterator @@ -50,9 +49,6 @@ public function &getIterator(): \Iterator } - /** - * Returns items count. - */ public function count(): int { return count((array) $this); diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayList.php b/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayList.php index 98a5082..3e5d4f3 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayList.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/ArrayList.php @@ -14,13 +14,14 @@ /** - * Provides the base class for a generic list (items can be accessed by index). + * Generic list with integer indices. * @template T * @implements \IteratorAggregate * @implements \ArrayAccess */ class ArrayList implements \ArrayAccess, \Countable, \IteratorAggregate { + /** @var list */ private array $list = []; @@ -41,7 +42,6 @@ public static function from(array $array): static /** - * Returns an iterator over all items. * @return \Iterator */ public function &getIterator(): \Iterator @@ -52,9 +52,6 @@ public function &getIterator(): \Iterator } - /** - * Returns items count. - */ public function count(): int { return count($this->list); @@ -63,7 +60,7 @@ public function count(): int /** * Replaces or appends an item. - * @param int|null $index + * @param ?int $index * @param T $value * @throws Nette\OutOfRangeException */ diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Arrays.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Arrays.php index 986118c..fe72796 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Arrays.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Arrays.php @@ -79,7 +79,7 @@ public static function &getRef(array &$array, string|int|array $key): mixed * @template T2 * @param array $array1 * @param array $array2 - * @return array + * @return array> */ public static function mergeTree(array $array1, array $array2): array { @@ -96,6 +96,7 @@ public static function mergeTree(array $array1, array $array2): array /** * Returns zero-indexed position of given array key. Returns null if key is not found. + * @param array $array */ public static function getKeyOffset(array $array, string|int $key): ?int { @@ -104,9 +105,10 @@ public static function getKeyOffset(array $array, string|int $key): ?int /** + * @param array $array * @deprecated use getKeyOffset() */ - public static function searchKey(array $array, $key): ?int + public static function searchKey(array $array, string|int $key): ?int { return self::getKeyOffset($array, $key); } @@ -114,10 +116,11 @@ public static function searchKey(array $array, $key): ?int /** * Tests an array for the presence of value. + * @param array $array */ public static function contains(array $array, mixed $value): bool { - return in_array($value, $array, true); + return in_array($value, $array, strict: true); } @@ -127,6 +130,7 @@ public static function contains(array $array, mixed $value): bool * @template V * @param array $array * @param ?callable(V, K, array): bool $predicate + * @param ?callable(): V $else * @return ?V */ public static function first(array $array, ?callable $predicate = null, ?callable $else = null): mixed @@ -144,6 +148,7 @@ public static function first(array $array, ?callable $predicate = null, ?callabl * @template V * @param array $array * @param ?callable(V, K, array): bool $predicate + * @param ?callable(): V $else * @return ?V */ public static function last(array $array, ?callable $predicate = null, ?callable $else = null): mixed @@ -196,6 +201,8 @@ public static function lastKey(array $array, ?callable $predicate = null): int|s /** * Inserts the contents of the $inserted array into the $array immediately after the $key. * If $key is null (or does not exist), it is inserted at the beginning. + * @param array $array + * @param array $inserted */ public static function insertBefore(array &$array, string|int|null $key, array $inserted): void { @@ -209,6 +216,8 @@ public static function insertBefore(array &$array, string|int|null $key, array $ /** * Inserts the contents of the $inserted array into the $array before the $key. * If $key is null (or does not exist), it is inserted at the end. + * @param array $array + * @param array $inserted */ public static function insertAfter(array &$array, string|int|null $key, array $inserted): void { @@ -224,6 +233,7 @@ public static function insertAfter(array &$array, string|int|null $key, array $i /** * Renames key in array. + * @param array $array */ public static function renameKey(array &$array, string|int $oldKey, string|int $newKey): bool { @@ -260,6 +270,8 @@ public static function grep( /** * Transforms multidimensional array to flat array. + * @param array $array + * @return array */ public static function flatten(array $array, bool $preserveKeys = false): array { @@ -284,7 +296,9 @@ public static function isList(mixed $value): bool /** * Reformats table to associative tree. Path looks like 'field|field[]field->field=field'. - * @param string|string[] $path + * @param array $array + * @param string|list $path + * @return array|\stdClass */ public static function associate(array $array, $path): array|\stdClass { @@ -293,7 +307,7 @@ public static function associate(array $array, $path): array|\stdClass : preg_split('#(\[\]|->|=|\|)#', $path, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); if (!$parts || $parts === ['->'] || $parts[0] === '=' || $parts[0] === '|') { - throw new Nette\InvalidArgumentException("Invalid path '$path'."); + throw new Nette\InvalidArgumentException("Invalid path '" . (is_array($path) ? implode('', $path) : $path) . "'."); } $res = $parts[0] === '->' ? new \stdClass : []; @@ -338,6 +352,8 @@ public static function associate(array $array, $path): array|\stdClass /** * Normalizes array to associative array. Replace numeric keys with their values, the new value will be $filling. + * @param array $array + * @return array */ public static function normalize(array $array, mixed $filling = null): array { @@ -480,9 +496,11 @@ public static function mapWithKeys(array $array, callable $transformer): array /** * Invokes all callbacks and returns array of results. - * @param callable[] $callbacks + * @param iterable $callbacks + * @param mixed ...$args + * @return array */ - public static function invoke(iterable $callbacks, ...$args): array + public static function invoke(iterable $callbacks, mixed ...$args): array { $res = []; foreach ($callbacks as $k => $cb) { @@ -496,8 +514,10 @@ public static function invoke(iterable $callbacks, ...$args): array /** * Invokes method on every object in an array and returns array of results. * @param object[] $objects + * @param mixed ...$args + * @return array */ - public static function invokeMethod(iterable $objects, string $method, ...$args): array + public static function invokeMethod(iterable $objects, string $method, mixed ...$args): array { $res = []; foreach ($objects as $k => $obj) { @@ -511,6 +531,7 @@ public static function invokeMethod(iterable $objects, string $method, ...$args) /** * Copies the elements of the $array array to the $object object and then returns it. * @template T of object + * @param iterable $array * @param T $object * @return T */ diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Callback.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Callback.php index 7d384f2..fe89b1e 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Callback.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Callback.php @@ -22,6 +22,8 @@ final class Callback /** * Invokes internal PHP function with own error handler. + * @param list $args + * @param callable(string, int): ?bool $onError */ public static function invokeSafe(string $function, array $args, callable $onError): mixed { @@ -50,10 +52,10 @@ public static function invokeSafe(string $function, array $args, callable $onErr /** * Checks that $callable is valid PHP callback. Otherwise throws exception. If the $syntax is set to true, only verifies * that $callable has a valid structure to be used as a callback, but does not verify if the class or method actually exists. - * @return callable + * @return callable(): mixed * @throws Nette\InvalidArgumentException */ - public static function check(mixed $callable, bool $syntax = false) + public static function check(mixed $callable, bool $syntax = false): mixed { if (!is_callable($callable, $syntax)) { throw new Nette\InvalidArgumentException( @@ -84,7 +86,7 @@ public static function toString(mixed $callable): string /** * Returns reflection for method or function used in PHP callback. - * @param callable $callable type check is escalated to ReflectionException + * @param callable(): mixed $callable type check is escalated to ReflectionException * @throws \ReflectionException if callback is not valid */ public static function toReflection($callable): \ReflectionMethod|\ReflectionFunction @@ -107,6 +109,7 @@ public static function toReflection($callable): \ReflectionMethod|\ReflectionFun /** * Checks whether PHP callback is function or static method. + * @param callable(): mixed $callable */ public static function isStatic(callable $callable): bool { @@ -116,6 +119,8 @@ public static function isStatic(callable $callable): bool /** * Unwraps closure created by Closure::fromCallable(). + * @param \Closure(): mixed $closure + * @return \Closure|array{object|class-string, string}|callable-string */ public static function unwrap(\Closure $closure): callable|array { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/DateTime.php b/tools/.phpstan/vendor/nette/utils/src/Utils/DateTime.php index 6191223..5957376 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/DateTime.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/DateTime.php @@ -142,7 +142,7 @@ public static function relativeToSeconds(string $relativeTime): int } - private function apply(string $datetime, $timezone = null, bool $ctr = false): void + private function apply(string $datetime, \DateTimeZone|string|null $timezone = null, bool $ctr = false): void { $relPart = ''; $absPart = preg_replace_callback( diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/FileInfo.php b/tools/.phpstan/vendor/nette/utils/src/Utils/FileInfo.php index 59dd722..24e582e 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/FileInfo.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/FileInfo.php @@ -19,14 +19,12 @@ */ final class FileInfo extends \SplFileInfo { - private readonly string $relativePath; - - - public function __construct(string $file, string $relativePath = '') - { + public function __construct( + string $file, + private readonly string $relativePath = '', + ) { parent::__construct($file); - $this->setInfoClass(static::class); - $this->relativePath = $relativePath; + $this->setInfoClass(self::class); } diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Finder.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Finder.php index 2f5f7d1..1ca4ffb 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Finder.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Finder.php @@ -32,24 +32,25 @@ class Finder implements \IteratorAggregate /** @var string[] */ private array $in = []; - /** @var \Closure[] */ + /** @var array<\Closure(FileInfo): bool> */ private array $filters = []; - /** @var \Closure[] */ + /** @var array<\Closure(FileInfo): bool> */ private array $descentFilters = []; /** @var array */ private array $appends = []; private bool $childFirst = false; - /** @var ?callable */ - private $sort; + /** @var ?(\Closure(FileInfo, FileInfo): int) */ + private ?\Closure $sort = null; private int $maxDepth = -1; private bool $ignoreUnreadableDirs = true; /** * Begins search for files and directories matching mask. + * @param string|list $masks */ public static function find(string|array $masks = ['*']): static { @@ -60,6 +61,7 @@ public static function find(string|array $masks = ['*']): static /** * Begins search for files matching mask. + * @param string|list $masks */ public static function findFiles(string|array $masks = ['*']): static { @@ -70,6 +72,7 @@ public static function findFiles(string|array $masks = ['*']): static /** * Begins search for directories matching mask. + * @param string|list $masks */ public static function findDirectories(string|array $masks = ['*']): static { @@ -80,6 +83,7 @@ public static function findDirectories(string|array $masks = ['*']): static /** * Finds files matching the specified masks. + * @param string|list $masks */ public function files(string|array $masks = ['*']): static { @@ -89,6 +93,7 @@ public function files(string|array $masks = ['*']): static /** * Finds directories matching the specified masks. + * @param string|list $masks */ public function directories(string|array $masks = ['*']): static { @@ -96,6 +101,7 @@ public function directories(string|array $masks = ['*']): static } + /** @param list $masks */ private function addMask(array $masks, string $mode): static { foreach ($masks as $mask) { @@ -117,6 +123,7 @@ private function addMask(array $masks, string $mode): static /** * Searches in the given directories. Wildcards are allowed. + * @param string|list $paths */ public function in(string|array $paths): static { @@ -128,6 +135,7 @@ public function in(string|array $paths): static /** * Searches recursively from the given directories. Wildcards are allowed. + * @param string|list $paths */ public function from(string|array $paths): static { @@ -137,6 +145,7 @@ public function from(string|array $paths): static } + /** @param list $paths */ private function addLocation(array $paths, string $ext): void { foreach ($paths as $path) { @@ -175,7 +184,7 @@ public function ignoreUnreadableDirs(bool $state = true): static */ public function sortBy(callable $callback): static { - $this->sort = $callback; + $this->sort = $callback(...); return $this; } @@ -192,6 +201,7 @@ public function sortByName(): static /** * Adds the specified paths or appends a new finder that returns. + * @param string|list|null $paths */ public function append(string|array|null $paths = null): static { @@ -209,6 +219,7 @@ public function append(string|array|null $paths = null): static /** * Skips entries that matches the given masks relative to the ones defined with the in() or from() methods. + * @param string|list $masks */ public function exclude(string|array $masks): static { @@ -239,7 +250,7 @@ public function exclude(string|array $masks): static */ public function filter(callable $callback): static { - $this->filters[] = \Closure::fromCallable($callback); + $this->filters[] = $callback(...); return $this; } @@ -250,7 +261,7 @@ public function filter(callable $callback): static */ public function descentFilter(callable $callback): static { - $this->descentFilters[] = \Closure::fromCallable($callback); + $this->descentFilters[] = $callback(...); return $this; } @@ -277,7 +288,7 @@ public function size(string $operator, ?int $size = null): static [, $operator, $size, $unit] = $matches; $units = ['' => 1, 'k' => 1e3, 'm' => 1e6, 'g' => 1e9]; - $size *= $units[strtolower($unit)]; + $size = (float) $size * $units[strtolower($unit)]; $operator = $operator ?: '='; } @@ -401,6 +412,7 @@ private function traverseDir(string $dir, array $searches, array $subdirs = []): } + /** @param iterable $pathNames */ private function convertToFiles(iterable $pathNames, string $relativePath, bool $absolute): \Generator { foreach ($pathNames as $pathName) { @@ -413,6 +425,10 @@ private function convertToFiles(iterable $pathNames, string $relativePath, bool } + /** + * @param (\Closure(FileInfo): bool)[] $filters + * @param array $cache + */ private function proveFilters(array $filters, FileInfo $file, array &$cache): bool { foreach ($filters as $filter) { @@ -468,6 +484,7 @@ private function buildPlan(): array /** * Since glob() does not know ** wildcard, we divide the path into a part for glob and a part for manual traversal. + * @return array{string, string, bool} */ private static function splitRecursivePart(string $path): array { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Helpers.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Helpers.php index c7d7894..afdbad6 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Helpers.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Helpers.php @@ -14,6 +14,9 @@ use const PHP_OS_FAMILY; +/** + * Miscellaneous utilities. + */ class Helpers { public const IsWindows = PHP_OS_FAMILY === 'Windows'; @@ -21,6 +24,7 @@ class Helpers /** * Executes a callback and returns the captured output as a string. + * @param callable(): void $func */ public static function capture(callable $func): string { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Html.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Html.php index de24a96..87180a1 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Html.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Html.php @@ -17,113 +17,113 @@ /** * HTML helper. * - * @property string|null $accept - * @property string|null $accesskey - * @property string|null $action - * @property string|null $align - * @property string|null $allow - * @property string|null $alt - * @property bool|null $async - * @property string|null $autocapitalize - * @property string|null $autocomplete - * @property bool|null $autofocus - * @property bool|null $autoplay - * @property string|null $charset - * @property bool|null $checked - * @property string|null $cite - * @property string|null $class - * @property int|null $cols - * @property int|null $colspan - * @property string|null $content - * @property bool|null $contenteditable - * @property bool|null $controls - * @property string|null $coords - * @property string|null $crossorigin - * @property string|null $data - * @property string|null $datetime - * @property string|null $decoding - * @property bool|null $default - * @property bool|null $defer - * @property string|null $dir - * @property string|null $dirname - * @property bool|null $disabled - * @property bool|null $download - * @property string|null $draggable - * @property string|null $dropzone - * @property string|null $enctype - * @property string|null $for - * @property string|null $form - * @property string|null $formaction - * @property string|null $formenctype - * @property string|null $formmethod - * @property bool|null $formnovalidate - * @property string|null $formtarget - * @property string|null $headers - * @property int|null $height - * @property bool|null $hidden - * @property float|null $high - * @property string|null $href - * @property string|null $hreflang - * @property string|null $id - * @property string|null $integrity - * @property string|null $inputmode - * @property bool|null $ismap - * @property string|null $itemprop - * @property string|null $kind - * @property string|null $label - * @property string|null $lang - * @property string|null $list - * @property bool|null $loop - * @property float|null $low - * @property float|null $max - * @property int|null $maxlength - * @property int|null $minlength - * @property string|null $media - * @property string|null $method - * @property float|null $min - * @property bool|null $multiple - * @property bool|null $muted - * @property string|null $name - * @property bool|null $novalidate - * @property bool|null $open - * @property float|null $optimum - * @property string|null $pattern - * @property string|null $ping - * @property string|null $placeholder - * @property string|null $poster - * @property string|null $preload - * @property string|null $radiogroup - * @property bool|null $readonly - * @property string|null $rel - * @property bool|null $required - * @property bool|null $reversed - * @property int|null $rows - * @property int|null $rowspan - * @property string|null $sandbox - * @property string|null $scope - * @property bool|null $selected - * @property string|null $shape - * @property int|null $size - * @property string|null $sizes - * @property string|null $slot - * @property int|null $span - * @property string|null $spellcheck - * @property string|null $src - * @property string|null $srcdoc - * @property string|null $srclang - * @property string|null $srcset - * @property int|null $start - * @property float|null $step - * @property string|null $style - * @property int|null $tabindex - * @property string|null $target - * @property string|null $title - * @property string|null $translate - * @property string|null $type - * @property string|null $usemap - * @property string|null $value - * @property int|null $width - * @property string|null $wrap + * @property ?string $accept + * @property ?string $accesskey + * @property ?string $action + * @property ?string $align + * @property ?string $allow + * @property ?string $alt + * @property ?bool $async + * @property ?string $autocapitalize + * @property ?string $autocomplete + * @property ?bool $autofocus + * @property ?bool $autoplay + * @property ?string $charset + * @property ?bool $checked + * @property ?string $cite + * @property ?string $class + * @property ?int $cols + * @property ?int $colspan + * @property ?string $content + * @property ?bool $contenteditable + * @property ?bool $controls + * @property ?string $coords + * @property ?string $crossorigin + * @property ?string $data + * @property ?string $datetime + * @property ?string $decoding + * @property ?bool $default + * @property ?bool $defer + * @property ?string $dir + * @property ?string $dirname + * @property ?bool $disabled + * @property ?bool $download + * @property ?string $draggable + * @property ?string $dropzone + * @property ?string $enctype + * @property ?string $for + * @property ?string $form + * @property ?string $formaction + * @property ?string $formenctype + * @property ?string $formmethod + * @property ?bool $formnovalidate + * @property ?string $formtarget + * @property ?string $headers + * @property ?int $height + * @property ?bool $hidden + * @property ?float $high + * @property ?string $href + * @property ?string $hreflang + * @property ?string $id + * @property ?string $integrity + * @property ?string $inputmode + * @property ?bool $ismap + * @property ?string $itemprop + * @property ?string $kind + * @property ?string $label + * @property ?string $lang + * @property ?string $list + * @property ?bool $loop + * @property ?float $low + * @property ?float $max + * @property ?int $maxlength + * @property ?int $minlength + * @property ?string $media + * @property ?string $method + * @property ?float $min + * @property ?bool $multiple + * @property ?bool $muted + * @property ?string $name + * @property ?bool $novalidate + * @property ?bool $open + * @property ?float $optimum + * @property ?string $pattern + * @property ?string $ping + * @property ?string $placeholder + * @property ?string $poster + * @property ?string $preload + * @property ?string $radiogroup + * @property ?bool $readonly + * @property ?string $rel + * @property ?bool $required + * @property ?bool $reversed + * @property ?int $rows + * @property ?int $rowspan + * @property ?string $sandbox + * @property ?string $scope + * @property ?bool $selected + * @property ?string $shape + * @property ?int $size + * @property ?string $sizes + * @property ?string $slot + * @property ?int $span + * @property ?string $spellcheck + * @property ?string $src + * @property ?string $srcdoc + * @property ?string $srclang + * @property ?string $srcset + * @property ?int $start + * @property ?float $step + * @property ?string $style + * @property ?int $tabindex + * @property ?string $target + * @property ?string $title + * @property ?string $translate + * @property ?string $type + * @property ?string $usemap + * @property ?string $value + * @property ?int $width + * @property ?string $wrap * * @method self accept(?string $val) * @method self accesskey(?string $val, bool $state = null) @@ -230,20 +230,23 @@ * @method self value(?string $val) * @method self width(?int $val) * @method self wrap(?string $val) + * + * @implements \IteratorAggregate + * @implements \ArrayAccess */ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringable { /** @var array element's attributes */ public array $attrs = []; - /** void elements */ + /** @var array void elements */ public static array $emptyElements = [ 'img' => 1, 'hr' => 1, 'br' => 1, 'input' => 1, 'meta' => 1, 'area' => 1, 'embed' => 1, 'keygen' => 1, 'source' => 1, 'base' => 1, 'col' => 1, 'link' => 1, 'param' => 1, 'basefont' => 1, 'frame' => 1, 'isindex' => 1, 'wbr' => 1, 'command' => 1, 'track' => 1, ]; - /** @var array nodes */ + /** @var array nodes */ protected array $children = []; /** element's name */ @@ -254,7 +257,7 @@ class Html implements \ArrayAccess, \Countable, \IteratorAggregate, HtmlStringab /** * Constructs new HTML element. - * @param array|string $attrs element's attributes or plain text content + * @param array|string|null $attrs element's attributes or plain text content */ public static function el(?string $name = null, array|string|null $attrs = null): static { @@ -355,6 +358,7 @@ final public function isEmpty(): bool /** * Sets multiple attributes. + * @param array $attrs */ public function addAttributes(array $attrs): static { @@ -417,6 +421,7 @@ public function removeAttribute(string $name): static /** * Unsets element's attributes. + * @param list $attributes */ public function removeAttributes(array $attributes): static { @@ -466,6 +471,7 @@ final public function __unset(string $name): void /** * Overloaded setter for element's attribute. + * @param array $args */ final public function __call(string $m, array $args): mixed { @@ -496,6 +502,7 @@ final public function __call(string $m, array $args): mixed /** * Special setter for element's attribute. + * @param array $query */ final public function href(string $path, array $query = []): static { @@ -594,6 +601,7 @@ public function addText(\Stringable|string|int|null $text): static /** * Creates and adds a new Html child. + * @param array|string|null $attrs */ final public function create(string $name, array|string|null $attrs = null): static { @@ -621,7 +629,7 @@ public function insert(?int $index, HtmlStringable|string $child, bool $replace /** * Inserts (replaces) child node (\ArrayAccess implementation). - * @param int|null $index position or null for appending + * @param ?int $index position or null for appending * @param Html|string $child Html node or raw HTML string */ final public function offsetSet($index, $child): void @@ -634,7 +642,7 @@ final public function offsetSet($index, $child): void * Returns child node (\ArrayAccess implementation). * @param int $index */ - final public function offsetGet($index): HtmlStringable|string + final public function offsetGet($index): self|string { return $this->children[$index]; } @@ -682,7 +690,7 @@ public function removeChildren(): void /** * Iterates over elements. - * @return \ArrayIterator + * @return \ArrayIterator */ final public function getIterator(): \ArrayIterator { @@ -692,6 +700,7 @@ final public function getIterator(): \ArrayIterator /** * Returns all children. + * @return array */ final public function getChildren(): array { @@ -764,10 +773,6 @@ final public function endTag(): string */ final public function attributes(): string { - if (!is_array($this->attrs)) { - return ''; - } - $s = ''; $attrs = $this->attrs; foreach ($attrs as $key => $value) { @@ -780,7 +785,7 @@ final public function attributes(): string continue; } elseif (is_array($value)) { - if (strncmp($key, 'data-', 5) === 0) { + if (str_starts_with($key, 'data-')) { $value = Json::encode($value); } else { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Image.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Image.php index a6bb478..cb82df4 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Image.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Image.php @@ -24,7 +24,7 @@ * $image->send(); * * - * @method Image affine(array $affine, ?array $clip = null) + * @method Image affine(array $affine, ?array{x: int, y: int, width: int, height: int} $clip = null) * @method void alphaBlending(bool $enable) * @method void antialias(bool $enable) * @method void arc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color) @@ -41,51 +41,51 @@ * @method int colorResolve(int $red, int $green, int $blue) * @method int colorResolveAlpha(int $red, int $green, int $blue, int $alpha) * @method void colorSet(int $index, int $red, int $green, int $blue, int $alpha = 0) - * @method array colorsForIndex(int $color) + * @method array{red: int, green: int, blue: int, alpha: int} colorsForIndex(int $color) * @method int colorsTotal() * @method int colorTransparent(?int $color = null) - * @method void convolution(array $matrix, float $div, float $offset) + * @method void convolution(array> $matrix, float $div, float $offset) * @method void copy(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH) * @method void copyMerge(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) * @method void copyMergeGray(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $srcW, int $srcH, int $pct) * @method void copyResampled(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) * @method void copyResized(Image $src, int $dstX, int $dstY, int $srcX, int $srcY, int $dstW, int $dstH, int $srcW, int $srcH) - * @method Image cropAuto(int $mode = IMG_CROP_DEFAULT, float $threshold = .5, ?ImageColor $color = null) + * @method Image cropAuto(int $mode = 0, float $threshold = .5, ?ImageColor $color = null) * @method void ellipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) * @method void fill(int $x, int $y, ImageColor $color) * @method void filledArc(int $centerX, int $centerY, int $width, int $height, int $startAngle, int $endAngle, ImageColor $color, int $style) * @method void filledEllipse(int $centerX, int $centerY, int $width, int $height, ImageColor $color) - * @method void filledPolygon(array $points, ImageColor $color) + * @method void filledPolygon(array $points, ImageColor $color) * @method void filledRectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) * @method void fillToBorder(int $x, int $y, ImageColor $borderColor, ImageColor $color) * @method void filter(int $filter, ...$args) * @method void flip(int $mode) - * @method array ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options = []) + * @method array ftText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontFile, string $text, array $options = []) * @method void gammaCorrect(float $inputgamma, float $outputgamma) - * @method array getClip() + * @method array{int, int, int, int} getClip() * @method int getInterpolation() * @method int interlace(?bool $enable = null) * @method bool isTrueColor() * @method void layerEffect(int $effect) * @method void line(int $x1, int $y1, int $x2, int $y2, ImageColor $color) - * @method void openPolygon(array $points, ImageColor $color) + * @method void openPolygon(array $points, ImageColor $color) * @method void paletteCopy(Image $source) * @method void paletteToTrueColor() - * @method void polygon(array $points, ImageColor $color) + * @method void polygon(array $points, ImageColor $color) * @method void rectangle(int $x1, int $y1, int $x2, int $y2, ImageColor $color) * @method mixed resolution(?int $resolutionX = null, ?int $resolutionY = null) * @method Image rotate(float $angle, ImageColor $backgroundColor) * @method void saveAlpha(bool $enable) - * @method Image scale(int $newWidth, int $newHeight = -1, int $mode = IMG_BILINEAR_FIXED) + * @method Image scale(int $newWidth, int $newHeight = -1, int $mode = 3) * @method void setBrush(Image $brush) * @method void setClip(int $x1, int $y1, int $x2, int $y2) - * @method void setInterpolation(int $method = IMG_BILINEAR_FIXED) + * @method void setInterpolation(int $method = 3) * @method void setPixel(int $x, int $y, ImageColor $color) - * @method void setStyle(array $style) + * @method void setStyle(array $style) * @method void setThickness(int $thickness) * @method void setTile(Image $tile) * @method void trueColorToPalette(bool $dither, int $ncolors) - * @method array ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontfile, string $text, array $options = []) + * @method array ttfText(float $size, float $angle, int $x, int $y, ImageColor $color, string $fontfile, string $text, array $options = []) * @property-read positive-int $width * @property-read positive-int $height * @property-read \GdImage $imageResource @@ -146,6 +146,7 @@ class Image /** * Returns RGB color (0..255) and transparency (0..127). * @deprecated use ImageColor::rgb() + * @return array{red: int, green: int, blue: int, alpha: int} */ public static function rgb(int $red, int $green, int $blue, int $transparency = 0): array { @@ -213,6 +214,7 @@ private static function invokeSafe(string $func, string $arg, string $message, s * Creates a new true color image of the given dimensions. The default color is black. * @param positive-int $width * @param positive-int $height + * @param ImageColor|array{red: int, green: int, blue: int, alpha?: int}|null $color * @throws Nette\NotSupportedException if gd extension is not loaded */ public static function fromBlank(int $width, int $height, ImageColor|array|null $color = null): static @@ -224,9 +226,9 @@ public static function fromBlank(int $width, int $height, ImageColor|array|null $image = new static(imagecreatetruecolor($width, $height)); if ($color) { - $image->alphablending(false); - $image->filledrectangle(0, 0, $width - 1, $height - 1, $color); - $image->alphablending(true); + $image->alphaBlending(false); + $image->filledRectangle(0, 0, $width - 1, $height - 1, $color); + $image->alphaBlending(true); } return $image; @@ -235,9 +237,11 @@ public static function fromBlank(int $width, int $height, ImageColor|array|null /** * Returns the type of image from file. - * @return ImageType::*|null + * @param-out ?int $width + * @param-out ?int $height + * @return ?ImageType::* */ - public static function detectTypeFromFile(string $file, &$width = null, &$height = null): ?int + public static function detectTypeFromFile(string $file, mixed &$width = null, mixed &$height = null): ?int { [$width, $height, $type] = Helpers::falseToNull(@getimagesize($file)); // @ - files smaller than 12 bytes causes read error return $type && isset(self::Formats[$type]) ? $type : null; @@ -246,9 +250,11 @@ public static function detectTypeFromFile(string $file, &$width = null, &$height /** * Returns the type of image from string. - * @return ImageType::*|null + * @param-out ?int $width + * @param-out ?int $height + * @return ?ImageType::* */ - public static function detectTypeFromString(string $s, &$width = null, &$height = null): ?int + public static function detectTypeFromString(string $s, mixed &$width = null, mixed &$height = null): ?int { [$width, $height, $type] = Helpers::falseToNull(@getimagesizefromstring($s)); // @ - strings smaller than 12 bytes causes read error return $type && isset(self::Formats[$type]) ? $type : null; @@ -418,7 +424,10 @@ public function resize(int|string|null $width, int|string|null $height, int $mod /** * Calculates dimensions of resized image. Width and height accept pixels or percent. + * @param int|string|null $newWidth + * @param int|string|null $newHeight * @param int-mask-of $mode + * @return array{int, int} */ public static function calculateSize( int $srcWidth, @@ -506,6 +515,7 @@ public function crop(int|string $left, int|string $top, int|string $width, int|s /** * Calculates dimensions of cutout in image. Arguments accepts pixels or percent. + * @return array{int, int, int, int} */ public static function calculateCutout( int $srcWidth, @@ -626,6 +636,8 @@ public function place(self $image, int|string $left = 0, int|string $top = 0, in /** * Calculates the bounding box for a TrueType text. Returns keys left, top, width and height. + * @param array $options + * @return array{left: int, top: int, width: int, height: int} */ public static function calculateTextBox( string $text, @@ -670,7 +682,7 @@ public function filledRectangleWH(int $x, int $y, int $width, int $height, Image /** * Saves image to the file. Quality is in the range 0..100 for JPEG (default 85), WEBP (default 80) and AVIF (default 30) and 0..9 for PNG (default 9). - * @param ImageType::*|null $type + * @param ?ImageType::* $type * @throws ImageException */ public function save(string $file, ?int $quality = null, ?int $type = null): void @@ -746,6 +758,7 @@ private function output(int $type, ?int $quality, ?string $file = null): void /** * Call to undefined method. + * @param array $args * @throws Nette\MemberAccessException */ public function __call(string $name, array $args): mixed @@ -802,9 +815,12 @@ public function __serialize(): array } + /** + * @param ImageColor|array{red: int, green: int, blue: int, alpha?: int} $color + */ public function resolveColor(ImageColor|array $color): int { - $color = $color instanceof ImageColor ? $color->toRGBA() : array_values($color); + $color = $color instanceof ImageColor ? $color->toRGBA() : array_values($color + ['alpha' => 0]); return imagecolorallocatealpha($this->image, ...$color) ?: imagecolorresolvealpha($this->image, ...$color); } diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/ImageColor.php b/tools/.phpstan/vendor/nette/utils/src/Utils/ImageColor.php index 6696662..aae5f05 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/ImageColor.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/ImageColor.php @@ -64,6 +64,10 @@ private function __construct( } + /** + * Returns GD-compatible color array [R, G, B, alpha]. + * @return array{int, int, int, int} + */ public function toRGBA(): array { return [ diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Iterables.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Iterables.php index 28c9269..815a503 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Iterables.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Iterables.php @@ -22,6 +22,7 @@ final class Iterables /** * Tests for the presence of value. + * @param iterable $iterable */ public static function contains(iterable $iterable, mixed $value): bool { @@ -36,6 +37,7 @@ public static function contains(iterable $iterable, mixed $value): bool /** * Tests for the presence of key. + * @param iterable $iterable */ public static function containsKey(iterable $iterable, mixed $key): bool { @@ -54,6 +56,7 @@ public static function containsKey(iterable $iterable, mixed $key): bool * @template V * @param iterable $iterable * @param ?callable(V, K, iterable): bool $predicate + * @param ?callable(): V $else * @return ?V */ public static function first(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed @@ -73,6 +76,7 @@ public static function first(iterable $iterable, ?callable $predicate = null, ?c * @template V * @param iterable $iterable * @param ?callable(V, K, iterable): bool $predicate + * @param ?callable(): K $else * @return ?K */ public static function firstKey(iterable $iterable, ?callable $predicate = null, ?callable $else = null): mixed @@ -188,9 +192,9 @@ public static function mapWithKeys(iterable $iterable, callable $transformer): \ */ public static function repeatable(callable $factory): \IteratorAggregate { - return new class ($factory) implements \IteratorAggregate { + return new class ($factory(...)) implements \IteratorAggregate { public function __construct( - private $factory, + private \Closure $factory, ) { } @@ -215,7 +219,8 @@ public static function memoize(iterable $iterable): \IteratorAggregate { return new class (self::toIterator($iterable)) implements \IteratorAggregate { public function __construct( - private \Iterator $iterator, + private readonly \Iterator $iterator, + /** @var array */ private array $cache = [], ) { } diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Paginator.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Paginator.php index aa4812c..77e6886 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Paginator.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Paginator.php @@ -17,17 +17,17 @@ * * @property int $page * @property-read int $firstPage - * @property-read int|null $lastPage + * @property-read ?int $lastPage * @property-read int<0,max> $firstItemOnPage * @property-read int<0,max> $lastItemOnPage * @property int $base * @property-read bool $first * @property-read bool $last - * @property-read int<0,max>|null $pageCount + * @property-read ?int<0,max> $pageCount * @property positive-int $itemsPerPage - * @property int<0,max>|null $itemCount + * @property ?int<0,max> $itemCount * @property-read int<0,max> $offset - * @property-read int<0,max>|null $countdownOffset + * @property-read ?int<0,max> $countdownOffset * @property-read int<0,max> $length */ class Paginator @@ -41,13 +41,10 @@ class Paginator private int $page = 1; - /** @var int<0, max>|null */ + /** @var ?int<0, max> */ private ?int $itemCount = null; - /** - * Sets current page number. - */ public function setPage(int $page): static { $this->page = $page; @@ -55,27 +52,18 @@ public function setPage(int $page): static } - /** - * Returns current page number. - */ public function getPage(): int { return $this->base + $this->getPageIndex(); } - /** - * Returns first page number. - */ public function getFirstPage(): int { return $this->base; } - /** - * Returns last page number. - */ public function getLastPage(): ?int { return $this->itemCount === null @@ -106,9 +94,6 @@ public function getLastItemOnPage(): int } - /** - * Sets first page (base) number. - */ public function setBase(int $base): static { $this->base = $base; @@ -116,9 +101,6 @@ public function setBase(int $base): static } - /** - * Returns first page (base) number. - */ public function getBase(): int { return $this->base; @@ -138,18 +120,12 @@ protected function getPageIndex(): int } - /** - * Is the current page the first one? - */ public function isFirst(): bool { return $this->getPageIndex() === 0; } - /** - * Is the current page the last one? - */ public function isLast(): bool { return $this->itemCount === null @@ -159,8 +135,7 @@ public function isLast(): bool /** - * Returns the total number of pages. - * @return int<0, max>|null + * @return ?int<0, max> */ public function getPageCount(): ?int { @@ -170,9 +145,6 @@ public function getPageCount(): ?int } - /** - * Sets the number of items to display on a single page. - */ public function setItemsPerPage(int $itemsPerPage): static { $this->itemsPerPage = max(1, $itemsPerPage); @@ -181,7 +153,6 @@ public function setItemsPerPage(int $itemsPerPage): static /** - * Returns the number of items to display on a single page. * @return positive-int */ public function getItemsPerPage(): int @@ -190,9 +161,6 @@ public function getItemsPerPage(): int } - /** - * Sets the total number of items. - */ public function setItemCount(?int $itemCount = null): static { $this->itemCount = $itemCount === null ? null : max(0, $itemCount); @@ -201,8 +169,7 @@ public function setItemCount(?int $itemCount = null): static /** - * Returns the total number of items. - * @return int<0, max>|null + * @return ?int<0, max> */ public function getItemCount(): ?int { @@ -222,7 +189,7 @@ public function getOffset(): int /** * Returns the absolute index of the first item on current page in countdown paging. - * @return int<0, max>|null + * @return ?int<0, max> */ public function getCountdownOffset(): ?int { diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Reflection.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Reflection.php index 0220984..f4bb54a 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Reflection.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Reflection.php @@ -68,6 +68,7 @@ public static function getParameterDefaultValue(\ReflectionParameter $param): mi /** * Returns a reflection of a class or trait that contains a declaration of given property. Property can also be declared in the trait. + * @return \ReflectionClass */ public static function getPropertyDeclaringClass(\ReflectionProperty $prop): \ReflectionClass { @@ -151,6 +152,7 @@ public static function toString(\Reflector $ref): string /** * Expands the name of the class to full name in the given context of given class. * Thus, it returns how the PHP parser would understand $name if it were written in the body of the class $context. + * @param \ReflectionClass $context * @throws Nette\InvalidArgumentException */ public static function expandClassName(string $name, \ReflectionClass $context): string @@ -189,7 +191,10 @@ public static function expandClassName(string $name, \ReflectionClass $context): } - /** @return array of [alias => class] */ + /** + * @param \ReflectionClass $class + * @return array of [alias => class] + */ public static function getUseStatements(\ReflectionClass $class): array { if ($class->isAnonymous()) { @@ -212,6 +217,7 @@ public static function getUseStatements(\ReflectionClass $class): array /** * Parses PHP code to [class => [alias => class, ...]] + * @return array> */ private static function parseUseStatements(string $code, ?string $forClass = null): array { @@ -301,6 +307,10 @@ private static function parseUseStatements(string $code, ?string $forClass = nul } + /** + * @param \PhpToken[] $tokens + * @param string|int|int[] $take + */ private static function fetch(array &$tokens, string|int|array $take): ?string { $res = null; diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/ReflectionMethod.php b/tools/.phpstan/vendor/nette/utils/src/Utils/ReflectionMethod.php index 2a8a55c..f2abdcf 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/ReflectionMethod.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/ReflectionMethod.php @@ -18,7 +18,8 @@ */ final class ReflectionMethod extends \ReflectionMethod { - private \ReflectionClass $originalClass; + /** @var \ReflectionClass */ + private readonly \ReflectionClass $originalClass; public function __construct(object|string $objectOrMethod, ?string $method = null) @@ -31,6 +32,7 @@ public function __construct(object|string $objectOrMethod, ?string $method = nul } + /** @return \ReflectionClass */ public function getOriginalClass(): \ReflectionClass { return $this->originalClass; diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Strings.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Strings.php index eb44b48..e5990a7 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Strings.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Strings.php @@ -135,7 +135,7 @@ public static function substring(string $s, int $start, ?int $length = null): st public static function normalize(string $s): string { // convert to compressed normal form (NFC) - if (class_exists('Normalizer', false) && ($n = \Normalizer::normalize($s, \Normalizer::FORM_C)) !== false) { + if (class_exists('Normalizer', autoload: false) && ($n = \Normalizer::normalize($s, \Normalizer::FORM_C)) !== false) { $s = $n; } @@ -323,7 +323,7 @@ public static function capitalize(string $s): string */ public static function compare(string $left, string $right, ?int $length = null): bool { - if (class_exists('Normalizer', false)) { + if (class_exists('Normalizer', autoload: false)) { $left = \Normalizer::normalize($left, \Normalizer::FORM_D); // form NFD is faster $right = \Normalizer::normalize($right, \Normalizer::FORM_D); // form NFD is faster } @@ -499,6 +499,7 @@ private static function pos(string $haystack, string $needle, int $nth = 1): ?in /** * Divides the string into arrays according to the regular expression. Expressions in parentheses will be captured and returned as well. + * @return ($captureOffset is true ? list : list) */ public static function split( string $subject, @@ -525,6 +526,7 @@ public static function split( /** * Searches the string for the part matching the regular expression and returns * an array with the found expression and individual subexpressions, or `null`. + * @return ($captureOffset is true ? ?array : ?array) */ public static function match( string $subject, @@ -545,6 +547,7 @@ public static function match( $pattern .= 'u'; } + $m = []; if ($offset > strlen($subject)) { return null; } elseif (!self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset])) { @@ -560,7 +563,10 @@ public static function match( /** * Searches the string for all occurrences matching the regular expression and * returns an array of arrays containing the found expression and each subexpression. - * @return ($lazy is true ? \Generator : array[]) + * @return ($lazy is true + * ? \Generator : array)> + * : ($captureOffset is true ? list> : list>) + * ) */ public static function matchAll( string $subject, @@ -583,6 +589,7 @@ public static function matchAll( $flags = PREG_OFFSET_CAPTURE | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0); return (function () use ($utf8, $captureOffset, $flags, $subject, $pattern, $offset) { $counter = 0; + $m = null; while ( $offset <= strlen($subject) - ($counter ? 1 : 0) && self::pcre('preg_match', [$pattern, $subject, &$m, $flags, $offset]) @@ -606,6 +613,7 @@ public static function matchAll( ? $captureOffset : ($captureOffset ? PREG_OFFSET_CAPTURE : 0) | ($unmatchedAsNull ? PREG_UNMATCHED_AS_NULL : 0) | ($patternOrder ? PREG_PATTERN_ORDER : 0); + $m = []; self::pcre('preg_match_all', [ $pattern, $subject, &$m, ($flags & PREG_PATTERN_ORDER) ? $flags : ($flags | PREG_SET_ORDER), @@ -619,6 +627,8 @@ public static function matchAll( /** * Replaces all occurrences matching regular expression $pattern which can be string or array in the form `pattern => replacement`. + * @param string|array $pattern + * @param string|(callable(array): string) $replacement */ public static function replace( string $subject, @@ -659,6 +669,10 @@ public static function replace( } + /** + * @param list> $groups + * @return list> + */ private static function bytesToChars(string $s, array $groups): array { $lastBytes = $lastChars = 0; @@ -679,8 +693,11 @@ private static function bytesToChars(string $s, array $groups): array } - /** @internal */ - public static function pcre(string $func, array $args) + /** + * @param list $args + * @internal + */ + public static function pcre(string $func, array $args): mixed { $res = Callback::invokeSafe($func, $args, function (string $message) use ($args): void { // compile-time error, not detectable by preg_last_error @@ -688,7 +705,7 @@ public static function pcre(string $func, array $args) }); if (($code = preg_last_error()) // run-time error, but preg_last_error & return code are liars - && ($res === null || !in_array($func, ['preg_filter', 'preg_replace_callback', 'preg_replace'], true)) + && ($res === null || !in_array($func, ['preg_filter', 'preg_replace_callback', 'preg_replace'], strict: true)) ) { throw new RegexpException(preg_last_error_msg() . ' (pattern: ' . implode(' or ', (array) $args[0]) . ')', $code); diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Type.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Type.php index 92aac80..92149b5 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Type.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Type.php @@ -40,6 +40,7 @@ public static function fromReflection( } + /** @param \ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionProperty $of */ private static function fromReflectionType(\ReflectionType $type, $of, bool $asObject): self|string { if ($type instanceof \ReflectionNamedType) { @@ -107,7 +108,7 @@ public static function fromValue(mixed $value): self */ public static function resolve( string $type, - \ReflectionFunctionAbstract|\ReflectionParameter|\ReflectionProperty $of, + \ReflectionFunction|\ReflectionMethod|\ReflectionParameter|\ReflectionProperty $of, ): string { $lower = strtolower($type); @@ -125,6 +126,7 @@ public static function resolve( } + /** @param array $types */ private function __construct(array $types, string $kind = '|') { $o = array_search('null', $types, strict: true); @@ -173,7 +175,7 @@ public function with(string|self $type): self /** * Returns the array of subtypes that make up the compound type as strings. - * @return array + * @return list>> */ public function getNames(): array { @@ -279,6 +281,7 @@ public function allows(string|self $type): bool } + /** @param (string|self)[] $givenTypes */ private function allowsAny(array $givenTypes): bool { return $this->isUnion() @@ -287,6 +290,10 @@ private function allowsAny(array $givenTypes): bool } + /** + * @param (string|self)[] $ourTypes + * @param (string|self)[] $givenTypes + */ private function allowsAll(array $ourTypes, array $givenTypes): bool { return Arrays::every( diff --git a/tools/.phpstan/vendor/nette/utils/src/Utils/Validators.php b/tools/.phpstan/vendor/nette/utils/src/Utils/Validators.php index 940c3eb..3045476 100644 --- a/tools/.phpstan/vendor/nette/utils/src/Utils/Validators.php +++ b/tools/.phpstan/vendor/nette/utils/src/Utils/Validators.php @@ -26,7 +26,7 @@ class Validators 'never' => 1, 'true' => 1, ]; - /** @var array */ + /** @var array */ protected static $validators = [ // PHP types 'array' => 'is_array', @@ -76,7 +76,7 @@ class Validators 'type' => [self::class, 'isType'], ]; - /** @var array */ + /** @var array */ protected static $counters = [ 'string' => 'strlen', 'unicode' => [Strings::class, 'length'], @@ -120,16 +120,16 @@ public static function assert(mixed $value, string $expected, string $label = 'v */ public static function assertField( array $array, - $key, + int|string $key, ?string $expected = null, string $label = "item '%' in array", ): void { if (!array_key_exists($key, $array)) { - throw new AssertionException('Missing ' . str_replace('%', $key, $label) . '.'); + throw new AssertionException('Missing ' . str_replace('%', (string) $key, $label) . '.'); } elseif ($expected) { - static::assert($array[$key], $expected, str_replace('%', $key, $label)); + static::assert($array[$key], $expected, str_replace('%', (string) $key, $label)); } } @@ -159,7 +159,7 @@ public static function is(mixed $value, string $expected): bool if (!static::$validators[$type]($value)) { continue; } - } catch (\TypeError $e) { + } catch (\TypeError) { continue; } } elseif ($type === 'pattern') { @@ -261,7 +261,7 @@ public static function isUnicode(mixed $value): bool /** * Checks if the value is 0, '', false or null. - * @return ($value is 0|''|false|null ? true : false) + * @return ($value is 0|0.0|''|false|null ? true : false) */ public static function isNone(mixed $value): bool { @@ -290,6 +290,7 @@ public static function isList(mixed $value): bool /** * Checks if the value is in the given range [min, max], where the upper or lower limit can be omitted (null). * Numbers, strings and DateTime objects can be compared. + * @param array{int|float|string|\DateTimeInterface|null, int|float|string|\DateTimeInterface|null} $range */ public static function isInRange(mixed $value, array $range): bool { diff --git a/tools/.phpstan/vendor/phpstan/extension-installer/src/GeneratedConfig.php b/tools/.phpstan/vendor/phpstan/extension-installer/src/GeneratedConfig.php index 72b6c8c..c1ecb53 100644 --- a/tools/.phpstan/vendor/phpstan/extension-installer/src/GeneratedConfig.php +++ b/tools/.phpstan/vendor/phpstan/extension-installer/src/GeneratedConfig.php @@ -21,8 +21,8 @@ final class GeneratedConfig 0 => 'rules.neon', ), ), - 'version' => '2.12.0', - 'phpstanVersionConstraint' => '>=2.1.8.0-dev, <3.0.0.0-dev', + 'version' => '2.13.1', + 'phpstanVersionConstraint' => '>=2.1.35.0-dev, <3.0.0.0-dev', ), 'phpstan/phpstan-strict-rules' => array ( @@ -35,7 +35,7 @@ final class GeneratedConfig 0 => 'rules.neon', ), ), - 'version' => '2.0.7', + 'version' => '2.0.8', 'phpstanVersionConstraint' => '>=2.1.29.0-dev, <3.0.0.0-dev', ), 'tomasvotruba/type-coverage' => @@ -58,7 +58,7 @@ final class GeneratedConfig ); /** @var string|null */ - public const PHPSTAN_VERSION_CONSTRAINT = '>=2.1.29.0-dev, <3.0.0.0-dev'; + public const PHPSTAN_VERSION_CONSTRAINT = '>=2.1.35.0-dev, <3.0.0.0-dev'; private function __construct() { diff --git a/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/README.md b/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/README.md index 3a60ec8..ee04c34 100644 --- a/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/README.md +++ b/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/README.md @@ -11,7 +11,6 @@ | `booleansInConditions` | Require booleans in `if`, `elseif`, ternary operator, after `!`, and on both sides of `&&` and `\|\|`. | | `booleansInLoopConditions` | Require booleans in `while` and `do while` loop conditions. | | `numericOperandsInArithmeticOperators` | Require numeric operand in `+$var`, `-$var`, `$var++`, `$var--`, `++$var` and `--$var`. | -| `numericOperandsInArithmeticOperators` | Require numeric operand in `$var++`, `$var--`, `++$var`and `--$var`. | | `strictFunctionCalls` | These functions contain a `$strict` parameter for better type safety, it must be set to `true`:
* `in_array` (3rd parameter)
* `array_search` (3rd parameter)
* `array_keys` (3rd parameter; only if the 2nd parameter `$search_value` is provided)
* `base64_decode` (2nd parameter). | | `overwriteVariablesWithLoop` | * Disallow overwriting variables with `foreach` key and value variables.
* Disallow overwriting variables with `for` loop initial assignment. | | `switchConditionsMatchingType` | Types in `switch` condition and `case` value must match. PHP compares them loosely by default and that can lead to unexpected results. | diff --git a/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/src/Rules/VariableVariables/VariablePropertyFetchRule.php b/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/src/Rules/VariableVariables/VariablePropertyFetchRule.php index 760bff6..44fc32e 100644 --- a/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/src/Rules/VariableVariables/VariablePropertyFetchRule.php +++ b/tools/.phpstan/vendor/phpstan/phpstan-strict-rules/src/Rules/VariableVariables/VariablePropertyFetchRule.php @@ -44,6 +44,10 @@ public function processNode(Node $node, Scope $scope): array return []; } + if ($scope->getType($node->name)->isLiteralString()->yes()) { + return []; + } + $fetchedOnType = $scope->getType($node->var); foreach ($fetchedOnType->getObjectClassNames() as $referencedClass) { if (!$this->reflectionProvider->hasClass($referencedClass)) { diff --git a/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar b/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar index bc32b80..b7aed1b 100755 Binary files a/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar and b/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar differ diff --git a/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar.asc b/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar.asc index fec010b..a2fcb28 100644 --- a/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar.asc +++ b/tools/.phpstan/vendor/phpstan/phpstan/phpstan.phar.asc @@ -1,16 +1,16 @@ -----BEGIN PGP SIGNATURE----- -iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAmkysr4ACgkQUcZzBf/C -5cDE+RAAlbDueQxsbyo+wqm1sURcXT4fPbwdFAv1RXSYfZl7XraoagxYHssIHt9n -TcKuBSOPOmlKgZ4FmVW05TRr0yoLZtckpRDCWuJoPzI9ilW2tiVi6AbEVhV0EqwL -xVToGIzZXmti+X5Mm2OwQMCdpAbqpAy0mwmv/TudFiKdgZBzl5zHWDUSNCwP8s2m -pLGBupQis6sA45+u28vLpyR7vn3mIq3F3hJgb5nrZlWt33jVJ7MDFnpGpeJ6+jBn -/1BmefK0sXwN4EqaJbrRkHdRePISt2+jQXa/V/L3oJ0a3hVFufcGze41ARecSQ/0 -203aB0XcBtIFlshE5OIpXW+ibmgBabd+ggZEkRoS3OXtV5cJizLh49B+16A97QOr -H0NWgLfY/W1u2t0Iu+WDT37Na5LPsuucW9vv9PwS6WY9eCr4Jbbmq1PtF0T17aqx -STyPWNjs5A8NNjVUQ+Ufj/AAdH3hmNj4B5H6psxHD5UsFHoOLVFtwih4GdHrKXIZ -N2lznVo8HDCcvKo6C4F8ejG1t4f5qBHNpYeEC9aVQVvXrBockQQz4lUclibW7MIe -g33fXgO/GIm0dn2u0NCzjYof+TAVOfvtbK4GY0Z9BOlJcQnzu7V1LxqFamG5ef+u -A2ABQa0HVEeKTomB3jzNQQVKw9QzWyfI21xSskfpFs4FXW3A5xc= -=edJd +iQIzBAABCgAdFiEEynwsejDI6OEnSoR2UcZzBf/C5cAFAml85l8ACgkQUcZzBf/C +5cBsNhAAh9fg0wbNnDuazEO6fTu1z4h/20X/+uzQy/RL4Syzl+4NO0I4b59ilfG4 +C3/EuuuuuctXbsFu1MZM+T6xbY5opzGGhe4O7x1u3gO/lor3awUMBxGCzj7ybtLC +gSFPgnqW5NUqJptxC5IA2ofAjfwNcpQb60ILIqQhyfpCvfD+uG+J4tggmBjazO3g +nls/I0l5g9S4qQMiMrxD6Cvj+fUG78hb/2jJ9TiHd+gyY66J6NGfcb8GFwklULSw +v4kNDbVpy3BXK0/4Jxu+mi5Ftuh/iXRWc7/T+Yli/OsGiRJVFcvrXlkNCRhJzXIA +IhF7i4s7H+smJ5vYPjevmiUII6UWaw43RpAWGHCN1pDrBsQca2G+BRSED7vSoIEX +LuYvGxM4JNS/y3AY2FYb7uv9gBeDPf1+CVNK9c7Oi3SLxnF7jM+ORHCV3zYv8dQ6 +QE71e/ekDgXg00uQUp1qeHQLvkYxlVV84W6v1E1O083iJJtVpEYwkeMjI2UZxzsG +D5wv1Bj+BsdKnRThGQ8iBzkM3UxD5zvTn6w4LI3drDhV+joX646DAj6dpDfCPSTf +uhqikkeq0aJ6XglIwCsduJnBj7bksccE4/dHC/D9a8J8QH5Yx0YUDqrNTM4aXG09 +rHTn+p7q4YGrfyiqzyr94DHOTkiJz+Nuq3MvbaZE9Krtg573noc= +=VsMH -----END PGP SIGNATURE----- diff --git a/tools/composer b/tools/composer index 5a80d74..3d1b983 100755 Binary files a/tools/composer and b/tools/composer differ diff --git a/tools/php-cs-fixer b/tools/php-cs-fixer index 2b71338..fd7aaf7 100755 Binary files a/tools/php-cs-fixer and b/tools/php-cs-fixer differ