From 1a522307d53151081df3d4414e430a8af724e2ed Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 13 May 2026 07:04:14 +0000 Subject: [PATCH 01/12] Updated Rector to commit 40ef51dc926ad725ac545f3daf72ce73b62e6115 https://github.com/rectorphp/rector-src/commit/40ef51dc926ad725ac545f3daf72ce73b62e6115 [DeadCode] Skip used by get_object_vars on RemoveUnusedPromotedPropertyRector (#7988) --- .../NodeAnalyzer/PropertyWriteonlyAnalyzer.php | 14 +++----------- src/Application/VersionResolver.php | 4 ++-- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/rules/DeadCode/NodeAnalyzer/PropertyWriteonlyAnalyzer.php b/rules/DeadCode/NodeAnalyzer/PropertyWriteonlyAnalyzer.php index bf78a45508b2..bd063f291225 100644 --- a/rules/DeadCode/NodeAnalyzer/PropertyWriteonlyAnalyzer.php +++ b/rules/DeadCode/NodeAnalyzer/PropertyWriteonlyAnalyzer.php @@ -12,10 +12,8 @@ use PhpParser\Node\Expr\StaticPropertyFetch; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Stmt\Class_; -use PHPStan\Type\ObjectType; use Rector\NodeNameResolver\NodeNameResolver; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\NodeTypeResolver\NodeTypeResolver; use Rector\PhpParser\Node\BetterNodeFinder; final class PropertyWriteonlyAnalyzer { @@ -23,25 +21,19 @@ final class PropertyWriteonlyAnalyzer * @readonly */ private BetterNodeFinder $betterNodeFinder; - /** - * @readonly - */ - private NodeTypeResolver $nodeTypeResolver; /** * @readonly */ private NodeNameResolver $nodeNameResolver; - public function __construct(BetterNodeFinder $betterNodeFinder, NodeTypeResolver $nodeTypeResolver, NodeNameResolver $nodeNameResolver) + public function __construct(BetterNodeFinder $betterNodeFinder, NodeNameResolver $nodeNameResolver) { $this->betterNodeFinder = $betterNodeFinder; - $this->nodeTypeResolver = $nodeTypeResolver; $this->nodeNameResolver = $nodeNameResolver; } public function hasClassDynamicPropertyNames(Class_ $class): bool { - $isImplementsJsonSerializable = $this->nodeTypeResolver->isObjectType($class, new ObjectType('JsonSerializable')); - return (bool) $this->betterNodeFinder->findFirst($class, function (Node $node) use ($isImplementsJsonSerializable): bool { - if ($isImplementsJsonSerializable && $node instanceof FuncCall && $this->nodeNameResolver->isName($node, 'get_object_vars') && !$node->isFirstClassCallable()) { + return (bool) $this->betterNodeFinder->findFirst($class, function (Node $node): bool { + if ($node instanceof FuncCall && $this->nodeNameResolver->isName($node, 'get_object_vars') && !$node->isFirstClassCallable()) { $firstArg = $node->getArgs()[0] ?? null; if ($firstArg instanceof Arg && $firstArg->value instanceof Variable && $firstArg->value->name === 'this') { return \true; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 1c93f93ff787..097c4f0816b2 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '2.4.3'; + public const PACKAGE_VERSION = '40ef51dc926ad725ac545f3daf72ce73b62e6115'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-12 18:00:01'; + public const RELEASE_DATE = '2026-05-13 09:01:36'; /** * @var int */ From 71c5654fbbaef1fedd8c1608e6f23e39e949b9c2 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 14 May 2026 18:48:14 +0000 Subject: [PATCH 02/12] Updated Rector to commit d2666c743cc2a3f1f053b389f84c4bcd9b63bd1f https://github.com/rectorphp/rector-src/commit/d2666c743cc2a3f1f053b389f84c4bcd9b63bd1f [QA] Add StructArmed to QA (#7989) --- src/Application/VersionResolver.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 10 +-- vendor/composer/autoload_static.php | 8 +- vendor/composer/installed.json | 74 +++++++++---------- vendor/composer/installed.php | 2 +- vendor/scoper-autoload.php | 2 +- .../console/Output/ConsoleSectionOutput.php | 21 +++++- .../console/SignalRegistry/SignalRegistry.php | 21 +++++- vendor/symfony/filesystem/Filesystem.php | 4 +- vendor/symfony/process/Pipes/WindowsPipes.php | 2 +- vendor/symfony/process/Process.php | 3 + .../string/Inflector/EnglishInflector.php | 2 + .../Resources/data/wcswidth_table_wide.php | 7 -- .../Resources/data/wcswidth_table_zero.php | 7 -- vendor/symfony/yaml/Inline.php | 4 + 16 files changed, 100 insertions(+), 73 deletions(-) diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 097c4f0816b2..eba304f23f08 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '40ef51dc926ad725ac545f3daf72ce73b62e6115'; + public const PACKAGE_VERSION = 'd2666c743cc2a3f1f053b389f84c4bcd9b63bd1f'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-13 09:01:36'; + public const RELEASE_DATE = '2026-05-14 20:45:19'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 86783ca1885d..95a6f25d33da 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -19,4 +19,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f::getLoader(); +return ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 477b0db868fd..3c4649a0dd59 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f +class ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191 { private static $loader; @@ -22,17 +22,17 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitbc08dee7b32aa57b9a805823d073849f::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitbc08dee7b32aa57b9a805823d073849f::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 9dea40af25ab..4913a5e39ed2 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitbc08dee7b32aa57b9a805823d073849f +class ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191 { public static $files = array ( '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', @@ -3279,9 +3279,9 @@ class ComposerStaticInitbc08dee7b32aa57b9a805823d073849f public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitbc08dee7b32aa57b9a805823d073849f::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitbc08dee7b32aa57b9a805823d073849f::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitbc08dee7b32aa57b9a805823d073849f::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index b87f4e48d344..34eb5584e729 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -574,8 +574,8 @@ }, { "name": "illuminate\/contracts", - "version": "v12.58.0", - "version_normalized": "12.58.0.0", + "version": "v12.59.0", + "version_normalized": "12.59.0.0", "source": { "type": "git", "url": "https:\/\/github.com\/illuminate\/contracts.git", @@ -2003,17 +2003,17 @@ }, { "name": "symfony\/console", - "version": "v6.4.37", - "version_normalized": "6.4.37.0", + "version": "v6.4.39", + "version_normalized": "6.4.39.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/console.git", - "reference": "7bbcaf3fdb1e18fa42a7f0b84a10d091c10548f5" + "reference": "c132f1215fe4aa45b70173cc00ce9a755dd31ec5" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/console\/zipball\/7bbcaf3fdb1e18fa42a7f0b84a10d091c10548f5", - "reference": "7bbcaf3fdb1e18fa42a7f0b84a10d091c10548f5", + "url": "https:\/\/api.github.com\/repos\/symfony\/console\/zipball\/c132f1215fe4aa45b70173cc00ce9a755dd31ec5", + "reference": "c132f1215fe4aa45b70173cc00ce9a755dd31ec5", "shasum": "" }, "require": { @@ -2046,7 +2046,7 @@ "symfony\/stopwatch": "^5.4|^6.0|^7.0", "symfony\/var-dumper": "^5.4|^6.0|^7.0" }, - "time": "2026-04-13T15:27:04+00:00", + "time": "2026-05-12T06:50:03+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2080,7 +2080,7 @@ "terminal" ], "support": { - "source": "https:\/\/github.com\/symfony\/console\/tree\/v6.4.37" + "source": "https:\/\/github.com\/symfony\/console\/tree\/v6.4.39" }, "funding": [ { @@ -2178,17 +2178,17 @@ }, { "name": "symfony\/filesystem", - "version": "v7.4.9", - "version_normalized": "7.4.9.0", + "version": "v7.4.11", + "version_normalized": "7.4.11.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/filesystem.git", - "reference": "dcd8f96bcdc0f128ec406c765cc066c6035d1be3" + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/filesystem\/zipball\/dcd8f96bcdc0f128ec406c765cc066c6035d1be3", - "reference": "dcd8f96bcdc0f128ec406c765cc066c6035d1be3", + "url": "https:\/\/api.github.com\/repos\/symfony\/filesystem\/zipball\/d721ea61b4a5fba8c5b6e7c1feda19efea144b50", + "reference": "d721ea61b4a5fba8c5b6e7c1feda19efea144b50", "shasum": "" }, "require": { @@ -2199,7 +2199,7 @@ "require-dev": { "symfony\/process": "^6.4|^7.0|^8.0" }, - "time": "2026-04-18T13:18:21+00:00", + "time": "2026-05-11T16:38:44+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2227,7 +2227,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https:\/\/symfony.com", "support": { - "source": "https:\/\/github.com\/symfony\/filesystem\/tree\/v7.4.9" + "source": "https:\/\/github.com\/symfony\/filesystem\/tree\/v7.4.11" }, "funding": [ { @@ -2835,23 +2835,23 @@ }, { "name": "symfony\/process", - "version": "v7.4.8", - "version_normalized": "7.4.8.0", + "version": "v7.4.11", + "version_normalized": "7.4.11.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/process.git", - "reference": "60f19cd3badc8de688421e21e4305eba50f8089a" + "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/process\/zipball\/60f19cd3badc8de688421e21e4305eba50f8089a", - "reference": "60f19cd3badc8de688421e21e4305eba50f8089a", + "url": "https:\/\/api.github.com\/repos\/symfony\/process\/zipball\/d9593c9efa40499eb078b81144de42cbc28a31f0", + "reference": "d9593c9efa40499eb078b81144de42cbc28a31f0", "shasum": "" }, "require": { "php": ">=8.2" }, - "time": "2026-03-24T13:12:05+00:00", + "time": "2026-05-11T16:55:21+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -2879,7 +2879,7 @@ "description": "Executes commands in sub-processes", "homepage": "https:\/\/symfony.com", "support": { - "source": "https:\/\/github.com\/symfony\/process\/tree\/v7.4.8" + "source": "https:\/\/github.com\/symfony\/process\/tree\/v7.4.11" }, "funding": [ { @@ -2993,17 +2993,17 @@ }, { "name": "symfony\/string", - "version": "v7.4.8", - "version_normalized": "7.4.8.0", + "version": "v7.4.11", + "version_normalized": "7.4.11.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/string.git", - "reference": "114ac57257d75df748eda23dd003878080b8e688" + "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/string\/zipball\/114ac57257d75df748eda23dd003878080b8e688", - "reference": "114ac57257d75df748eda23dd003878080b8e688", + "url": "https:\/\/api.github.com\/repos\/symfony\/string\/zipball\/965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", + "reference": "965f7306a43383d02c6aca1e3f3bd2f0ea5dee15", "shasum": "" }, "require": { @@ -3024,7 +3024,7 @@ "symfony\/translation-contracts": "^2.5|^3.0", "symfony\/var-exporter": "^6.4|^7.0|^8.0" }, - "time": "2026-03-24T13:12:05+00:00", + "time": "2026-05-13T12:04:42+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -3063,7 +3063,7 @@ "utf8" ], "support": { - "source": "https:\/\/github.com\/symfony\/string\/tree\/v7.4.8" + "source": "https:\/\/github.com\/symfony\/string\/tree\/v7.4.11" }, "funding": [ { @@ -3087,17 +3087,17 @@ }, { "name": "symfony\/yaml", - "version": "v7.4.10", - "version_normalized": "7.4.10.0", + "version": "v7.4.11", + "version_normalized": "7.4.11.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/yaml.git", - "reference": "c660d6538545a3e8e65a5621ee3d7a6d352892c7" + "reference": "e2eb64a57763815ccae07ac1c7653d6cc1c326fd" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/c660d6538545a3e8e65a5621ee3d7a6d352892c7", - "reference": "c660d6538545a3e8e65a5621ee3d7a6d352892c7", + "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/e2eb64a57763815ccae07ac1c7653d6cc1c326fd", + "reference": "e2eb64a57763815ccae07ac1c7653d6cc1c326fd", "shasum": "" }, "require": { @@ -3111,7 +3111,7 @@ "require-dev": { "symfony\/console": "^6.4|^7.0|^8.0" }, - "time": "2026-05-05T08:01:55+00:00", + "time": "2026-05-13T12:04:42+00:00", "bin": [ "Resources\/bin\/yaml-lint" ], @@ -3142,7 +3142,7 @@ "description": "Loads and dumps YAML files", "homepage": "https:\/\/symfony.com", "support": { - "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v7.4.10" + "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v7.4.11" }, "funding": [ { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 41fb80ada78d..ab13891a15ab 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -2,4 +2,4 @@ namespace RectorPrefix202605; -return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.58.0', 'version' => '12.58.0.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.54.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'e69bd32bea0dc330a0c79b919945abe67851d887', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.37', 'version' => '6.4.37.0', 'reference' => '7bbcaf3fdb1e18fa42a7f0b84a10d091c10548f5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.9', 'version' => '7.4.9.0', 'reference' => 'dcd8f96bcdc0f128ec406c765cc066c6035d1be3', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.8', 'version' => '7.4.8.0', 'reference' => '60f19cd3badc8de688421e21e4305eba50f8089a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.8', 'version' => '7.4.8.0', 'reference' => '114ac57257d75df748eda23dd003878080b8e688', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.10', 'version' => '7.4.10.0', 'reference' => 'c660d6538545a3e8e65a5621ee3d7a6d352892c7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); +return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.59.0', 'version' => '12.59.0.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.54.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'e69bd32bea0dc330a0c79b919945abe67851d887', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'e2eb64a57763815ccae07ac1c7653d6cc1c326fd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 4d48294682e1..39215cbdd036 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -31,7 +31,7 @@ function humbug_phpscoper_expose_class($exposed, $prefixed) { } humbug_phpscoper_expose_class('AutoloadIncluder', 'RectorPrefix202605\AutoloadIncluder'); humbug_phpscoper_expose_class('SomeClass', 'RectorPrefix202605\SomeClass'); -humbug_phpscoper_expose_class('ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f', 'RectorPrefix202605\ComposerAutoloaderInitbc08dee7b32aa57b9a805823d073849f'); +humbug_phpscoper_expose_class('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'RectorPrefix202605\ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191'); humbug_phpscoper_expose_class('Product', 'RectorPrefix202605\Product'); humbug_phpscoper_expose_class('SomeTest', 'RectorPrefix202605\SomeTest'); humbug_phpscoper_expose_class('Normalizer', 'RectorPrefix202605\Normalizer'); diff --git a/vendor/symfony/console/Output/ConsoleSectionOutput.php b/vendor/symfony/console/Output/ConsoleSectionOutput.php index 09b92fe1b952..0363c96bb11e 100644 --- a/vendor/symfony/console/Output/ConsoleSectionOutput.php +++ b/vendor/symfony/console/Output/ConsoleSectionOutput.php @@ -79,8 +79,25 @@ public function clear(?int $lines = null) */ public function overwrite($message) { - $this->clear(); - $this->writeln($message); + if (!$this->content || !$this->isDecorated()) { + $this->writeln($message); + return; + } + // Replace own content and write everything in a single cursor-up + erase + // pass, to avoid the flicker (and the line-eating artifacts on some + // terminals) caused by calling clear() then writeln() back-to-back. + $linesCleared = $this->lines; + $this->content = []; + $this->lines = 0; + if (!is_iterable($message)) { + $message = [$message]; + } + foreach ($message as $line) { + $this->addContent($line, \true); + } + $erasedContent = $this->popStreamContentUntilCurrentSection($this->maxHeight ? min($this->maxHeight, $linesCleared) : $linesCleared); + parent::doWrite($this->getVisibleContent(), \false); + parent::doWrite($erasedContent, \false); } public function getContent(): string { diff --git a/vendor/symfony/console/SignalRegistry/SignalRegistry.php b/vendor/symfony/console/SignalRegistry/SignalRegistry.php index be60d480df57..3457676c7900 100644 --- a/vendor/symfony/console/SignalRegistry/SignalRegistry.php +++ b/vendor/symfony/console/SignalRegistry/SignalRegistry.php @@ -68,6 +68,13 @@ public function handle(int $signal): void */ public function pushCurrentHandlers(): void { + // Restore the original OS-level disposition while the active map is empty, + // so signals are not routed through handle() without a registered handler. + foreach ($this->signalHandlers as $signal => $handlers) { + if (isset($this->originalHandlers[$signal])) { + pcntl_signal($signal, $this->originalHandlers[$signal]); + } + } $this->stack[] = $this->signalHandlers; $this->signalHandlers = []; } @@ -82,12 +89,20 @@ public function pushCurrentHandlers(): void public function popPreviousHandlers(): void { $popped = $this->signalHandlers; - $this->signalHandlers = array_pop($this->stack) ?? []; - // Restore OS handler if no more Symfony handlers for this signal + $previous = array_pop($this->stack) ?? []; + // Expose a transitional superset so handle() never reads a missing key + // if a signal lands while the OS-level handlers below are being swapped. + $this->signalHandlers = $previous + $popped; + // Reinstall the registry handler for signals owned by the restored scope. + foreach ($previous as $signal => $handlers) { + pcntl_signal($signal, [$this, 'handle']); + } + // Restore the original OS-level handler for signals no scope owns anymore. foreach ($popped as $signal => $handlers) { - if (!($this->signalHandlers[$signal] ?? \false) && isset($this->originalHandlers[$signal])) { + if (!isset($previous[$signal]) && isset($this->originalHandlers[$signal])) { pcntl_signal($signal, $this->originalHandlers[$signal]); } } + $this->signalHandlers = $previous; } } diff --git a/vendor/symfony/filesystem/Filesystem.php b/vendor/symfony/filesystem/Filesystem.php index 0fbc504c724b..1dcfe21fdd04 100644 --- a/vendor/symfony/filesystem/Filesystem.php +++ b/vendor/symfony/filesystem/Filesystem.php @@ -59,8 +59,8 @@ public function copy(string $originFile, string $targetFile, bool $overwriteNewe throw new IOException(\sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile); } if ($originIsLocal) { - // Like `cp`, preserve executable permission bits - self::box('chmod', $targetFile, fileperms($targetFile) | fileperms($originFile) & 0111); + // Like `cp`, preserve the source mode masked by the umask + self::box('chmod', $targetFile, fileperms($originFile) & 0777 & ~umask()); // Like `cp`, preserve the file modification time self::box('touch', $targetFile, filemtime($originFile)); if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { diff --git a/vendor/symfony/process/Pipes/WindowsPipes.php b/vendor/symfony/process/Pipes/WindowsPipes.php index e67ee3d8121a..48c106c881f2 100644 --- a/vendor/symfony/process/Pipes/WindowsPipes.php +++ b/vendor/symfony/process/Pipes/WindowsPipes.php @@ -43,7 +43,7 @@ public function __construct($input, bool $haveReadSupport) $pipes = [Process::STDOUT => Process::OUT, Process::STDERR => Process::ERR]; $tmpDir = sys_get_temp_dir(); $lastError = 'unknown reason'; - set_error_handler(function ($type, $msg) use (&$lastError) { + set_error_handler(static function ($type, $msg) use (&$lastError) { $lastError = $msg; }); for ($i = 0;; ++$i) { diff --git a/vendor/symfony/process/Process.php b/vendor/symfony/process/Process.php index e3b1943bafcd..4b7d61977284 100644 --- a/vendor/symfony/process/Process.php +++ b/vendor/symfony/process/Process.php @@ -328,6 +328,9 @@ public function start(?callable $callback = null, array $env = []): void } $envPairs = []; foreach ($env as $k => $v) { + if (!\is_scalar($v ?? '') && !(is_object($v) && method_exists($v, '__toString'))) { + continue; + } if (\false !== $v && !\in_array($k = (string) $k, ['', 'argc', 'argv', 'ARGC', 'ARGV'], \true) && strpos($k, '=') === \false && strpos($k, "\x00") === \false) { $envPairs[] = $k . '=' . $v; } diff --git a/vendor/symfony/string/Inflector/EnglishInflector.php b/vendor/symfony/string/Inflector/EnglishInflector.php index 7e4426f4886b..ff83d322f8cb 100644 --- a/vendor/symfony/string/Inflector/EnglishInflector.php +++ b/vendor/symfony/string/Inflector/EnglishInflector.php @@ -129,6 +129,8 @@ final class EnglishInflector implements InflectorInterface ['segd', 4, \true, \true, 'dge'], // outages (outage) - specific fix to avoid 'outag' ['segatuo', 7, \true, \true, 'outage'], + // traces (trace), faces (face), places (place), pieces (piece) + ['sec', 3, \true, \true, 'ce'], // roses (rose), garages (garage), cassettes (cassette), // waltzes (waltz), heroes (hero), bushes (bush), arches (arch), // shoes (shoe) diff --git a/vendor/symfony/string/Resources/data/wcswidth_table_wide.php b/vendor/symfony/string/Resources/data/wcswidth_table_wide.php index 0c4525a73037..95044b7a6e6f 100644 --- a/vendor/symfony/string/Resources/data/wcswidth_table_wide.php +++ b/vendor/symfony/string/Resources/data/wcswidth_table_wide.php @@ -3,16 +3,9 @@ namespace RectorPrefix202605; /* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier - * * This file has been auto-generated by the Symfony String Component for internal use. * * Unicode version: 16.0.0 * Date: 2024-09-11T08:21:22+00:00 - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. */ return [[4352, 4447], [8986, 8987], [9001, 9001], [9002, 9002], [9193, 9196], [9200, 9200], [9203, 9203], [9725, 9726], [9748, 9749], [9776, 9783], [9800, 9811], [9855, 9855], [9866, 9871], [9875, 9875], [9889, 9889], [9898, 9899], [9917, 9918], [9924, 9925], [9934, 9934], [9940, 9940], [9962, 9962], [9970, 9971], [9973, 9973], [9978, 9978], [9981, 9981], [9989, 9989], [9994, 9995], [10024, 10024], [10060, 10060], [10062, 10062], [10067, 10069], [10071, 10071], [10133, 10135], [10160, 10160], [10175, 10175], [11035, 11036], [11088, 11088], [11093, 11093], [11904, 11929], [11931, 12019], [12032, 12245], [12272, 12287], [12288, 12288], [12289, 12291], [12292, 12292], [12293, 12293], [12294, 12294], [12295, 12295], [12296, 12296], [12297, 12297], [12298, 12298], [12299, 12299], [12300, 12300], [12301, 12301], [12302, 12302], [12303, 12303], [12304, 12304], [12305, 12305], [12306, 12307], [12308, 12308], [12309, 12309], [12310, 12310], [12311, 12311], [12312, 12312], [12313, 12313], [12314, 12314], [12315, 12315], [12316, 12316], [12317, 12317], [12318, 12319], [12320, 12320], [12321, 12329], [12330, 12333], [12334, 12335], [12336, 12336], [12337, 12341], [12342, 12343], [12344, 12346], [12347, 12347], [12348, 12348], [12349, 12349], [12350, 12350], [12353, 12438], [12441, 12442], [12443, 12444], [12445, 12446], [12447, 12447], [12448, 12448], [12449, 12538], [12539, 12539], [12540, 12542], [12543, 12543], [12549, 12591], [12593, 12686], [12688, 12689], [12690, 12693], [12694, 12703], [12704, 12735], [12736, 12773], [12783, 12783], [12784, 12799], [12800, 12830], [12832, 12841], [12842, 12871], [12880, 12880], [12881, 12895], [12896, 12927], [12928, 12937], [12938, 12976], [12977, 12991], [12992, 13055], [13056, 13311], [13312, 19903], [19904, 19967], [19968, 40959], [40960, 40980], [40981, 40981], [40982, 42124], [42128, 42182], [43360, 43388], [44032, 55203], [63744, 64109], [64110, 64111], [64112, 64217], [64218, 64255], [65040, 65046], [65047, 65047], [65048, 65048], [65049, 65049], [65072, 65072], [65073, 65074], [65075, 65076], [65077, 65077], [65078, 65078], [65079, 65079], [65080, 65080], [65081, 65081], [65082, 65082], [65083, 65083], [65084, 65084], [65085, 65085], [65086, 65086], [65087, 65087], [65088, 65088], [65089, 65089], [65090, 65090], [65091, 65091], [65092, 65092], [65093, 65094], [65095, 65095], [65096, 65096], [65097, 65100], [65101, 65103], [65104, 65106], [65108, 65111], [65112, 65112], [65113, 65113], [65114, 65114], [65115, 65115], [65116, 65116], [65117, 65117], [65118, 65118], [65119, 65121], [65122, 65122], [65123, 65123], [65124, 65126], [65128, 65128], [65129, 65129], [65130, 65131], [65281, 65283], [65284, 65284], [65285, 65287], [65288, 65288], [65289, 65289], [65290, 65290], [65291, 65291], [65292, 65292], [65293, 65293], [65294, 65295], [65296, 65305], [65306, 65307], [65308, 65310], [65311, 65312], [65313, 65338], [65339, 65339], [65340, 65340], [65341, 65341], [65342, 65342], [65343, 65343], [65344, 65344], [65345, 65370], [65371, 65371], [65372, 65372], [65373, 65373], [65374, 65374], [65375, 65375], [65376, 65376], [65504, 65505], [65506, 65506], [65507, 65507], [65508, 65508], [65509, 65510], [94176, 94177], [94178, 94178], [94179, 94179], [94180, 94180], [94192, 94193], [94208, 100343], [100352, 101119], [101120, 101589], [101631, 101631], [101632, 101640], [110576, 110579], [110581, 110587], [110589, 110590], [110592, 110847], [110848, 110882], [110898, 110898], [110928, 110930], [110933, 110933], [110948, 110951], [110960, 111355], [119552, 119638], [119648, 119670], [126980, 126980], [127183, 127183], [127374, 127374], [127377, 127386], [127488, 127490], [127504, 127547], [127552, 127560], [127568, 127569], [127584, 127589], [127744, 127776], [127789, 127797], [127799, 127868], [127870, 127891], [127904, 127946], [127951, 127955], [127968, 127984], [127988, 127988], [127992, 127994], [127995, 127999], [128000, 128062], [128064, 128064], [128066, 128252], [128255, 128317], [128331, 128334], [128336, 128359], [128378, 128378], [128405, 128406], [128420, 128420], [128507, 128511], [128512, 128591], [128640, 128709], [128716, 128716], [128720, 128722], [128725, 128727], [128732, 128735], [128747, 128748], [128756, 128764], [128992, 129003], [129008, 129008], [129292, 129338], [129340, 129349], [129351, 129535], [129648, 129660], [129664, 129673], [129679, 129734], [129742, 129756], [129759, 129769], [129776, 129784], [131072, 173791], [173792, 173823], [173824, 177977], [177978, 177983], [177984, 178205], [178206, 178207], [178208, 183969], [183970, 183983], [183984, 191456], [191457, 191471], [191472, 192093], [192094, 194559], [194560, 195101], [195102, 195103], [195104, 196605], [196608, 201546], [201547, 201551], [201552, 205743], [205744, 262141]]; diff --git a/vendor/symfony/string/Resources/data/wcswidth_table_zero.php b/vendor/symfony/string/Resources/data/wcswidth_table_zero.php index 226352c470ee..f8cbb5014304 100644 --- a/vendor/symfony/string/Resources/data/wcswidth_table_zero.php +++ b/vendor/symfony/string/Resources/data/wcswidth_table_zero.php @@ -3,16 +3,9 @@ namespace RectorPrefix202605; /* - * This file is part of the Symfony package. - * - * (c) Fabien Potencier - * * This file has been auto-generated by the Symfony String Component for internal use. * * Unicode version: 16.0.0 * Date: 2024-09-11T08:21:22+00:00 - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. */ return [[768, 879], [1155, 1159], [1160, 1161], [1425, 1469], [1471, 1471], [1473, 1474], [1476, 1477], [1479, 1479], [1552, 1562], [1611, 1631], [1648, 1648], [1750, 1756], [1759, 1764], [1767, 1768], [1770, 1773], [1809, 1809], [1840, 1866], [1958, 1968], [2027, 2035], [2045, 2045], [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2093], [2137, 2139], [2199, 2207], [2250, 2273], [2275, 2306], [2362, 2362], [2364, 2364], [2369, 2376], [2381, 2381], [2385, 2391], [2402, 2403], [2433, 2433], [2492, 2492], [2497, 2500], [2509, 2509], [2530, 2531], [2558, 2558], [2561, 2562], [2620, 2620], [2625, 2626], [2631, 2632], [2635, 2637], [2641, 2641], [2672, 2673], [2677, 2677], [2689, 2690], [2748, 2748], [2753, 2757], [2759, 2760], [2765, 2765], [2786, 2787], [2810, 2815], [2817, 2817], [2876, 2876], [2879, 2879], [2881, 2884], [2893, 2893], [2901, 2902], [2914, 2915], [2946, 2946], [3008, 3008], [3021, 3021], [3072, 3072], [3076, 3076], [3132, 3132], [3134, 3136], [3142, 3144], [3146, 3149], [3157, 3158], [3170, 3171], [3201, 3201], [3260, 3260], [3263, 3263], [3270, 3270], [3276, 3277], [3298, 3299], [3328, 3329], [3387, 3388], [3393, 3396], [3405, 3405], [3426, 3427], [3457, 3457], [3530, 3530], [3538, 3540], [3542, 3542], [3633, 3633], [3636, 3642], [3655, 3662], [3761, 3761], [3764, 3772], [3784, 3790], [3864, 3865], [3893, 3893], [3895, 3895], [3897, 3897], [3953, 3966], [3968, 3972], [3974, 3975], [3981, 3991], [3993, 4028], [4038, 4038], [4141, 4144], [4146, 4151], [4153, 4154], [4157, 4158], [4184, 4185], [4190, 4192], [4209, 4212], [4226, 4226], [4229, 4230], [4237, 4237], [4253, 4253], [4957, 4959], [5906, 5908], [5938, 5939], [5970, 5971], [6002, 6003], [6068, 6069], [6071, 6077], [6086, 6086], [6089, 6099], [6109, 6109], [6155, 6157], [6159, 6159], [6277, 6278], [6313, 6313], [6432, 6434], [6439, 6440], [6450, 6450], [6457, 6459], [6679, 6680], [6683, 6683], [6742, 6742], [6744, 6750], [6752, 6752], [6754, 6754], [6757, 6764], [6771, 6780], [6783, 6783], [6832, 6845], [6846, 6846], [6847, 6862], [6912, 6915], [6964, 6964], [6966, 6970], [6972, 6972], [6978, 6978], [7019, 7027], [7040, 7041], [7074, 7077], [7080, 7081], [7083, 7085], [7142, 7142], [7144, 7145], [7149, 7149], [7151, 7153], [7212, 7219], [7222, 7223], [7376, 7378], [7380, 7392], [7394, 7400], [7405, 7405], [7412, 7412], [7416, 7417], [7616, 7679], [8400, 8412], [8413, 8416], [8417, 8417], [8418, 8420], [8421, 8432], [11503, 11505], [11647, 11647], [11744, 11775], [12330, 12333], [12441, 12442], [42607, 42607], [42608, 42610], [42612, 42621], [42654, 42655], [42736, 42737], [43010, 43010], [43014, 43014], [43019, 43019], [43045, 43046], [43052, 43052], [43204, 43205], [43232, 43249], [43263, 43263], [43302, 43309], [43335, 43345], [43392, 43394], [43443, 43443], [43446, 43449], [43452, 43453], [43493, 43493], [43561, 43566], [43569, 43570], [43573, 43574], [43587, 43587], [43596, 43596], [43644, 43644], [43696, 43696], [43698, 43700], [43703, 43704], [43710, 43711], [43713, 43713], [43756, 43757], [43766, 43766], [44005, 44005], [44008, 44008], [44013, 44013], [64286, 64286], [65024, 65039], [65056, 65071], [66045, 66045], [66272, 66272], [66422, 66426], [68097, 68099], [68101, 68102], [68108, 68111], [68152, 68154], [68159, 68159], [68325, 68326], [68900, 68903], [68969, 68973], [69291, 69292], [69372, 69375], [69446, 69456], [69506, 69509], [69633, 69633], [69688, 69702], [69744, 69744], [69747, 69748], [69759, 69761], [69811, 69814], [69817, 69818], [69826, 69826], [69888, 69890], [69927, 69931], [69933, 69940], [70003, 70003], [70016, 70017], [70070, 70078], [70089, 70092], [70095, 70095], [70191, 70193], [70196, 70196], [70198, 70199], [70206, 70206], [70209, 70209], [70367, 70367], [70371, 70378], [70400, 70401], [70459, 70460], [70464, 70464], [70502, 70508], [70512, 70516], [70587, 70592], [70606, 70606], [70608, 70608], [70610, 70610], [70625, 70626], [70712, 70719], [70722, 70724], [70726, 70726], [70750, 70750], [70835, 70840], [70842, 70842], [70847, 70848], [70850, 70851], [71090, 71093], [71100, 71101], [71103, 71104], [71132, 71133], [71219, 71226], [71229, 71229], [71231, 71232], [71339, 71339], [71341, 71341], [71344, 71349], [71351, 71351], [71453, 71453], [71455, 71455], [71458, 71461], [71463, 71467], [71727, 71735], [71737, 71738], [71995, 71996], [71998, 71998], [72003, 72003], [72148, 72151], [72154, 72155], [72160, 72160], [72193, 72202], [72243, 72248], [72251, 72254], [72263, 72263], [72273, 72278], [72281, 72283], [72330, 72342], [72344, 72345], [72752, 72758], [72760, 72765], [72767, 72767], [72850, 72871], [72874, 72880], [72882, 72883], [72885, 72886], [73009, 73014], [73018, 73018], [73020, 73021], [73023, 73029], [73031, 73031], [73104, 73105], [73109, 73109], [73111, 73111], [73459, 73460], [73472, 73473], [73526, 73530], [73536, 73536], [73538, 73538], [73562, 73562], [78912, 78912], [78919, 78933], [90398, 90409], [90413, 90415], [92912, 92916], [92976, 92982], [94031, 94031], [94095, 94098], [94180, 94180], [113821, 113822], [118528, 118573], [118576, 118598], [119143, 119145], [119163, 119170], [119173, 119179], [119210, 119213], [119362, 119364], [121344, 121398], [121403, 121452], [121461, 121461], [121476, 121476], [121499, 121503], [121505, 121519], [122880, 122886], [122888, 122904], [122907, 122913], [122915, 122916], [122918, 122922], [123023, 123023], [123184, 123190], [123566, 123566], [123628, 123631], [124140, 124143], [124398, 124399], [125136, 125142], [125252, 125258], [917760, 917999]]; diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php index 0b671dd89f35..d8e3e0e3885a 100644 --- a/vendor/symfony/yaml/Inline.php +++ b/vendor/symfony/yaml/Inline.php @@ -719,6 +719,10 @@ private static function parseTag(string $value, int &$i, int $flags): ?string public static function evaluateBinaryScalar(string $scalar): string { $parsedBinaryData = self::parseScalar(preg_replace('/\s/', '', $scalar)); + if (!\is_scalar($parsedBinaryData ?? '') && !(is_object($parsedBinaryData) && method_exists($parsedBinaryData, '__toString'))) { + throw new ParseException(\sprintf('The "!!binary" tag only supports a base64 encoded string, got "%s".', get_debug_type($parsedBinaryData)), self::$parsedLineNumber + 1, $scalar, self::$parsedFilename); + } + $parsedBinaryData = (string) $parsedBinaryData; if (0 !== \strlen($parsedBinaryData) % 4) { throw new ParseException(\sprintf('The normalized base64 encoded data (data without whitespace characters) length must be a multiple of four (%d bytes given).', \strlen($parsedBinaryData)), self::$parsedLineNumber + 1, $scalar, self::$parsedFilename); } From ebed3876b89412958c77fa3377a2619a3fdec875 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 15 May 2026 18:49:58 +0000 Subject: [PATCH 03/12] Updated Rector to commit 89d191b0be1446e24ebc0b213f3b99a4261be246 https://github.com/rectorphp/rector-src/commit/89d191b0be1446e24ebc0b213f3b99a4261be246 Bump structarmed to ^0.6 (#7990) --- src/Application/VersionResolver.php | 4 ++-- vendor/autoload.php | 2 +- vendor/composer/autoload_real.php | 10 +++++----- vendor/composer/autoload_static.php | 8 ++++---- vendor/scoper-autoload.php | 4 ++-- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index eba304f23f08..f94fb37028a9 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'd2666c743cc2a3f1f053b389f84c4bcd9b63bd1f'; + public const PACKAGE_VERSION = '89d191b0be1446e24ebc0b213f3b99a4261be246'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-14 20:45:19'; + public const RELEASE_DATE = '2026-05-16 01:47:27'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 95a6f25d33da..be2855b47edb 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -19,4 +19,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191::getLoader(); +return ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7::getLoader(); diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 3c4649a0dd59..55c44427fa3a 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191 +class ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7 { private static $loader; @@ -22,17 +22,17 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 4913a5e39ed2..f6a95ab52515 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191 +class ComposerStaticInit90b424c5d36460aa2389d3a48305deb7 { public static $files = array ( '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', @@ -3279,9 +3279,9 @@ class ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitff17c1d1ffacceb8dcfdc8e83e144191::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 39215cbdd036..984669f79dbf 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -14,7 +14,7 @@ // Restore the backup and ensure the excluded files are properly marked as loaded $GLOBALS['__composer_autoload_files'] = \array_merge( $existingComposerAutoloadFiles, - \array_fill_keys(['9eaa6b0f3f04e58e17ae5ecb754ea313', '320cde22f66dd4f5d3fd621d3e88b98f', 'acbe0d033c55cd0a032b415e08d14f4c', '8825ede83f2f289127722d4e842cf7e8', '36dfd6ed9dd74e8062aa61f09caf8554', 'e69f7f6ee287b969198c3c9d6777bd38', '5928a00fa978807cf85d90ec3f4b0147', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a', '1c231eb0a2980bfb45d2eedd095b0490', '7bfbed8d216c917b4d3e46b319a08b5c', '9d2b9fc6db0f153a0a149fefb182415e', 'c4dd194f5b50c0821acf143dcfed86ea', '606a39d89246991a373564698c2d8383'], true) + \array_fill_keys(['320cde22f66dd4f5d3fd621d3e88b98f', '9eaa6b0f3f04e58e17ae5ecb754ea313', '8825ede83f2f289127722d4e842cf7e8', 'acbe0d033c55cd0a032b415e08d14f4c', 'e69f7f6ee287b969198c3c9d6777bd38', '36dfd6ed9dd74e8062aa61f09caf8554', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a', '5928a00fa978807cf85d90ec3f4b0147', '7bfbed8d216c917b4d3e46b319a08b5c', '9d2b9fc6db0f153a0a149fefb182415e', '1c231eb0a2980bfb45d2eedd095b0490', '606a39d89246991a373564698c2d8383', 'c4dd194f5b50c0821acf143dcfed86ea'], true) ); return $loader; @@ -31,7 +31,7 @@ function humbug_phpscoper_expose_class($exposed, $prefixed) { } humbug_phpscoper_expose_class('AutoloadIncluder', 'RectorPrefix202605\AutoloadIncluder'); humbug_phpscoper_expose_class('SomeClass', 'RectorPrefix202605\SomeClass'); -humbug_phpscoper_expose_class('ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191', 'RectorPrefix202605\ComposerAutoloaderInitff17c1d1ffacceb8dcfdc8e83e144191'); +humbug_phpscoper_expose_class('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'RectorPrefix202605\ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7'); humbug_phpscoper_expose_class('Product', 'RectorPrefix202605\Product'); humbug_phpscoper_expose_class('SomeTest', 'RectorPrefix202605\SomeTest'); humbug_phpscoper_expose_class('Normalizer', 'RectorPrefix202605\Normalizer'); From 8d4f03594327f9c28eb9a94a3f3b6c12cea44a1d Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 16 May 2026 21:00:05 +0000 Subject: [PATCH 04/12] Updated Rector to commit 7625651d236a332b8412a19195b7c6153b52d961 https://github.com/rectorphp/rector-src/commit/7625651d236a332b8412a19195b7c6153b52d961 [Php81] Skip NullToStrictStringFuncCallArgRector for magic __get() property access resolving to ErrorType (#7992) --- .../NullToStrictStringIntConverter.php | 27 +++++++++++- src/Application/VersionResolver.php | 4 +- vendor/composer/installed.json | 8 ++-- vendor/composer/installed.php | 2 +- .../src/GeneratedConfig.php | 2 +- ...llerMethodInjectionToConstructorRector.php | 41 +++++++++++++++++++ 6 files changed, 75 insertions(+), 9 deletions(-) diff --git a/rules/Php81/NodeManipulator/NullToStrictStringIntConverter.php b/rules/Php81/NodeManipulator/NullToStrictStringIntConverter.php index de0e51fab954..bfb4779e41f2 100644 --- a/rules/Php81/NodeManipulator/NullToStrictStringIntConverter.php +++ b/rules/Php81/NodeManipulator/NullToStrictStringIntConverter.php @@ -9,6 +9,7 @@ use PhpParser\Node\Expr\Cast\String_ as CastString_; use PhpParser\Node\Expr\FuncCall; use PhpParser\Node\Expr\MethodCall; +use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\Ternary; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Scalar\Int_; @@ -18,9 +19,11 @@ use PHPStan\Analyser\Scope; use PHPStan\Reflection\Native\ExtendedNativeParameterReflection; use PHPStan\Reflection\ParametersAcceptor; +use PHPStan\Reflection\ReflectionProvider; use PHPStan\Type\ErrorType; use PHPStan\Type\MixedType; use PHPStan\Type\NullType; +use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use PHPStan\Type\UnionType; use Rector\NodeAnalyzer\PropertyFetchAnalyzer; @@ -41,11 +44,16 @@ final class NullToStrictStringIntConverter * @readonly */ private PropertyFetchAnalyzer $propertyFetchAnalyzer; - public function __construct(ValueResolver $valueResolver, NodeTypeResolver $nodeTypeResolver, PropertyFetchAnalyzer $propertyFetchAnalyzer) + /** + * @readonly + */ + private ReflectionProvider $reflectionProvider; + public function __construct(ValueResolver $valueResolver, NodeTypeResolver $nodeTypeResolver, PropertyFetchAnalyzer $propertyFetchAnalyzer, ReflectionProvider $reflectionProvider) { $this->valueResolver = $valueResolver; $this->nodeTypeResolver = $nodeTypeResolver; $this->propertyFetchAnalyzer = $propertyFetchAnalyzer; + $this->reflectionProvider = $reflectionProvider; } /** * @param Arg[] $args @@ -101,6 +109,9 @@ public function convertIfNull(FuncCall $funcCall, array $args, int $position, bo } private function shouldSkipValue(Expr $expr, Scope $scope, bool $isTrait, string $targetType): bool { + if ($this->isPropertyFetchOnClassWithMagicGet($expr)) { + return \true; + } $type = $this->nodeTypeResolver->getType($expr); if ($type->isString()->yes() && $targetType === 'string') { return \true; @@ -129,6 +140,20 @@ private function shouldSkipValue(Expr $expr, Scope $scope, bool $isTrait, string } return $this->shouldSkipTrait($expr, $type, $isTrait); } + private function isPropertyFetchOnClassWithMagicGet(Expr $expr): bool + { + if (!$expr instanceof PropertyFetch) { + return \false; + } + $varType = $this->nodeTypeResolver->getType($expr->var); + if (!$varType instanceof ObjectType) { + return \false; + } + if (!$this->reflectionProvider->hasClass($varType->getClassName())) { + return \false; + } + return $this->reflectionProvider->getClass($varType->getClassName())->hasMethod('__get'); + } private function isValidUnionType(Type $type): bool { if (!$type instanceof UnionType) { diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index f94fb37028a9..36cd07e75adb 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '89d191b0be1446e24ebc0b213f3b99a4261be246'; + public const PACKAGE_VERSION = '7625651d236a332b8412a19195b7c6153b52d961'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-16 01:47:27'; + public const RELEASE_DATE = '2026-05-16 22:57:27'; /** * @var int */ diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 34eb5584e729..1ba0cc318422 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1867,12 +1867,12 @@ "source": { "type": "git", "url": "https:\/\/github.com\/rectorphp\/rector-symfony.git", - "reference": "e69bd32bea0dc330a0c79b919945abe67851d887" + "reference": "55ece61bcc1e1bb830da9c21c724652392e63f49" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/e69bd32bea0dc330a0c79b919945abe67851d887", - "reference": "e69bd32bea0dc330a0c79b919945abe67851d887", + "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/55ece61bcc1e1bb830da9c21c724652392e63f49", + "reference": "55ece61bcc1e1bb830da9c21c724652392e63f49", "shasum": "" }, "require": { @@ -1906,7 +1906,7 @@ "tomasvotruba\/unused-public": "^2.2", "tracy\/tracy": "^2.11" }, - "time": "2026-05-08T13:38:57+00:00", + "time": "2026-05-16T20:52:49+00:00", "default-branch": true, "type": "rector-extension", "extra": { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index ab13891a15ab..94ff00106e82 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -2,4 +2,4 @@ namespace RectorPrefix202605; -return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.59.0', 'version' => '12.59.0.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.54.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'e69bd32bea0dc330a0c79b919945abe67851d887', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'e2eb64a57763815ccae07ac1c7653d6cc1c326fd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); +return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.59.0', 'version' => '12.59.0.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.54.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '55ece61bcc1e1bb830da9c21c724652392e63f49', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'e2eb64a57763815ccae07ac1c7653d6cc1c326fd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); diff --git a/vendor/rector/extension-installer/src/GeneratedConfig.php b/vendor/rector/extension-installer/src/GeneratedConfig.php index c719b1020b7b..566125bb543f 100644 --- a/vendor/rector/extension-installer/src/GeneratedConfig.php +++ b/vendor/rector/extension-installer/src/GeneratedConfig.php @@ -9,7 +9,7 @@ */ final class GeneratedConfig { - public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 364fbdb'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main e69bd32')); + public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 364fbdb'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main 55ece61')); private function __construct() { } diff --git a/vendor/rector/rector-symfony/rules/CodeQuality/Rector/Class_/ControllerMethodInjectionToConstructorRector.php b/vendor/rector/rector-symfony/rules/CodeQuality/Rector/Class_/ControllerMethodInjectionToConstructorRector.php index 5eed5abf62b8..4be2fda546dc 100644 --- a/vendor/rector/rector-symfony/rules/CodeQuality/Rector/Class_/ControllerMethodInjectionToConstructorRector.php +++ b/vendor/rector/rector-symfony/rules/CodeQuality/Rector/Class_/ControllerMethodInjectionToConstructorRector.php @@ -6,6 +6,7 @@ use Exception; use PhpParser\Node; use PhpParser\Node\Expr\Closure; +use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Name\FullyQualified; @@ -142,6 +143,8 @@ public function refactor(Node $node): ?Node $paramsToRemove = []; /** @var array $methodParamNamesToReplace */ $methodParamNamesToReplace = []; + /** @var array $removedMethodArgPositions */ + $removedMethodArgPositions = []; foreach ($node->getMethods() as $classMethod) { if ($this->shouldSkipClassMethod($classMethod)) { continue; @@ -188,6 +191,7 @@ public function refactor(Node $node): ?Node $paramsToRemove[] = [$classMethod, $key]; $propertyMetadatas[$paramName] = new PropertyMetadata($paramName, $paramType); $methodParamNamesToReplace[$classMethod->name->toString()][] = $paramName; + $removedMethodArgPositions[$classMethod->name->toString()][] = $key; } } // nothing to move @@ -212,8 +216,45 @@ public function refactor(Node $node): ?Node } $this->replaceParamUseWithPropertyFetch($classMethod, $methodParamNamesToReplace[$methodName]); } + $this->updateCallSitesForRemovedParams($node, $removedMethodArgPositions); return $node; } + /** + * @param array $removedArgPositionsByMethod + */ + private function updateCallSitesForRemovedParams(Class_ $class, array $removedArgPositionsByMethod): void + { + if ($removedArgPositionsByMethod === []) { + return; + } + foreach ($class->getMethods() as $classMethod) { + if ($classMethod->stmts === null) { + continue; + } + $this->traverseNodesWithCallable($classMethod->stmts, function (Node $node) use ($removedArgPositionsByMethod): ?MethodCall { + if (!$node instanceof MethodCall) { + return null; + } + if (!$node->var instanceof Variable) { + return null; + } + if (!$this->isName($node->var, 'this')) { + return null; + } + $methodName = $this->getName($node->name); + if ($methodName === null || !isset($removedArgPositionsByMethod[$methodName])) { + return null; + } + $removedPositions = $removedArgPositionsByMethod[$methodName]; + rsort($removedPositions); + foreach ($removedPositions as $removedPosition) { + unset($node->args[$removedPosition]); + } + $node->args = array_values($node->args); + return $node; + }); + } + } private function shouldSkipClassMethod(ClassMethod $classMethod): bool { if ($classMethod->isMagic() && !$this->isName($classMethod->name, MethodName::INVOKE)) { From abe61a7fcffe1a4301dcf7e4334191b95cf4c993 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 16 May 2026 21:01:19 +0000 Subject: [PATCH 05/12] Updated Rector to commit 30a116f197449097ea71458a52f2574fc2e6657a https://github.com/rectorphp/rector-src/commit/30a116f197449097ea71458a52f2574fc2e6657a feat: create rector to add names to boolean arguments (#7944) --- .../AddNameToBooleanArgumentRector.php | 172 ++++++++++++++++++ src/Application/VersionResolver.php | 4 +- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_static.php | 1 + 4 files changed, 176 insertions(+), 2 deletions(-) create mode 100644 rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php diff --git a/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php b/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php new file mode 100644 index 000000000000..67a89bb8ba36 --- /dev/null +++ b/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php @@ -0,0 +1,172 @@ +reflectionResolver = $reflectionResolver; + $this->valueResolver = $valueResolver; + } + public function getRuleDefinition(): RuleDefinition + { + return new RuleDefinition('Add parameter names to boolean arguments.', [new CodeSample(<<<'CODE_SAMPLE' +in_array($value, $array, true); +CODE_SAMPLE +, <<<'CODE_SAMPLE' +in_array($value, $array, strict: true); +CODE_SAMPLE +)]); + } + /** + * @return array> + */ + public function getNodeTypes(): array + { + return [CallLike::class]; + } + /** + * @param CallLike $node + */ + public function refactor(Node $node): ?Node + { + if ($this->shouldSkip($node)) { + return null; + } + $reflection = $this->reflectionResolver->resolveFunctionLikeReflectionFromCall($node); + if (!$reflection instanceof FunctionReflection && !$reflection instanceof MethodReflection) { + return null; + } + $scope = ScopeFetcher::fetch($node); + $args = $node->getArgs(); + $parameters = ParametersAcceptorSelectorVariantsWrapper::select($reflection, $node, $scope)->getParameters(); + $position = $this->resolveFirstPositionToName($args, $parameters); + if ($position === null) { + return null; + } + $wasChanged = \false; + for ($i = $position; $i < count($args); ++$i) { + $arg = $args[$i]; + if ($arg->name instanceof Identifier) { + continue; + } + $parameterReflection = $this->resolveParameterReflection($arg, $i, $parameters); + if (!$parameterReflection instanceof ParameterReflection) { + return null; + } + $arg->name = new Identifier($parameterReflection->getName()); + $wasChanged = \true; + } + if (!$wasChanged) { + return null; + } + return $node; + } + private function shouldSkip(CallLike $callLike): bool + { + if ($callLike->isFirstClassCallable()) { + return \true; + } + $args = $callLike->getArgs(); + if ($args === []) { + return \true; + } + foreach ($args as $arg) { + if ($arg->unpack) { + return \true; + } + } + return \false; + } + /** + * @param Arg[] $args + * @param ParameterReflection[] $parameters + */ + private function resolveFirstPositionToName(array $args, array $parameters): ?int + { + foreach ($args as $position => $arg) { + if ($arg->name instanceof Identifier) { + continue; + } + if (!$this->valueResolver->isTrueOrFalse($arg->value)) { + continue; + } + if ($this->canNameArgsFromPosition($args, $parameters, $position)) { + return $position; + } + } + return null; + } + /** + * @param Arg[] $args + * @param ParameterReflection[] $parameters + */ + private function canNameArgsFromPosition(array $args, array $parameters, int $position): bool + { + $count = count($args); + for ($i = $position; $i < $count; ++$i) { + $arg = $args[$i]; + if ($arg->name instanceof Identifier) { + continue; + } + $parameterReflection = $this->resolveParameterReflection($arg, $i, $parameters); + if (!$parameterReflection instanceof ParameterReflection) { + return \false; + } + if ($parameterReflection->isVariadic()) { + return \false; + } + } + return \true; + } + /** + * @param ParameterReflection[] $parameters + */ + private function resolveParameterReflection(Arg $arg, int $position, array $parameters): ?ParameterReflection + { + if ($arg->name instanceof Identifier) { + foreach ($parameters as $parameter) { + if ($parameter->getName() === $arg->name->toString()) { + return $parameter; + } + } + return null; + } + $parameter = $parameters[$position] ?? null; + if ($parameter instanceof ParameterReflection) { + return $parameter; + } + $lastParameter = end($parameters); + if ($lastParameter instanceof ParameterReflection && $lastParameter->isVariadic()) { + return $lastParameter; + } + return null; + } +} diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 36cd07e75adb..d7f73e5918ac 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '7625651d236a332b8412a19195b7c6153b52d961'; + public const PACKAGE_VERSION = '30a116f197449097ea71458a52f2574fc2e6657a'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-16 22:57:27'; + public const RELEASE_DATE = '2026-05-16 22:58:28'; /** * @var int */ diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index ebcbeff2e8ce..2187e941dfe3 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1195,6 +1195,7 @@ 'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceMultipleBooleanNotRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanNot/ReplaceMultipleBooleanNotRector.php', 'Rector\\CodeQuality\\Rector\\BooleanNot\\SimplifyDeMorganBinaryRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php', 'Rector\\CodeQuality\\Rector\\BooleanOr\\RepeatedOrEqualToInArrayRector' => $baseDir . '/rules/CodeQuality/Rector/BooleanOr/RepeatedOrEqualToInArrayRector.php', + 'Rector\\CodeQuality\\Rector\\CallLike\\AddNameToBooleanArgumentRector' => $baseDir . '/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php', 'Rector\\CodeQuality\\Rector\\Catch_\\ThrowWithPreviousExceptionRector' => $baseDir . '/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php', 'Rector\\CodeQuality\\Rector\\ClassConstFetch\\VariableConstFetchToClassConstFetchRector' => $baseDir . '/rules/CodeQuality/Rector/ClassConstFetch/VariableConstFetchToClassConstFetchRector.php', 'Rector\\CodeQuality\\Rector\\ClassMethod\\ExplicitReturnNullRector' => $baseDir . '/rules/CodeQuality/Rector/ClassMethod/ExplicitReturnNullRector.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index f6a95ab52515..6162a769c8b2 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -1455,6 +1455,7 @@ class ComposerStaticInit90b424c5d36460aa2389d3a48305deb7 'Rector\\CodeQuality\\Rector\\BooleanNot\\ReplaceMultipleBooleanNotRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanNot/ReplaceMultipleBooleanNotRector.php', 'Rector\\CodeQuality\\Rector\\BooleanNot\\SimplifyDeMorganBinaryRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanNot/SimplifyDeMorganBinaryRector.php', 'Rector\\CodeQuality\\Rector\\BooleanOr\\RepeatedOrEqualToInArrayRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/BooleanOr/RepeatedOrEqualToInArrayRector.php', + 'Rector\\CodeQuality\\Rector\\CallLike\\AddNameToBooleanArgumentRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php', 'Rector\\CodeQuality\\Rector\\Catch_\\ThrowWithPreviousExceptionRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/Catch_/ThrowWithPreviousExceptionRector.php', 'Rector\\CodeQuality\\Rector\\ClassConstFetch\\VariableConstFetchToClassConstFetchRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/ClassConstFetch/VariableConstFetchToClassConstFetchRector.php', 'Rector\\CodeQuality\\Rector\\ClassMethod\\ExplicitReturnNullRector' => __DIR__ . '/../..' . '/rules/CodeQuality/Rector/ClassMethod/ExplicitReturnNullRector.php', From 0af7f581eaaf20e9ba0eb5fa8ad3127676566c75 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 17 May 2026 01:15:33 +0000 Subject: [PATCH 06/12] Updated Rector to commit e7dab262b43e9dff040504b67d6b6b6313ad714f https://github.com/rectorphp/rector-src/commit/e7dab262b43e9dff040504b67d6b6b6313ad714f [automated] Apply Coding Standard (#7993) --- src/Application/VersionResolver.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index d7f73e5918ac..f40ce9689b21 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '30a116f197449097ea71458a52f2574fc2e6657a'; + public const PACKAGE_VERSION = 'e7dab262b43e9dff040504b67d6b6b6313ad714f'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-16 22:58:28'; + public const RELEASE_DATE = '2026-05-17 01:12:42'; /** * @var int */ From 5e273265685a8334cce5e0d311bf9ed946c5e351 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 17 May 2026 02:32:49 +0000 Subject: [PATCH 07/12] Updated Rector to commit 4a063f8f8fb0140aba23b0e222c477e58cd37675 https://github.com/rectorphp/rector-src/commit/4a063f8f8fb0140aba23b0e222c477e58cd37675 [CodeQuality] Add missing MinPhpVersionInterface implements on AddNameToBooleanArgumentRector (#7994) --- .../CallLike/AddNameToBooleanArgumentRector.php | 11 +++++++++-- src/Application/VersionResolver.php | 4 ++-- src/ValueObject/PhpVersionFeature.php | 5 +++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php b/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php index 67a89bb8ba36..d0e179da571a 100644 --- a/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php +++ b/rules/CodeQuality/Rector/CallLike/AddNameToBooleanArgumentRector.php @@ -15,12 +15,14 @@ use Rector\PHPStan\ScopeFetcher; use Rector\Rector\AbstractRector; use Rector\Reflection\ReflectionResolver; +use Rector\ValueObject\PhpVersionFeature; +use Rector\VersionBonding\Contract\MinPhpVersionInterface; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** * @see \Rector\Tests\CodeQuality\Rector\CallLike\AddNameToBooleanArgumentRector\AddNameToBooleanArgumentRectorTest */ -final class AddNameToBooleanArgumentRector extends AbstractRector +final class AddNameToBooleanArgumentRector extends AbstractRector implements MinPhpVersionInterface { /** * @readonly @@ -72,7 +74,8 @@ public function refactor(Node $node): ?Node return null; } $wasChanged = \false; - for ($i = $position; $i < count($args); ++$i) { + $counter = count($args); + for ($i = $position; $i < $counter; ++$i) { $arg = $args[$i]; if ($arg->name instanceof Identifier) { continue; @@ -89,6 +92,10 @@ public function refactor(Node $node): ?Node } return $node; } + public function provideMinPhpVersion(): int + { + return PhpVersionFeature::NAMED_ARGUMENTS; + } private function shouldSkip(CallLike $callLike): bool { if ($callLike->isFirstClassCallable()) { diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index f40ce9689b21..05066260e5f5 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'e7dab262b43e9dff040504b67d6b6b6313ad714f'; + public const PACKAGE_VERSION = '4a063f8f8fb0140aba23b0e222c477e58cd37675'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-17 01:12:42'; + public const RELEASE_DATE = '2026-05-17 09:30:21'; /** * @var int */ diff --git a/src/ValueObject/PhpVersionFeature.php b/src/ValueObject/PhpVersionFeature.php index 6f90be207ab7..1668673170f4 100644 --- a/src/ValueObject/PhpVersionFeature.php +++ b/src/ValueObject/PhpVersionFeature.php @@ -699,4 +699,9 @@ final class PhpVersionFeature * @var int */ public const CLAMP = \Rector\ValueObject\PhpVersion::PHP_86; + /** + * @see https://php.watch/versions/8.0/named-parameters + * @var int + */ + public const NAMED_ARGUMENTS = \Rector\ValueObject\PhpVersion::PHP_80; } From 4c6535fdff7e0c32b096a192ff446ce6423ff63c Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 18 May 2026 06:24:42 +0000 Subject: [PATCH 08/12] Updated Rector to commit 27c0087701a3668d9418f063f186ecdc3e561aa1 https://github.com/rectorphp/rector-src/commit/27c0087701a3668d9418f063f186ecdc3e561aa1 [TypeDeclarationDocblocks] Skip overridden methods in DocblockReturnArrayFromDirectArrayInstanceRector (#7995) --- ...blockReturnArrayFromDirectArrayInstanceRector.php | 12 +++++++++++- src/Application/VersionResolver.php | 4 ++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php index da60b8800b5b..f977f0e8284d 100644 --- a/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php +++ b/rules/TypeDeclarationDocblocks/Rector/ClassMethod/DocblockReturnArrayFromDirectArrayInstanceRector.php @@ -18,6 +18,7 @@ use Rector\TypeDeclarationDocblocks\NodeFinder\ReturnNodeFinder; use Rector\TypeDeclarationDocblocks\TagNodeAnalyzer\UsefulArrayTagNodeAnalyzer; use Rector\TypeDeclarationDocblocks\TypeResolver\ConstantArrayTypeGeneralizer; +use Rector\VendorLocker\ParentClassMethodTypeOverrideGuard; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** @@ -45,13 +46,18 @@ final class DocblockReturnArrayFromDirectArrayInstanceRector extends AbstractRec * @readonly */ private UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer; - public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTypeChanger $phpDocTypeChanger, ConstantArrayTypeGeneralizer $constantArrayTypeGeneralizer, ReturnNodeFinder $returnNodeFinder, UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer) + /** + * @readonly + */ + private ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard; + public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTypeChanger $phpDocTypeChanger, ConstantArrayTypeGeneralizer $constantArrayTypeGeneralizer, ReturnNodeFinder $returnNodeFinder, UsefulArrayTagNodeAnalyzer $usefulArrayTagNodeAnalyzer, ParentClassMethodTypeOverrideGuard $parentClassMethodTypeOverrideGuard) { $this->phpDocInfoFactory = $phpDocInfoFactory; $this->phpDocTypeChanger = $phpDocTypeChanger; $this->constantArrayTypeGeneralizer = $constantArrayTypeGeneralizer; $this->returnNodeFinder = $returnNodeFinder; $this->usefulArrayTagNodeAnalyzer = $usefulArrayTagNodeAnalyzer; + $this->parentClassMethodTypeOverrideGuard = $parentClassMethodTypeOverrideGuard; } public function getNodeTypes(): array { @@ -94,6 +100,10 @@ public function refactor(Node $node): ?Node if ($node->stmts === null) { return null; } + // skip overridden methods to not conflict with parent/interface @return docblock + if ($node instanceof ClassMethod && $this->parentClassMethodTypeOverrideGuard->hasParentClassMethod($node)) { + return null; + } $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node); if ($this->usefulArrayTagNodeAnalyzer->isUsefulArrayTag($phpDocInfo->getReturnTagValue())) { return null; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 05066260e5f5..5a6378d791b4 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '4a063f8f8fb0140aba23b0e222c477e58cd37675'; + public const PACKAGE_VERSION = '27c0087701a3668d9418f063f186ecdc3e561aa1'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-17 09:30:21'; + public const RELEASE_DATE = '2026-05-18 08:22:07'; /** * @var int */ From 4da59a5c2446d133cd5a5c816efd350854102f37 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 18 May 2026 10:18:27 +0000 Subject: [PATCH 09/12] Updated Rector to commit 5be8f82d019842fb56fd0338da0b0569dbdf0bcb https://github.com/rectorphp/rector-src/commit/5be8f82d019842fb56fd0338da0b0569dbdf0bcb [injection] If parent class has dependency via promoted property, but its private, add a new one to child class deps (#7996) --- src/Application/VersionResolver.php | 4 +-- .../ClassDependencyManipulator.php | 29 +++++++++++++++---- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 5a6378d791b4..14ea9ec7690b 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '27c0087701a3668d9418f063f186ecdc3e561aa1'; + public const PACKAGE_VERSION = '5be8f82d019842fb56fd0338da0b0569dbdf0bcb'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-18 08:22:07'; + public const RELEASE_DATE = '2026-05-18 12:15:58'; /** * @var int */ diff --git a/src/NodeManipulator/ClassDependencyManipulator.php b/src/NodeManipulator/ClassDependencyManipulator.php index 6aac9ce09ac5..5901709e5540 100644 --- a/src/NodeManipulator/ClassDependencyManipulator.php +++ b/src/NodeManipulator/ClassDependencyManipulator.php @@ -3,11 +3,13 @@ declare (strict_types=1); namespace Rector\NodeManipulator; +use PhpParser\Modifiers; use PhpParser\Node\Arg; use PhpParser\Node\Expr\Assign; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Name; +use PhpParser\Node\Param; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassLike; @@ -200,12 +202,27 @@ private function addPromotedProperty(Class_ $class, PropertyMetadata $propertyMe { $param = $this->nodeFactory->createPromotedPropertyParam($propertyMetadata); if ($constructClassMethod instanceof ClassMethod) { - // parameter is already added - if ($this->hasMethodParameter($constructClassMethod, $propertyMetadata->getName())) { + $hasOwnConstruct = $class->getMethod(MethodName::CONSTRUCT) instanceof ClassMethod; + $matchedParam = $this->matchMethodParameter($constructClassMethod, $propertyMetadata->getName()); + if ($matchedParam instanceof Param) { + // own constructor already has this param → nothing to do + if ($hasOwnConstruct) { + return; + } + // parent constructor has a same-named param; if it is a private promoted + // property, the child cannot access it via $this — add a fresh constructor + // on the child instead of trying to extend the parent signature + if (($matchedParam->flags & Modifiers::PRIVATE) !== 0) { + $childConstructClassMethod = $this->nodeFactory->createPublicMethod(MethodName::CONSTRUCT); + $childConstructClassMethod->params[] = $param; + $this->classInsertManipulator->addAsFirstMethod($class, $childConstructClassMethod); + return; + } + // parent's matching param is protected/public — accessible from child, no add needed return; } // found construct, but only on parent, add to current class - if (!$class->getMethod(MethodName::CONSTRUCT) instanceof ClassMethod) { + if (!$hasOwnConstruct) { $parentArgs = []; foreach ($constructClassMethod->params as $originalParam) { $parentArgs[] = new Arg(new Variable((string) $this->nodeNameResolver->getName($originalParam->var))); @@ -265,14 +282,14 @@ private function hasClassPropertyAndDependency(Class_ $class, PropertyMetadata $ // is inject/autowired property? return $property instanceof Property; } - private function hasMethodParameter(ClassMethod $classMethod, string $name): bool + private function matchMethodParameter(ClassMethod $classMethod, string $name): ?Param { foreach ($classMethod->params as $param) { if ($this->nodeNameResolver->isName($param->var, $name)) { - return \true; + return $param; } } - return \false; + return null; } private function shouldAddPromotedProperty(Class_ $class, PropertyMetadata $propertyMetadata): bool { From 8c6bee7cfa8976e0d73cf24d5c79fa0e7dbd818b Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 20 May 2026 18:46:46 +0000 Subject: [PATCH 10/12] Updated Rector to commit 7cd03e92a240497c4a3c980befa6d28a1541de82 https://github.com/rectorphp/rector-src/commit/7cd03e92a240497c4a3c980befa6d28a1541de82 Temporary pin webmozart/assert to 2.3.0 to make downgrade working (#7998) --- .../AddArrowFunctionReturnTypeRector.php | 4 +- src/Application/VersionResolver.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 1 + vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 9 +- vendor/composer/installed.json | 26 +- vendor/composer/installed.php | 2 +- .../src/GeneratedConfig.php | 2 +- vendor/scoper-autoload.php | 2 +- vendor/symfony/yaml/CHANGELOG.md | 3 + vendor/symfony/yaml/Inline.php | 374 +++++++++--------- vendor/symfony/yaml/Parser.php | 58 ++- vendor/symfony/yaml/ParserState.php | 62 +++ vendor/symfony/yaml/Yaml.php | 21 +- 15 files changed, 349 insertions(+), 231 deletions(-) create mode 100644 vendor/symfony/yaml/ParserState.php diff --git a/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php b/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php index a05428df8829..68a92f96cf31 100644 --- a/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php +++ b/rules/TypeDeclaration/Rector/ArrowFunction/AddArrowFunctionReturnTypeRector.php @@ -4,6 +4,7 @@ namespace Rector\TypeDeclaration\Rector\ArrowFunction; use PhpParser\Node; +use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\ArrowFunction; use PHPStan\Type\MixedType; use PHPStan\Type\NullType; @@ -52,7 +53,8 @@ public function refactor(Node $node): ?Node if ($node->returnType instanceof Node) { return null; } - $type = $this->nodeTypeResolver->getNativeType($node->expr); + // to allow array shape + $type = $node->expr instanceof ArrayDimFetch ? $this->getType($node->expr) : $this->nodeTypeResolver->getNativeType($node->expr); // not valid to add explicit type in PHP if ($type->isVoid()->yes()) { return null; diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 14ea9ec7690b..38fe2a29104b 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '5be8f82d019842fb56fd0338da0b0569dbdf0bcb'; + public const PACKAGE_VERSION = '7cd03e92a240497c4a3c980befa6d28a1541de82'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-18 12:15:58'; + public const RELEASE_DATE = '2026-05-21 01:43:46'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index be2855b47edb..0101513fec49 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -19,4 +19,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7::getLoader(); +return ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 2187e941dfe3..50d31a4f6367 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1038,6 +1038,7 @@ 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => $vendorDir . '/symfony/yaml/Exception/RuntimeException.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Inline' => $vendorDir . '/symfony/yaml/Inline.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Parser' => $vendorDir . '/symfony/yaml/Parser.php', + 'RectorPrefix202605\\Symfony\\Component\\Yaml\\ParserState' => $vendorDir . '/symfony/yaml/ParserState.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => $vendorDir . '/symfony/yaml/Tag/TaggedValue.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Unescaper' => $vendorDir . '/symfony/yaml/Unescaper.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Yaml' => $vendorDir . '/symfony/yaml/Yaml.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 55c44427fa3a..27e2882ff998 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7 +class ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739 { private static $loader; @@ -22,17 +22,17 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 6162a769c8b2..31057148d7ce 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit90b424c5d36460aa2389d3a48305deb7 +class ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739 { public static $files = array ( '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', @@ -1298,6 +1298,7 @@ class ComposerStaticInit90b424c5d36460aa2389d3a48305deb7 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Exception\\RuntimeException' => __DIR__ . '/..' . '/symfony/yaml/Exception/RuntimeException.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Inline' => __DIR__ . '/..' . '/symfony/yaml/Inline.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Parser' => __DIR__ . '/..' . '/symfony/yaml/Parser.php', + 'RectorPrefix202605\\Symfony\\Component\\Yaml\\ParserState' => __DIR__ . '/..' . '/symfony/yaml/ParserState.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Tag\\TaggedValue' => __DIR__ . '/..' . '/symfony/yaml/Tag/TaggedValue.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Unescaper' => __DIR__ . '/..' . '/symfony/yaml/Unescaper.php', 'RectorPrefix202605\\Symfony\\Component\\Yaml\\Yaml' => __DIR__ . '/..' . '/symfony/yaml/Yaml.php', @@ -3280,9 +3281,9 @@ class ComposerStaticInit90b424c5d36460aa2389d3a48305deb7 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit90b424c5d36460aa2389d3a48305deb7::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 1ba0cc318422..d0b673de9964 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -574,8 +574,8 @@ }, { "name": "illuminate\/contracts", - "version": "v12.59.0", - "version_normalized": "12.59.0.0", + "version": "v12.60.2", + "version_normalized": "12.60.2.0", "source": { "type": "git", "url": "https:\/\/github.com\/illuminate\/contracts.git", @@ -1867,12 +1867,12 @@ "source": { "type": "git", "url": "https:\/\/github.com\/rectorphp\/rector-symfony.git", - "reference": "55ece61bcc1e1bb830da9c21c724652392e63f49" + "reference": "d9b1d43583c7b0699108153347d35aff14827021" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/55ece61bcc1e1bb830da9c21c724652392e63f49", - "reference": "55ece61bcc1e1bb830da9c21c724652392e63f49", + "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/d9b1d43583c7b0699108153347d35aff14827021", + "reference": "d9b1d43583c7b0699108153347d35aff14827021", "shasum": "" }, "require": { @@ -1906,7 +1906,7 @@ "tomasvotruba\/unused-public": "^2.2", "tracy\/tracy": "^2.11" }, - "time": "2026-05-16T20:52:49+00:00", + "time": "2026-05-18T10:21:09+00:00", "default-branch": true, "type": "rector-extension", "extra": { @@ -3087,17 +3087,17 @@ }, { "name": "symfony\/yaml", - "version": "v7.4.11", - "version_normalized": "7.4.11.0", + "version": "v7.4.12", + "version_normalized": "7.4.12.0", "source": { "type": "git", "url": "https:\/\/github.com\/symfony\/yaml.git", - "reference": "e2eb64a57763815ccae07ac1c7653d6cc1c326fd" + "reference": "8b6952b56ca6417f25f7a65758cadd0ce02edc51" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/e2eb64a57763815ccae07ac1c7653d6cc1c326fd", - "reference": "e2eb64a57763815ccae07ac1c7653d6cc1c326fd", + "url": "https:\/\/api.github.com\/repos\/symfony\/yaml\/zipball\/8b6952b56ca6417f25f7a65758cadd0ce02edc51", + "reference": "8b6952b56ca6417f25f7a65758cadd0ce02edc51", "shasum": "" }, "require": { @@ -3111,7 +3111,7 @@ "require-dev": { "symfony\/console": "^6.4|^7.0|^8.0" }, - "time": "2026-05-13T12:04:42+00:00", + "time": "2026-05-20T07:20:23+00:00", "bin": [ "Resources\/bin\/yaml-lint" ], @@ -3142,7 +3142,7 @@ "description": "Loads and dumps YAML files", "homepage": "https:\/\/symfony.com", "support": { - "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v7.4.11" + "source": "https:\/\/github.com\/symfony\/yaml\/tree\/v7.4.12" }, "funding": [ { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 94ff00106e82..483e544852a5 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -2,4 +2,4 @@ namespace RectorPrefix202605; -return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.59.0', 'version' => '12.59.0.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.54.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '55ece61bcc1e1bb830da9c21c724652392e63f49', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'e2eb64a57763815ccae07ac1c7653d6cc1c326fd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); +return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.60.2', 'version' => '12.60.2.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.55.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd9b1d43583c7b0699108153347d35aff14827021', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.12', 'version' => '7.4.12.0', 'reference' => '8b6952b56ca6417f25f7a65758cadd0ce02edc51', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); diff --git a/vendor/rector/extension-installer/src/GeneratedConfig.php b/vendor/rector/extension-installer/src/GeneratedConfig.php index 566125bb543f..30a2962ce50b 100644 --- a/vendor/rector/extension-installer/src/GeneratedConfig.php +++ b/vendor/rector/extension-installer/src/GeneratedConfig.php @@ -9,7 +9,7 @@ */ final class GeneratedConfig { - public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 364fbdb'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main 55ece61')); + public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 364fbdb'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main d9b1d43')); private function __construct() { } diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 984669f79dbf..2cfb9b9b026f 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -31,7 +31,7 @@ function humbug_phpscoper_expose_class($exposed, $prefixed) { } humbug_phpscoper_expose_class('AutoloadIncluder', 'RectorPrefix202605\AutoloadIncluder'); humbug_phpscoper_expose_class('SomeClass', 'RectorPrefix202605\SomeClass'); -humbug_phpscoper_expose_class('ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7', 'RectorPrefix202605\ComposerAutoloaderInit90b424c5d36460aa2389d3a48305deb7'); +humbug_phpscoper_expose_class('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'RectorPrefix202605\ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739'); humbug_phpscoper_expose_class('Product', 'RectorPrefix202605\Product'); humbug_phpscoper_expose_class('SomeTest', 'RectorPrefix202605\SomeTest'); humbug_phpscoper_expose_class('Normalizer', 'RectorPrefix202605\Normalizer'); diff --git a/vendor/symfony/yaml/CHANGELOG.md b/vendor/symfony/yaml/CHANGELOG.md index 364bf66dfd68..423ce3114698 100644 --- a/vendor/symfony/yaml/CHANGELOG.md +++ b/vendor/symfony/yaml/CHANGELOG.md @@ -42,6 +42,9 @@ CHANGELOG 5.4 --- + * Add a `$maxNestingLevel` argument to `Parser::__construct()`, `Yaml::parse()` and `Yaml::parseFile()` to bound recursion depth (default 128) + * Add a `$maxAliasesForCollections` argument to `Parser::__construct()`, `Yaml::parse()` and `Yaml::parseFile()` to bound alias expansion of collection values (default 128) + * Add `Yaml::PARSE_EXCEPTION_ON_ALIAS` to reject YAML aliases while parsing untrusted input * Add new `lint:yaml dirname --exclude=/dirname/foo.yaml --exclude=/dirname/bar.yaml` option to exclude one or more specific files from multiple file list * Allow negatable for the parse tags option with `--no-parse-tags` diff --git a/vendor/symfony/yaml/Inline.php b/vendor/symfony/yaml/Inline.php index d8e3e0e3885a..375f7eeb6248 100644 --- a/vendor/symfony/yaml/Inline.php +++ b/vendor/symfony/yaml/Inline.php @@ -49,26 +49,28 @@ public static function initialize(int $flags, ?int $parsedLineNumber = null, ?st * @throws ParseException * @return mixed */ - public static function parse(string $value, int $flags = 0, array &$references = []) + public static function parse(string $value, int $flags = 0, array &$references = [], ?ParserState $state = null) { self::initialize($flags); + $state ??= new ParserState(); $value = trim($value); if ('' === $value) { return ''; } $i = 0; + $isQuoted = null; $tag = self::parseTag($value, $i, $flags); switch ($value[$i]) { case '[': - $result = self::parseSequence($value, $flags, $i, $references); + $result = self::parseSequence($state, $value, $flags, $i, $references); ++$i; break; case '{': - $result = self::parseMapping($value, $flags, $i, $references); + $result = self::parseMapping($state, $value, $flags, $i, $references); ++$i; break; default: - $result = self::parseScalar($value, $flags, null, $i, \true, $references); + $result = self::parseScalar($value, $flags, null, $i, \true, $references, $isQuoted, $state); } // some comments are allowed at the end if (preg_replace('/\s*#.*$/A', '', (string) substr($value, $i))) { @@ -246,7 +248,7 @@ private static function dumpNull(int $flags, bool $rootLevel = \false): string * @throws ParseException When malformed inline YAML string is parsed * @return mixed */ - public static function parseScalar(string $scalar, int $flags = 0, ?array $delimiters = null, int &$i = 0, bool $evaluate = \true, array &$references = [], ?bool &$isQuoted = null) + public static function parseScalar(string $scalar, int $flags = 0, ?array $delimiters = null, int &$i = 0, bool $evaluate = \true, array &$references = [], ?bool &$isQuoted = null, ?ParserState $state = null) { if (\in_array($scalar[$i], ['"', "'"], \true)) { // quoted scalar @@ -283,7 +285,8 @@ public static function parseScalar(string $scalar, int $flags = 0, ?array $delim throw new ParseException(\sprintf('The reserved indicator "%s" cannot start a plain scalar; you need to quote the scalar.', $output[0]), self::$parsedLineNumber + 1, $output, self::$parsedFilename); } if ($evaluate) { - $output = self::evaluateScalar($output, $flags, $references, $isQuoted); + $state ??= new ParserState(); + $output = self::evaluateScalar($state, $output, $flags, $references, $isQuoted); } } return $output; @@ -313,82 +316,87 @@ private static function parseQuotedScalar(string $scalar, int &$i = 0): string * * @throws ParseException When malformed inline YAML string is parsed */ - private static function parseSequence(string $sequence, int $flags, int &$i = 0, array &$references = []): array + private static function parseSequence(ParserState $state, string $sequence, int $flags, int &$i = 0, array &$references = []): array { + $state->enterNestingLevel(self::$parsedLineNumber + 1, null, self::$parsedFilename); $output = []; $len = \strlen($sequence); ++$i; - // [foo, bar, ...] - $lastToken = null; - while ($i < $len) { - if (']' === $sequence[$i]) { - return $output; - } - if (',' === $sequence[$i] || ' ' === $sequence[$i]) { - if (',' === $sequence[$i] && (null === $lastToken || 'separator' === $lastToken)) { - $output[] = null; - } elseif (',' === $sequence[$i]) { - $lastToken = 'separator'; + try { + // [foo, bar, ...] + $lastToken = null; + while ($i < $len) { + if (']' === $sequence[$i]) { + return $output; } - ++$i; - continue; - } - $tag = self::parseTag($sequence, $i, $flags); - switch ($sequence[$i]) { - case '[': - // nested sequence - $value = self::parseSequence($sequence, $flags, $i, $references); - break; - case '{': - // nested mapping - $value = self::parseMapping($sequence, $flags, $i, $references); - break; - default: - $hasAnchorAtStart = null === $tag && isset($sequence[$i]) && '&' === $sequence[$i]; - $value = self::parseScalar($sequence, $flags, [',', ']'], $i, null === $tag, $references, $isQuoted); - // the value can be an array if a reference has been resolved to an array var - if (\is_string($value) && !$isQuoted && strpos($value, ': ') !== \false) { - // embedded mapping? - $j = $i; - $mappingValue = $value; - $mappingException = null; - do { - try { - $pos = 0; - $value = self::parseMapping('{' . $mappingValue . '}', $flags, $pos, $references); - $i = $j; - $mappingException = null; - break; - } catch (ParseException $exception) { - $mappingException = $exception; - if ($j >= $len) { - break; - } - $mappingValue .= $sequence[$j++]; - if ($j >= $len) { + if (',' === $sequence[$i] || ' ' === $sequence[$i]) { + if (',' === $sequence[$i] && (null === $lastToken || 'separator' === $lastToken)) { + $output[] = null; + } elseif (',' === $sequence[$i]) { + $lastToken = 'separator'; + } + ++$i; + continue; + } + $tag = self::parseTag($sequence, $i, $flags); + switch ($sequence[$i]) { + case '[': + // nested sequence + $value = self::parseSequence($state, $sequence, $flags, $i, $references); + break; + case '{': + // nested mapping + $value = self::parseMapping($state, $sequence, $flags, $i, $references); + break; + default: + $hasAnchorAtStart = null === $tag && isset($sequence[$i]) && '&' === $sequence[$i]; + $value = self::parseScalar($sequence, $flags, [',', ']'], $i, null === $tag, $references, $isQuoted, $state); + // the value can be an array if a reference has been resolved to an array var + if (\is_string($value) && !$isQuoted && strpos($value, ': ') !== \false) { + // embedded mapping? + $j = $i; + $mappingValue = $value; + $mappingException = null; + do { + try { + $pos = 0; + $value = self::parseMapping($state, '{' . $mappingValue . '}', $flags, $pos, $references); + $i = $j; + $mappingException = null; break; + } catch (ParseException $exception) { + $mappingException = $exception; + if ($j >= $len) { + break; + } + $mappingValue .= $sequence[$j++]; + if ($j >= $len) { + break; + } + $mappingValue .= self::parseScalar($sequence, $flags, [',', ']'], $j, null === $tag, $references); } - $mappingValue .= self::parseScalar($sequence, $flags, [',', ']'], $j, null === $tag, $references); + } while ($j < $len); + if ($mappingException) { + throw $mappingException; } - } while ($j < $len); - if ($mappingException) { - throw $mappingException; } - } - if ($hasAnchorAtStart && !$isQuoted && \is_string($value) && '' !== $value && '&' === $value[0] && Parser::preg_match(Parser::REFERENCE_PATTERN, $value, $matches)) { - $value = '' === $matches['value'] ? null : $matches['value']; - $references[$matches['ref']] = $value; - } - --$i; - } - if (null !== $tag && '' !== $tag) { - $value = new TaggedValue($tag, $value); + if ($hasAnchorAtStart && !$isQuoted && \is_string($value) && '' !== $value && '&' === $value[0] && Parser::preg_match(Parser::REFERENCE_PATTERN, $value, $matches)) { + $value = '' === $matches['value'] ? null : $matches['value']; + $references[$matches['ref']] = $value; + } + --$i; + } + if (null !== $tag && '' !== $tag) { + $value = new TaggedValue($tag, $value); + } + $output[] = $value; + $lastToken = 'value'; + ++$i; } - $output[] = $value; - $lastToken = 'value'; - ++$i; + throw new ParseException(\sprintf('Malformed inline YAML string: "%s".', $sequence), self::$parsedLineNumber + 1, null, self::$parsedFilename); + } finally { + $state->leaveNestingLevel(); } - throw new ParseException(\sprintf('Malformed inline YAML string: "%s".', $sequence), self::$parsedLineNumber + 1, null, self::$parsedFilename); } /** * Parses a YAML mapping. @@ -396,128 +404,133 @@ private static function parseSequence(string $sequence, int $flags, int &$i = 0, * @throws ParseException When malformed inline YAML string is parsed * @return mixed[]|\stdClass */ - private static function parseMapping(string $mapping, int $flags, int &$i = 0, array &$references = []) + private static function parseMapping(ParserState $state, string $mapping, int $flags, int &$i = 0, array &$references = []) { + $state->enterNestingLevel(self::$parsedLineNumber + 1, null, self::$parsedFilename); $output = []; $len = \strlen($mapping); ++$i; $allowOverwrite = \false; - // {foo: bar, bar:foo, ...} - while ($i < $len) { - switch ($mapping[$i]) { - case ' ': - case ',': - case "\n": - ++$i; - continue 2; - case '}': - if (self::$objectForMap) { - return (object) $output; - } - return $output; - } - // key - $offsetBeforeKeyParsing = $i; - $isKeyQuoted = \in_array($mapping[$i], ['"', "'"], \true); - $key = self::parseScalar($mapping, $flags, [':', ' '], $i, \false); - if ($offsetBeforeKeyParsing === $i) { - throw new ParseException('Missing mapping key.', self::$parsedLineNumber + 1, $mapping); - } - if ('!php/const' === $key || '!php/enum' === $key) { - $key .= ' ' . self::parseScalar($mapping, $flags, ['(?leaveNestingLevel(); } - throw new ParseException(\sprintf('Malformed inline YAML string: "%s".', $mapping), self::$parsedLineNumber + 1, null, self::$parsedFilename); } /** * Evaluates scalars and replaces magic values. @@ -525,7 +538,7 @@ private static function parseMapping(string $mapping, int $flags, int &$i = 0, a * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved * @return mixed */ - private static function evaluateScalar(string $scalar, int $flags, array &$references = [], ?bool &$isQuotedString = null) + private static function evaluateScalar(ParserState $state, string $scalar, int $flags, array &$references = [], ?bool &$isQuotedString = null) { $isQuotedString = \false; $scalar = trim($scalar); @@ -542,6 +555,7 @@ private static function evaluateScalar(string $scalar, int $flags, array &$refer if (!\array_key_exists($value, $references)) { throw new ParseException(\sprintf('Reference "%s" does not exist.', $value), self::$parsedLineNumber + 1, $value, self::$parsedFilename); } + $state->countAlias($references[$value], self::$parsedLineNumber + 1, null, self::$parsedFilename); return $references[$value]; } $scalarLower = strtolower($scalar); diff --git a/vendor/symfony/yaml/Parser.php b/vendor/symfony/yaml/Parser.php index fec8ebe8c7b5..a5772e36d48f 100644 --- a/vendor/symfony/yaml/Parser.php +++ b/vendor/symfony/yaml/Parser.php @@ -24,6 +24,8 @@ class Parser public const TAG_PATTERN = '(?P![\w!.\/:-]+)'; public const BLOCK_SCALAR_HEADER_PATTERN = '(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?'; public const REFERENCE_PATTERN = '#^&(?P[^ ]++) *+(?P.*)#u'; + public const DEFAULT_MAX_NESTING_LEVEL = 128; + public const DEFAULT_MAX_ALIASES_FOR_COLLECTIONS = 128; private ?string $filename = null; private int $offset = 0; private int $numberOfParsedLines = 0; @@ -35,6 +37,18 @@ class Parser private array $skippedLineNumbers = []; private array $locallySkippedLineNumbers = []; private array $refsBeingParsed = []; + private ?ParserState $state = null; + public function __construct(int $maxNestingLevel = self::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = self::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS) + { + if ($maxNestingLevel < 1) { + throw new \InvalidArgumentException('The maximum nesting depth must be greater than 0.'); + } + if ($maxAliasesForCollections < 0) { + throw new \InvalidArgumentException('The maximum number of collection aliases must be greater than or equal to 0.'); + } + $this->getState()->maxNestingLevel = $maxNestingLevel; + $this->getState()->maxAliasesForCollections = $maxAliasesForCollections; + } /** * Parses a YAML file into a PHP value. * @@ -74,6 +88,9 @@ public function parse(string $value, int $flags = 0) throw new ParseException('The YAML value does not appear to be valid UTF-8.', -1, null, $this->filename); } $this->refs = []; + $state = $this->getState(); + $state->reset(); + $state->aliasesEnabled = 0 === (Yaml::PARSE_EXCEPTION_ON_ALIAS & $flags); try { $data = $this->doParse($value, $flags); } finally { @@ -86,9 +103,14 @@ public function parse(string $value, int $flags = 0) $this->skippedLineNumbers = []; $this->locallySkippedLineNumbers = []; $this->totalNumberOfLines = null; + $state->reset(); } return $data; } + private function getState(): ParserState + { + return $this->state ?? $this->state = new ParserState(); + } /** * @return mixed */ @@ -195,6 +217,7 @@ private function doParse(string $value, int $flags) throw new ParseException(\sprintf('Reference "%s" does not exist.', $refName), $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } $refValue = $this->refs[$refName]; + $this->getState()->countAlias($refValue, $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); if (Yaml::PARSE_OBJECT_FOR_MAP & $flags && $refValue instanceof \stdClass) { $refValue = (array) $refValue; } @@ -310,7 +333,7 @@ private function doParse(string $value, int $flags) throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } try { - return Inline::parse($this->lexInlineQuotedString(), $flags, $this->refs); + return Inline::parse($this->lexInlineQuotedString(), $flags, $this->refs, $this->state); } catch (ParseException $e) { $e->setParsedLine($this->getRealCurrentLineNb() + 1); $e->setSnippet($this->currentLine); @@ -321,7 +344,7 @@ private function doParse(string $value, int $flags) throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } try { - $parsedMapping = Inline::parse($this->lexInlineMapping(), $flags, $this->refs); + $parsedMapping = Inline::parse($this->lexInlineMapping(), $flags, $this->refs, $this->state); while ($this->moveToNextLine()) { if (!$this->isCurrentLineEmpty()) { throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); @@ -338,7 +361,7 @@ private function doParse(string $value, int $flags) throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); } try { - $parsedSequence = Inline::parse($this->lexInlineSequence(), $flags, $this->refs); + $parsedSequence = Inline::parse($this->lexInlineSequence(), $flags, $this->refs, $this->state); while ($this->moveToNextLine()) { if (!$this->isCurrentLineEmpty()) { throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); @@ -361,7 +384,7 @@ private function doParse(string $value, int $flags) // 1-liner optionally followed by newline(s) if (\is_string($value) && $this->lines[0] === trim($value)) { try { - $value = Inline::parse($this->lines[0], $flags, $this->refs); + $value = Inline::parse($this->lines[0], $flags, $this->refs, $this->state); } catch (ParseException $e) { $e->setParsedLine($this->getRealCurrentLineNb() + 1); $e->setSnippet($this->currentLine); @@ -408,7 +431,7 @@ private function doParse(string $value, int $flags) } } try { - return Inline::parse(trim($value)); + return Inline::parse(trim($value), 0, $this->refs, $this->state); } catch (ParseException $exception) { // fall-through to the ParseException thrown below } @@ -446,7 +469,13 @@ private function parseBlock(int $offset, string $yaml, int $flags) $parser->skippedLineNumbers = $skippedLineNumbers; $parser->refs =& $this->refs; $parser->refsBeingParsed = $this->refsBeingParsed; - return $parser->doParse($yaml, $flags); + $parser->state = $this->state; + $this->getState()->enterNestingLevel($offset + 1, $this->currentLine, $this->filename); + try { + return $parser->doParse($yaml, $flags); + } finally { + $this->getState()->leaveNestingLevel(); + } } /** * Returns the current line number (takes the offset into account). @@ -604,6 +633,7 @@ private function parseValue(string $value, int $flags, string $context) } throw new ParseException(\sprintf('Reference "%s" does not exist.', $value), $this->currentLineNb + 1, $this->currentLine, $this->filename); } + $this->getState()->countAlias($this->refs[$value], $this->getRealCurrentLineNb() + 1, $this->currentLine, $this->filename); return $this->refs[$value]; } if (\in_array($value[0], ['!', '|', '>'], \true) && self::preg_match('/^(?:' . self::TAG_PATTERN . ' +)?' . self::BLOCK_SCALAR_HEADER_PATTERN . '$/', $value, $matches)) { @@ -620,16 +650,16 @@ private function parseValue(string $value, int $flags, string $context) try { if ('' !== $value && '{' === $value[0]) { $cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value)); - return Inline::parse($this->lexInlineMapping($cursor), $flags, $this->refs); + return Inline::parse($this->lexInlineMapping($cursor), $flags, $this->refs, $this->state); } elseif ('' !== $value && '[' === $value[0]) { $cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value)); - return Inline::parse($this->lexInlineSequence($cursor), $flags, $this->refs); + return Inline::parse($this->lexInlineSequence($cursor), $flags, $this->refs, $this->state); } switch ($value[0] ?? '') { case '"': case "'": $cursor = \strlen(rtrim($this->currentLine)) - \strlen(rtrim($value)); - $parsedValue = Inline::parse($this->lexInlineQuotedString($cursor), $flags, $this->refs); + $parsedValue = Inline::parse($this->lexInlineQuotedString($cursor), $flags, $this->refs, $this->state); if (isset($this->currentLine[$cursor]) && preg_replace('/\s*(#.*)?$/A', '', (string) substr($this->currentLine, $cursor))) { throw new ParseException(\sprintf('Unexpected characters near "%s".', substr($this->currentLine, $cursor))); } @@ -663,7 +693,7 @@ private function parseValue(string $value, int $flags, string $context) } } Inline::$parsedLineNumber = $this->getRealCurrentLineNb(); - $parsedValue = Inline::parse($value, $flags, $this->refs); + $parsedValue = Inline::parse($value, $flags, $this->refs, $this->state); if ('mapping' === $context && \is_string($parsedValue) && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && strpos($parsedValue, ': ') !== \false) { throw new ParseException('A colon cannot be used in an unquoted mapping value.', $this->getRealCurrentLineNb() + 1, $value, $this->filename); } @@ -816,23 +846,23 @@ private function cleanup(string $value): string $value = str_replace(["\r\n", "\r"], "\n", $value); // strip YAML header $count = 0; - $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count); + $value = preg_replace('#^%YAML[: ][\d.]++[^\n]*+\n#u', '', $value, -1, $count); $this->offset += $count; // remove leading comments - $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count); + $trimmedValue = preg_replace('#^(?:\#[^\n]*+\n)++#', '', $value, -1, $count); if (1 === $count) { // items have been removed, update the offset $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); $value = $trimmedValue; } // remove start of the document marker (---) - $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count); + $trimmedValue = preg_replace('#^---[^\n]*+\n#', '', $value, -1, $count); if (1 === $count) { // items have been removed, update the offset $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); $value = $trimmedValue; // remove end of the document marker (...) - $value = preg_replace('#\.\.\.\s*$#', '', $value); + $value = preg_replace('#\.\.\.[ \t]*+$#', '', $value); } return $value; } diff --git a/vendor/symfony/yaml/ParserState.php b/vendor/symfony/yaml/ParserState.php new file mode 100644 index 000000000000..225ef19aa03a --- /dev/null +++ b/vendor/symfony/yaml/ParserState.php @@ -0,0 +1,62 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ +namespace RectorPrefix202605\Symfony\Component\Yaml; + +use RectorPrefix202605\Symfony\Component\Yaml\Exception\ParseException; +use RectorPrefix202605\Symfony\Component\Yaml\Tag\TaggedValue; +/** + * @internal + */ +final class ParserState +{ + public int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL; + public int $currentNestingLevel = 0; + public int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS; + public int $collectionAliasCount = 0; + public bool $aliasesEnabled = \true; + public function reset(): void + { + $this->currentNestingLevel = 0; + $this->collectionAliasCount = 0; + $this->aliasesEnabled = \true; + } + public function enterNestingLevel(int $line, ?string $snippet, ?string $filename): void + { + if (++$this->currentNestingLevel > $this->maxNestingLevel) { + --$this->currentNestingLevel; + throw new ParseException(\sprintf('Maximum nesting depth of %d exceeded.', $this->maxNestingLevel), $line, $snippet, $filename); + } + } + public function leaveNestingLevel(): void + { + if ($this->currentNestingLevel > 0) { + --$this->currentNestingLevel; + } + } + /** + * @param mixed $refValue + */ + public function countAlias($refValue, int $line, ?string $snippet, ?string $filename): void + { + if (!$this->aliasesEnabled) { + throw new ParseException('Aliases are disabled.', $line, $snippet, $filename); + } + if ($refValue instanceof TaggedValue) { + $refValue = $refValue->getValue(); + } + if (!\is_array($refValue) && !$refValue instanceof \stdClass) { + return; + } + if (++$this->collectionAliasCount > $this->maxAliasesForCollections) { + throw new ParseException(\sprintf('Maximum number of collection aliases (%d) exceeded. This limit can be increased via the Parser constructor.', $this->maxAliasesForCollections), $line, $snippet, $filename); + } + } +} diff --git a/vendor/symfony/yaml/Yaml.php b/vendor/symfony/yaml/Yaml.php index b7725337f840..4f05532886bd 100644 --- a/vendor/symfony/yaml/Yaml.php +++ b/vendor/symfony/yaml/Yaml.php @@ -36,6 +36,7 @@ class Yaml public const DUMP_NULL_AS_EMPTY = 8192; public const DUMP_COMPACT_NESTED_MAPPING = 16384; public const DUMP_FORCE_DOUBLE_QUOTES_ON_VALUES = 32768; + public const PARSE_EXCEPTION_ON_ALIAS = 65536; /** * Parses a YAML file into a PHP value. * @@ -44,15 +45,17 @@ class Yaml * $array = Yaml::parseFile('config.yml'); * print_r($array); * - * @param string $filename The path to the YAML file to be parsed - * @param int-mask-of $flags A bit field of PARSE_* constants to customize the YAML parser behavior + * @param string $filename The path to the YAML file to be parsed + * @param int-mask-of $flags A bit field of PARSE_* constants to customize the YAML parser behavior + * @param int $maxNestingLevel The maximum nesting depth for nested YAML blocks + * @param int $maxAliasesForCollections The maximum number of collection aliases to resolve * * @throws ParseException If the file could not be read or the YAML is not valid * @return mixed */ - public static function parseFile(string $filename, int $flags = 0) + public static function parseFile(string $filename, int $flags = 0, int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS) { - $yaml = new Parser(); + $yaml = new Parser($maxNestingLevel, $maxAliasesForCollections); return $yaml->parseFile($filename, $flags); } /** @@ -64,15 +67,17 @@ public static function parseFile(string $filename, int $flags = 0) * print_r($array); * * - * @param string $input A string containing YAML - * @param int-mask-of $flags A bit field of PARSE_* constants to customize the YAML parser behavior + * @param string $input A string containing YAML + * @param int-mask-of $flags A bit field of PARSE_* constants to customize the YAML parser behavior + * @param int $maxNestingLevel The maximum nesting depth for nested YAML blocks + * @param int $maxAliasesForCollections The maximum number of collection aliases to resolve * * @throws ParseException If the YAML is not valid * @return mixed */ - public static function parse(string $input, int $flags = 0) + public static function parse(string $input, int $flags = 0, int $maxNestingLevel = Parser::DEFAULT_MAX_NESTING_LEVEL, int $maxAliasesForCollections = Parser::DEFAULT_MAX_ALIASES_FOR_COLLECTIONS) { - $yaml = new Parser(); + $yaml = new Parser($maxNestingLevel, $maxAliasesForCollections); return $yaml->parse($input, $flags); } /** From 110a99aa92c8ce888914359341fa1566b0df25ab Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 20 May 2026 19:21:25 +0000 Subject: [PATCH 11/12] Updated Rector to commit ee9e4d565f58117c8d17bfe93a8126bbb5de6d3b https://github.com/rectorphp/rector-src/commit/ee9e4d565f58117c8d17bfe93a8126bbb5de6d3b Bump webmozart/assert to ^2.4 (#7999) --- src/Application/VersionResolver.php | 4 +- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 2 + vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 10 +- vendor/composer/installed.json | 26 +- vendor/composer/installed.php | 2 +- vendor/nette/utils/src/Utils/DateTime.php | 2 +- .../src/GeneratedConfig.php | 2 +- ...tandaloneNullTrueFalseReturnTypeRector.php | 50 +- vendor/scoper-autoload.php | 2 +- .../console/Command/TraceableCommand.php | 2 +- .../symfony/console/Helper/QuestionHelper.php | 2 +- .../symfony/polyfill-mbstring/bootstrap80.php | 6 +- vendor/webmozart/assert/CHANGELOG.md | 6 + vendor/webmozart/assert/README.md | 20 +- vendor/webmozart/assert/composer.json | 6 +- vendor/webmozart/assert/src/Assert.php | 121 ++- vendor/webmozart/assert/src/HasAssert.php | 10 + vendor/webmozart/assert/src/Mixin.php | 813 +++++++++--------- vendor/webmozart/assert/src/PsalmPlugin.php | 38 + 21 files changed, 616 insertions(+), 520 deletions(-) create mode 100644 vendor/webmozart/assert/src/HasAssert.php create mode 100644 vendor/webmozart/assert/src/PsalmPlugin.php diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 38fe2a29104b..de1ef416fcb2 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '7cd03e92a240497c4a3c980befa6d28a1541de82'; + public const PACKAGE_VERSION = 'ee9e4d565f58117c8d17bfe93a8126bbb5de6d3b'; /** * @api * @var string */ - public const RELEASE_DATE = '2026-05-21 01:43:46'; + public const RELEASE_DATE = '2026-05-21 02:19:06'; /** * @var int */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 0101513fec49..ea19f021116b 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -19,4 +19,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739::getLoader(); +return ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 50d31a4f6367..9a6943248ce1 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -1067,8 +1067,10 @@ 'RectorPrefix202605\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php', 'RectorPrefix202605\\Symplify\\EasyParallel\\ValueObject\\Schedule' => $vendorDir . '/symplify/easy-parallel/src/ValueObject/Schedule.php', 'RectorPrefix202605\\Webmozart\\Assert\\Assert' => $vendorDir . '/webmozart/assert/src/Assert.php', + 'RectorPrefix202605\\Webmozart\\Assert\\HasAssert' => $vendorDir . '/webmozart/assert/src/HasAssert.php', 'RectorPrefix202605\\Webmozart\\Assert\\InvalidArgumentException' => $vendorDir . '/webmozart/assert/src/InvalidArgumentException.php', 'RectorPrefix202605\\Webmozart\\Assert\\Mixin' => $vendorDir . '/webmozart/assert/src/Mixin.php', + 'RectorPrefix202605\\Webmozart\\Assert\\PsalmPlugin' => $vendorDir . '/webmozart/assert/src/PsalmPlugin.php', 'Rector\\Application\\ApplicationFileProcessor' => $baseDir . '/src/Application/ApplicationFileProcessor.php', 'Rector\\Application\\ChangedNodeScopeRefresher' => $baseDir . '/src/Application/ChangedNodeScopeRefresher.php', 'Rector\\Application\\FileProcessor' => $baseDir . '/src/Application/FileProcessor.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 27e2882ff998..8a8376fca4ef 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739 +class ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139 { private static $loader; @@ -22,17 +22,17 @@ public static function getLoader() return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInita1f7d80ce98bceff62e283e14af86139::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInita1f7d80ce98bceff62e283e14af86139::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 31057148d7ce..79a53f202a6e 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739 +class ComposerStaticInita1f7d80ce98bceff62e283e14af86139 { public static $files = array ( '6e3fae29631ef280660b3cdad06f25a8' => __DIR__ . '/..' . '/symfony/deprecation-contracts/function.php', @@ -1327,8 +1327,10 @@ class ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739 'RectorPrefix202605\\Symplify\\EasyParallel\\ValueObject\\ProcessPool' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/ProcessPool.php', 'RectorPrefix202605\\Symplify\\EasyParallel\\ValueObject\\Schedule' => __DIR__ . '/..' . '/symplify/easy-parallel/src/ValueObject/Schedule.php', 'RectorPrefix202605\\Webmozart\\Assert\\Assert' => __DIR__ . '/..' . '/webmozart/assert/src/Assert.php', + 'RectorPrefix202605\\Webmozart\\Assert\\HasAssert' => __DIR__ . '/..' . '/webmozart/assert/src/HasAssert.php', 'RectorPrefix202605\\Webmozart\\Assert\\InvalidArgumentException' => __DIR__ . '/..' . '/webmozart/assert/src/InvalidArgumentException.php', 'RectorPrefix202605\\Webmozart\\Assert\\Mixin' => __DIR__ . '/..' . '/webmozart/assert/src/Mixin.php', + 'RectorPrefix202605\\Webmozart\\Assert\\PsalmPlugin' => __DIR__ . '/..' . '/webmozart/assert/src/PsalmPlugin.php', 'Rector\\Application\\ApplicationFileProcessor' => __DIR__ . '/../..' . '/src/Application/ApplicationFileProcessor.php', 'Rector\\Application\\ChangedNodeScopeRefresher' => __DIR__ . '/../..' . '/src/Application/ChangedNodeScopeRefresher.php', 'Rector\\Application\\FileProcessor' => __DIR__ . '/../..' . '/src/Application/FileProcessor.php', @@ -3281,9 +3283,9 @@ class ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit584dccbcd7f4bd54be6d5670864cf739::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInita1f7d80ce98bceff62e283e14af86139::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInita1f7d80ce98bceff62e283e14af86139::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInita1f7d80ce98bceff62e283e14af86139::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index d0b673de9964..1b0883a1ecba 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1742,12 +1742,12 @@ "source": { "type": "git", "url": "https:\/\/github.com\/rectorphp\/rector-downgrade-php.git", - "reference": "364fbdbde687930de614f3d3ae3dac07fea60fb9" + "reference": "ccaf2c8d6a55b8873a6f8ee45b33188b40eadbef" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/364fbdbde687930de614f3d3ae3dac07fea60fb9", - "reference": "364fbdbde687930de614f3d3ae3dac07fea60fb9", + "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-downgrade-php\/zipball\/ccaf2c8d6a55b8873a6f8ee45b33188b40eadbef", + "reference": "ccaf2c8d6a55b8873a6f8ee45b33188b40eadbef", "shasum": "" }, "require": { @@ -1771,7 +1771,7 @@ "tomasvotruba\/unused-public": "^2.2", "tracy\/tracy": "^2.11" }, - "time": "2026-05-12T10:53:14+00:00", + "time": "2026-05-20T19:12:51+00:00", "default-branch": true, "type": "rector-extension", "extra": { @@ -3288,17 +3288,17 @@ }, { "name": "webmozart\/assert", - "version": "2.3.0", - "version_normalized": "2.3.0.0", + "version": "2.4.0", + "version_normalized": "2.4.0.0", "source": { "type": "git", "url": "https:\/\/github.com\/webmozarts\/assert.git", - "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4" + "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/webmozarts\/assert\/zipball\/eb0d790f735ba6cff25c683a85a1da0eadeff9e4", - "reference": "eb0d790f735ba6cff25c683a85a1da0eadeff9e4", + "url": "https:\/\/api.github.com\/repos\/webmozarts\/assert\/zipball\/9007ea6f45ecf352a9422b36644e4bfc039b9155", + "reference": "9007ea6f45ecf352a9422b36644e4bfc039b9155", "shasum": "" }, "require": { @@ -3312,10 +3312,14 @@ "ext-simplexml": "", "ext-spl": "" }, - "time": "2026-04-11T10:33:05+00:00", + "time": "2026-05-20T13:07:01+00:00", "type": "library", "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, "branch-alias": { + "dev-master": "2.0-dev", "dev-feature\/2-0": "2.0-dev" } }, @@ -3347,7 +3351,7 @@ ], "support": { "issues": "https:\/\/github.com\/webmozarts\/assert\/issues", - "source": "https:\/\/github.com\/webmozarts\/assert\/tree\/2.3.0" + "source": "https:\/\/github.com\/webmozarts\/assert\/tree\/2.4.0" }, "install-path": "..\/webmozart\/assert" } diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 483e544852a5..6d6c901b5acc 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -2,4 +2,4 @@ namespace RectorPrefix202605; -return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.60.2', 'version' => '12.60.2.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.55.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '364fbdbde687930de614f3d3ae3dac07fea60fb9', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd9b1d43583c7b0699108153347d35aff14827021', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.12', 'version' => '7.4.12.0', 'reference' => '8b6952b56ca6417f25f7a65758cadd0ce02edc51', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.3.0', 'version' => '2.3.0.0', 'reference' => 'eb0d790f735ba6cff25c683a85a1da0eadeff9e4', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); +return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => 'b2bed4734f0cc156ee1fe9c0da2550420d99a21e', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.4.4', 'version' => '3.4.4.0', 'reference' => '198166618906cb2de69b95d7d47e5fa8aa1b2b95', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.5', 'version' => '3.0.5.0', 'reference' => '6c1925561632e83d60a44492e0b344cf48ab85ef', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.1.0', 'version' => '2.1.0.0', 'reference' => '6d6c96277ea252fc1304627204c3d5e6e15faa3b', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.2', 'version' => '3.0.2.0', 'reference' => '0a16b0d71ab13284339abb99d9d2bd813640efbc', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '1.3.0', 'version' => '1.3.0.0', 'reference' => 'db9508f7b1474469d9d3c53b86f817e344732678', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v12.39.0', 'version' => '12.39.0.0', 'reference' => '17ec6c2f741b11564420acc737dea9334d69988c', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v12.60.2', 'version' => '12.60.2.0', 'reference' => '099fd9b56ccaf776facaa27699b960a3f2451127', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v4.1.4', 'version' => '4.1.4.0', 'reference' => '7da6c396d7ebe142bc857c20479d5e70a5e1aac7', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v5.7.0', 'version' => '5.7.0.0', 'reference' => 'dca41cd15c2ac9d055ad70dbfd011130757d1f82', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.2.0', 'version' => '4.2.0.0', 'reference' => '8b0223b5ed235fd377c75fdd1bfcad05c0f168b8', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '2.3.2', 'version' => '2.3.2.0', 'reference' => 'a004701b11273a26cd7955a61d67a7f1e525a45a', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('dev_requirement' => \false, 'replaced' => array(0 => '2.1.55.0')), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/log' => array('pretty_version' => '3.0.2', 'version' => '3.0.2.0', 'reference' => 'f16e1d5863e37f8d8c2a01719f5b34baa2b714d3', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.7', 'version' => '0.6.7.0', 'reference' => '970f0e71945556422ee4570ccbabaedc3cf04ad3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.14.0', 'version' => '1.14.0.0', 'reference' => '7562c05391f42701c1fccf189c8225fece1cd7c3', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.6.0', 'version' => '1.6.0.0', 'reference' => 'ba276bda6083df7e0050fd9b33f66ad7a4ac747a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '23444f53a813a3296c1368bb104793ce8d88f04a', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.17.0', 'version' => '1.17.0.0', 'reference' => 'ef5b17b81f6f60504c539313f94f2d826c5faa08', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '1e5b0acb8fe55143b5b426817155190eb6f5b18d', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'fb7154285c96f04ce2944755ce4d6da48ee5ba64', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ccaf2c8d6a55b8873a6f8ee45b33188b40eadbef', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd4fd79d04cfe15f932de1ed52d42468120a41d36', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => null, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'd9b1d43583c7b0699108153347d35aff14827021', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '7.0.0', 'version' => '7.0.0.0', 'reference' => '7ab1ea946c012266ca32390913653d844ecd085f', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.4.39', 'version' => '6.4.39.0', 'reference' => 'c132f1215fe4aa45b70173cc00ce9a755dd31ec5', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => '50f59d1f3ca46d41ac911f97a78626b6756af35b', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/deprecation-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/filesystem' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd721ea61b4a5fba8c5b6e7c1feda19efea144b50', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.4.34', 'version' => '6.4.34.0', 'reference' => '9590e86be1d1c57bfbb16d0dd040345378c20896', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-ctype' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '141046a8f9477948ff284fa65be2095baafb94f2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-grapheme' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '4864388bfbd3001ce88e234fab652acd91fdc57e', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '3833d7255cc303546435cb650316bff708a1c75c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '6a21eb99c6973357967f6ce3708cd55a6bec6315', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php84' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => '88486db2c389b290bf87ff1de7ebc1e13e42bb06', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php84', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-php85' => array('pretty_version' => 'v1.37.0', 'version' => '1.37.0.0', 'reference' => 'fcfa4973a9917cef23f2e38774da74a2b7d115ee', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-php85', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => 'd9593c9efa40499eb078b81144de42cbc28a31f0', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('pretty_version' => 'v3.7.0', 'version' => '3.7.0.0', 'reference' => 'd25d82433a80eba6aa0e6c24b61d7370d99e444a', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/service-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/string' => array('pretty_version' => 'v7.4.11', 'version' => '7.4.11.0', 'reference' => '965f7306a43383d02c6aca1e3f3bd2f0ea5dee15', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/yaml' => array('pretty_version' => 'v7.4.12', 'version' => '7.4.12.0', 'reference' => '8b6952b56ca6417f25f7a65758cadd0ce02edc51', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/yaml', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/easy-parallel' => array('pretty_version' => '11.2.2', 'version' => '11.2.2.0', 'reference' => '8586c18bb8efb31cd192a4e5cc94ae7813f72ed9', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.2.0', 'version' => '11.2.0.0', 'reference' => '479cfcfd46047f80624aba931d9789e50475b5c6', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '2.4.0', 'version' => '2.4.0.0', 'reference' => '9007ea6f45ecf352a9422b36644e4bfc039b9155', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); diff --git a/vendor/nette/utils/src/Utils/DateTime.php b/vendor/nette/utils/src/Utils/DateTime.php index 8139d98e8bfb..5a48031cbe46 100644 --- a/vendor/nette/utils/src/Utils/DateTime.php +++ b/vendor/nette/utils/src/Utils/DateTime.php @@ -57,8 +57,8 @@ public static function fromParts(int $year, int $month, int $day, int $hour = 0, } /** * Returns a new DateTime object formatted according to the specified format. - * @param string|\DateTimeZone|null $timezone * @return static|false + * @param string|\DateTimeZone|null $timezone */ public static function createFromFormat(string $format, string $datetime, $timezone = null) { diff --git a/vendor/rector/extension-installer/src/GeneratedConfig.php b/vendor/rector/extension-installer/src/GeneratedConfig.php index 30a2962ce50b..b74ed1ef436a 100644 --- a/vendor/rector/extension-installer/src/GeneratedConfig.php +++ b/vendor/rector/extension-installer/src/GeneratedConfig.php @@ -9,7 +9,7 @@ */ final class GeneratedConfig { - public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main 364fbdb'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main d9b1d43')); + public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => NULL, 'version' => 'dev-main fb71542'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => NULL, 'version' => 'dev-main ccaf2c8'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => NULL, 'version' => 'dev-main d4fd79d'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/rector-build/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => NULL, 'version' => 'dev-main d9b1d43')); private function __construct() { } diff --git a/vendor/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php b/vendor/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php index 7e65b4ed5836..cfc433cd0791 100644 --- a/vendor/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php +++ b/vendor/rector/rector-downgrade-php/rules/DowngradePhp82/Rector/FunctionLike/DowngradeStandaloneNullTrueFalseReturnTypeRector.php @@ -16,11 +16,13 @@ use PHPStan\Type\Constant\ConstantBooleanType; use PHPStan\Type\NullType; use PHPStan\Type\Type; +use PHPStan\Type\UnionType as PHPStanUnionType; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\BetterPhpDocParser\PhpDocManipulator\PhpDocTypeChanger; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\PhpParser\AstResolver; use Rector\Rector\AbstractRector; +use Rector\StaticTypeMapper\StaticTypeMapper; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** @@ -42,11 +44,16 @@ final class DowngradeStandaloneNullTrueFalseReturnTypeRector extends AbstractRec * @readonly */ private AstResolver $astResolver; - public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTypeChanger $phpDocTypeChanger, AstResolver $astResolver) + /** + * @readonly + */ + private StaticTypeMapper $staticTypeMapper; + public function __construct(PhpDocInfoFactory $phpDocInfoFactory, PhpDocTypeChanger $phpDocTypeChanger, AstResolver $astResolver, StaticTypeMapper $staticTypeMapper) { $this->phpDocInfoFactory = $phpDocInfoFactory; $this->phpDocTypeChanger = $phpDocTypeChanger; $this->astResolver = $astResolver; + $this->staticTypeMapper = $staticTypeMapper; } /** * @return array> @@ -83,6 +90,20 @@ public function run(): mixed public function refactor(Node $node): ?Node { $returnType = $node->returnType; + if ($returnType instanceof NullableType && $returnType->type instanceof Identifier) { + $innerName = $this->getName($returnType->type); + if (in_array($innerName, ['false', 'true'], \true)) { + $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node); + $unionType = new PHPStanUnionType([new ConstantBooleanType($innerName === 'true'), new NullType()]); + $this->phpDocTypeChanger->changeReturnType($node, $phpDocInfo, $unionType); + $node->returnType = new NullableType(new Identifier('bool')); + return $node; + } + return null; + } + if ($returnType instanceof UnionType) { + return $this->refactorUnionType($node, $returnType); + } if (!$returnType instanceof Identifier) { return null; } @@ -97,6 +118,33 @@ public function refactor(Node $node): ?Node $node->returnType = $this->resolveNativeType($node, $returnType); return $node; } + /** + * @param ClassMethod|Function_|Closure|ArrowFunction $node + */ + private function refactorUnionType(Node $node, UnionType $unionType): ?Node + { + $hasChanged = \false; + $originalUnionType = clone $unionType; + foreach ($unionType->types as $key => $type) { + if ($type instanceof Identifier) { + $name = $this->getName($type); + if (!in_array($name, ['true', 'false'], \true)) { + continue; + } + $unionType->types[$key] = new Identifier('bool'); + $hasChanged = \true; + } + } + if (!$hasChanged) { + return null; + } + $unionType->types = array_values(array_unique($unionType->types, \SORT_REGULAR)); + $phpStanType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($originalUnionType); + $phpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($node); + $this->phpDocTypeChanger->changeReturnType($node, $phpDocInfo, $phpStanType); + $node->returnType = $unionType; + return $node; + } private function resolveType(Identifier $identifier): Type { $nodeName = $this->getName($identifier); diff --git a/vendor/scoper-autoload.php b/vendor/scoper-autoload.php index 2cfb9b9b026f..d40caa3c7c09 100644 --- a/vendor/scoper-autoload.php +++ b/vendor/scoper-autoload.php @@ -31,7 +31,7 @@ function humbug_phpscoper_expose_class($exposed, $prefixed) { } humbug_phpscoper_expose_class('AutoloadIncluder', 'RectorPrefix202605\AutoloadIncluder'); humbug_phpscoper_expose_class('SomeClass', 'RectorPrefix202605\SomeClass'); -humbug_phpscoper_expose_class('ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739', 'RectorPrefix202605\ComposerAutoloaderInit584dccbcd7f4bd54be6d5670864cf739'); +humbug_phpscoper_expose_class('ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139', 'RectorPrefix202605\ComposerAutoloaderInita1f7d80ce98bceff62e283e14af86139'); humbug_phpscoper_expose_class('Product', 'RectorPrefix202605\Product'); humbug_phpscoper_expose_class('SomeTest', 'RectorPrefix202605\SomeTest'); humbug_phpscoper_expose_class('Normalizer', 'RectorPrefix202605\Normalizer'); diff --git a/vendor/symfony/console/Command/TraceableCommand.php b/vendor/symfony/console/Command/TraceableCommand.php index c4c333343316..6eac3533731b 100644 --- a/vendor/symfony/console/Command/TraceableCommand.php +++ b/vendor/symfony/console/Command/TraceableCommand.php @@ -85,8 +85,8 @@ public function getSubscribedSignals(): array return $this->command instanceof SignalableCommandInterface ? $this->command->getSubscribedSignals() : []; } /** - * @param int|false $previousExitCode * @return int|false + * @param int|false $previousExitCode */ public function handleSignal(int $signal, $previousExitCode = 0) { diff --git a/vendor/symfony/console/Helper/QuestionHelper.php b/vendor/symfony/console/Helper/QuestionHelper.php index 74fa13b13a0f..795114c96cf5 100644 --- a/vendor/symfony/console/Helper/QuestionHelper.php +++ b/vendor/symfony/console/Helper/QuestionHelper.php @@ -444,8 +444,8 @@ private function setIOCodepage(): int } /** * Sets console I/O to the specified code page and converts the user input. - * @param string|false $input * @return string|false + * @param string|false $input */ private function resetIOCodepage(int $cp, $input) { diff --git a/vendor/symfony/polyfill-mbstring/bootstrap80.php b/vendor/symfony/polyfill-mbstring/bootstrap80.php index 2139e9fd61c8..b211379c67a0 100644 --- a/vendor/symfony/polyfill-mbstring/bootstrap80.php +++ b/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -13,9 +13,9 @@ if (!function_exists('mb_convert_encoding')) { /** + * @return mixed[]|string|false * @param mixed[]|string|null $string * @param mixed[]|string|null $from_encoding - * @return mixed[]|string|false */ function mb_convert_encoding($string, ?string $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } } @@ -60,8 +60,8 @@ function mb_check_encoding($value = null, ?string $encoding = null): bool { retu } if (!function_exists('mb_detect_encoding')) { /** - * @param mixed[]|string|null $encodings * @return string|false + * @param mixed[]|string|null $encodings */ function mb_detect_encoding(?string $string, $encodings = null, ?bool $strict = false) { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } } @@ -172,8 +172,8 @@ function mb_http_input(?string $type = null) { return p\Mbstring::mb_http_input( if (!function_exists('mb_convert_variables')) { /** - * @param mixed[]|string|null $from_encoding * @return string|false + * @param mixed[]|string|null $from_encoding * @param mixed $var * @param mixed ...$vars */ diff --git a/vendor/webmozart/assert/CHANGELOG.md b/vendor/webmozart/assert/CHANGELOG.md index b42be12b6faf..e7658b221924 100644 --- a/vendor/webmozart/assert/CHANGELOG.md +++ b/vendor/webmozart/assert/CHANGELOG.md @@ -1,6 +1,12 @@ Changelog ========= +## 2.4.0 + +### Changed + +- Updated docblocks for many methods, improving psalm support and type hints. + ## 2.3.0 ### Changed diff --git a/vendor/webmozart/assert/README.md b/vendor/webmozart/assert/README.md index 9b9dea137bab..fef4eda59f8c 100644 --- a/vendor/webmozart/assert/README.md +++ b/vendor/webmozart/assert/README.md @@ -237,11 +237,6 @@ assertion only if the value is not `null`: Assert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s'); ``` -### Extending Assert - -The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to -add your own assertions. - ### Lazy assertion messages Assertion messages can be provided as callables to avoid unnecessary computation when the assertion passes: @@ -252,6 +247,12 @@ Assert::string($value, fn() => expensiveMessage()); The callable will only be executed if the assertion fails. +### Extending Assert + +The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to +add your own assertions. + + #### Overriding methods Overriding the following methods in your assertion class allows you to change the behaviour of the assertions: @@ -270,7 +271,14 @@ Overriding the following methods in your assertion class allows you to change th ## Static analysis support Where applicable, assertion functions are annotated to support Psalm's -[Assertion syntax](https://psalm.dev/docs/annotating_code/assertion_syntax/). +[Assertion syntax](https://psalm.dev/docs/annotating_code/assertion_syntax/). + +A native Psalm plugin can be enabled to also add type inference for return types (new in 2.x): + +```php +vendor/bin/psalm-plugin enable webmozart/assert +``` + A dedicated [PHPStan Plugin](https://github.com/phpstan/phpstan-webmozart-assert) is required for proper type support. diff --git a/vendor/webmozart/assert/composer.json b/vendor/webmozart/assert/composer.json index 5602a7177aa5..b2edd7d03e2a 100644 --- a/vendor/webmozart/assert/composer.json +++ b/vendor/webmozart/assert/composer.json @@ -40,8 +40,12 @@ } }, "extra": { + "psalm": { + "pluginClass": "Webmozart\\Assert\\PsalmPlugin" + }, "branch-alias": { - "dev-feature\/2-0": "2.0-dev" + "dev-feature\/2-0": "2.0-dev", + "dev-master": "2.0-dev" } }, "scripts": { diff --git a/vendor/webmozart/assert/src/Assert.php b/vendor/webmozart/assert/src/Assert.php index 013811202cef..23cb923819d9 100644 --- a/vendor/webmozart/assert/src/Assert.php +++ b/vendor/webmozart/assert/src/Assert.php @@ -53,7 +53,7 @@ public static function string($value, $message = ''): string * @psalm-assert non-empty-string $value * @param string|callable():string $message * - * @psalm-return non-empty-string + * @return non-empty-string * * @throws InvalidArgumentException * @param mixed $value @@ -107,7 +107,7 @@ public static function integerish($value, $message = '') * * @param string|callable():string $message * - * @psalm-return positive-int + * @return positive-int * * @throws InvalidArgumentException * @param mixed $value @@ -126,7 +126,7 @@ public static function positiveInteger($value, $message = ''): int * @psalm-assert non-negative-int $value * @param string|callable():string $message * - * @psalm-return non-negative-int + * @return non-negative-int * * @throws InvalidArgumentException * @param mixed $value @@ -145,7 +145,7 @@ public static function notNegativeInteger($value, $message = ''): int * @psalm-assert negative-int $value * @param string|callable():string $message * - * @psalm-return negative-int + * @return negative-int * * @throws InvalidArgumentException * @param mixed $value @@ -203,7 +203,7 @@ public static function numeric($value, $message = '') * * @param string|callable():string $message * - * @psalm-return positive-int|0 + * @return positive-int|0 * * @throws InvalidArgumentException * @param mixed $value @@ -274,14 +274,13 @@ public static function object($value, $message = ''): object /** * @psalm-pure * - * @psalm-assert object|string $value + * @psalm-assert object|class-string $value * * @param string|callable():string $message * - * @psalm-return object|string + * @return object|class-string * * @throws InvalidArgumentException - * @return object|string * @param mixed $value */ public static function objectish($value, $message = '') @@ -305,11 +304,10 @@ public static function objectish($value, $message = '') * * @see https://www.php.net/manual/en/function.get-resource-type.php * - * @psalm-return resource + * @return resource * * @throws InvalidArgumentException * @param mixed $value - * @return mixed */ public static function resource($value, ?string $type = null, $message = '') { @@ -446,13 +444,12 @@ public static function isIterable($value, $message = ''): iterable * @psalm-assert T $value * * @param string|callable():string $message - * @psalm-param class-string $class + * @param mixed $class * * @return T * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function isInstanceOf($value, $class, $message = ''): object { @@ -469,13 +466,10 @@ public static function isInstanceOf($value, $class, $message = ''): object * @psalm-assert object $value * * @param string|callable():string $message - * @psalm-param class-string $class - * - * @return !T + * @param mixed $class * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function notInstanceOf($value, $class, $message = ''): object { @@ -491,13 +485,13 @@ public static function notInstanceOf($value, $class, $message = ''): object * * @psalm-assert T $value * - * @param mixed $value + * @param mixed $classes * @param string|callable():string $message * * @return T * * @throws InvalidArgumentException - * @param mixed $classes + * @param mixed $value */ public static function isInstanceOfAny($value, $classes, $message = ''): object { @@ -514,7 +508,7 @@ public static function isInstanceOfAny($value, $classes, $message = ''): object /** * @template T * - * @psalm-assert T $value + * @psalm-assert object|class-string $value * * @param mixed $value * @param string|callable():string $message @@ -544,12 +538,12 @@ public static function isNotInstanceOfAny($value, $classes, $message = '') * @psalm-assert T|class-string $value * * @param string|callable():string $message + * @param mixed $class * - * @return T + * @return T|class-string * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function isAOf($value, $class, $message = '') { @@ -570,7 +564,7 @@ public static function isAOf($value, $class, $message = '') * @param mixed $value * @param string|callable():string $message * - * @return T + * @return object|class-string * * @throws InvalidArgumentException * @param mixed $class @@ -588,13 +582,16 @@ public static function isNotA($value, $class, $message = '') /** * @psalm-pure * - * @param mixed $value + * @psalm-assert T $value + * + * @template T as object + * * @param mixed $classes * @param string|callable():string $message - * @psalm-param array $classes * + * @return T * @throws InvalidArgumentException - * @return object|string + * @param mixed $value */ public static function isAnyOf($value, $classes, $message = '') { @@ -616,11 +613,10 @@ public static function isAnyOf($value, $classes, $message = '') * * @param string|callable():string $message * - * @psalm-return empty + * @return empty * * @throws InvalidArgumentException * @param mixed $value - * @return mixed */ public static function isEmpty($value, $message = '') { @@ -637,8 +633,6 @@ public static function isEmpty($value, $message = '') * * @param string|callable():string $message * - * @psalm-return !empty - * * @throws InvalidArgumentException * @param mixed $value * @return mixed @@ -677,11 +671,10 @@ public static function null($value, $message = '') * * @param string|callable():string $message * - * @psalm-return !null - * - * @throws InvalidArgumentException + * @template T * @param mixed $value - * @return mixed + * @return T + * @throws InvalidArgumentException */ public static function notNull($value, $message = '') { @@ -736,9 +729,10 @@ public static function false($value, $message = ''): bool * * @param string|callable():string $message * - * @throws InvalidArgumentException + * @template T * @param mixed $value - * @return mixed + * @return T + * @throws InvalidArgumentException */ public static function notFalse($value, $message = '') { @@ -752,10 +746,9 @@ public static function notFalse($value, $message = '') * @psalm-pure * * @param string|callable():string $message - * @psalm-param string $value + * @param mixed $value * * @throws InvalidArgumentException - * @param mixed $value */ public static function ip($value, $message = ''): string { @@ -770,10 +763,9 @@ public static function ip($value, $message = ''): string * @psalm-pure * * @param string|callable():string $message - * @psalm-param string $value + * @param mixed $value * * @throws InvalidArgumentException - * @param mixed $value */ public static function ipv4($value, $message = ''): string { @@ -788,10 +780,9 @@ public static function ipv4($value, $message = ''): string * @psalm-pure * * @param string|callable():string $message - * @psalm-param string $value + * @param mixed $value * * @throws InvalidArgumentException - * @param mixed $value */ public static function ipv6($value, $message = ''): string { @@ -806,10 +797,9 @@ public static function ipv6($value, $message = ''): string * @psalm-pure * * @param string|callable():string $message - * @psalm-param string $value + * @param mixed $value * * @throws InvalidArgumentException - * @param mixed $value */ public static function email($value, $message = ''): string { @@ -824,6 +814,8 @@ public static function email($value, $message = ''): string * Does non-strict comparisons on the items, so ['3', 3] will not pass the assertion. * Note: objects with identical properties are also considered equal. * + * @psalm-assert array $values + * * @param string|callable():string $message * * @throws InvalidArgumentException @@ -1361,6 +1353,8 @@ public static function alnum($value, $message = ''): string * * @param string|callable():string $message * + * @return lowercase-string + * * @throws InvalidArgumentException * @param mixed $value */ @@ -1380,7 +1374,7 @@ public static function lower($value, $message = ''): string /** * @psalm-pure * - * @psalm-assert !lowercase-string $value + * @psalm-assert string $value * * @param string|callable():string $message * @@ -1567,6 +1561,8 @@ public static function writable($value, $message = ''): string * * @param string|callable():string $message * + * @return class-string + * * @throws InvalidArgumentException * @param mixed $value */ @@ -1609,6 +1605,8 @@ public static function subclassOf($value, $class, $message = ''): string * * @param string|callable():string $message * + * @return class-string + * * @throws InvalidArgumentException * @param mixed $value */ @@ -1628,12 +1626,13 @@ public static function interfaceExists($value, $message = ''): string * * @psalm-assert class-string|ExpectedType $value * - * @param mixed $value * @param mixed $interface * @param string|callable():string $message * + * @return class-string|ExpectedType + * * @throws InvalidArgumentException - * @return object|string + * @param mixed $value */ public static function implementsInterface($value, $interface, $message = '') { @@ -1668,13 +1667,13 @@ public static function propertyExists($classOrObject, $property, $message = '') /** * @psalm-pure * + * @template T as class-string|object * @param mixed $classOrObject * @param string|callable():string $message - * @psalm-param class-string|object $classOrObject * + * @return T * @throws InvalidArgumentException * @param mixed $property - * @return mixed */ public static function propertyNotExists($classOrObject, $property, $message = '') { @@ -1687,12 +1686,12 @@ public static function propertyNotExists($classOrObject, $property, $message = ' /** * @psalm-pure * + * @template T as class-string|object * @param mixed $classOrObject * @param string|callable():string $message - * @psalm-param class-string|object $classOrObject * + * @return T * @throws InvalidArgumentException - * @return object|string * @param mixed $method */ public static function methodExists($classOrObject, $method, $message = '') @@ -1707,13 +1706,13 @@ public static function methodExists($classOrObject, $method, $message = '') /** * @psalm-pure * + * @template T as class-string|object * @param mixed $classOrObject * @param string|callable():string $message - * @psalm-param class-string|object $classOrObject * + * @return T * @throws InvalidArgumentException * @param mixed $method - * @return mixed */ public static function methodNotExists($classOrObject, $method, $message = '') { @@ -1860,7 +1859,7 @@ public static function countBetween($array, $min, $max, $message = '') * * @param string|callable():string $message * - * @psalm-return list + * @return list * * @throws InvalidArgumentException * @param mixed $array @@ -1896,7 +1895,7 @@ public static function isList($array, $message = ''): array * * @param string|callable():string $message * - * @psalm-return non-empty-list + * @return non-empty-list * * @throws InvalidArgumentException * @param mixed $array @@ -1947,8 +1946,6 @@ public static function isMap($array, $message = ''): array return $array; } /** - * @psalm-assert callable $callable - * * @param mixed $callable * @param string|callable():string $message * @@ -1968,8 +1965,6 @@ public static function isStatic($callable, $message = '') return $callable; } /** - * @psalm-assert callable $callable - * * @param mixed $callable * @param string|callable():string $message * @@ -1999,7 +1994,7 @@ public static function notStatic($callable, $message = '') * @param mixed $array * @param string|callable():string $message * - * @return array + * @return non-empty-array * * @throws InvalidArgumentException */ @@ -2034,11 +2029,15 @@ public static function uuid($value, $message = ''): string return $originalValue; } /** + * @template T as callable + * + * @param mixed $expression * @param string|callable():string $message - * @psalm-param class-string $class + * @param class-string $class + * + * @return T * * @throws InvalidArgumentException - * @param mixed $expression */ public static function throws($expression, string $class = Throwable::class, $message = ''): callable { diff --git a/vendor/webmozart/assert/src/HasAssert.php b/vendor/webmozart/assert/src/HasAssert.php new file mode 100644 index 000000000000..35d71141b27c --- /dev/null +++ b/vendor/webmozart/assert/src/HasAssert.php @@ -0,0 +1,10 @@ + \true, 'nullorstring' => \true, 'allstring' => \true, 'allnullorstring' => \true, 'stringnotempty' => \true, 'nullorstringnotempty' => \true, 'allstringnotempty' => \true, 'allnullorstringnotempty' => \true, 'integer' => \true, 'nullorinteger' => \true, 'allinteger' => \true, 'allnullorinteger' => \true, 'integerish' => \true, 'nullorintegerish' => \true, 'allintegerish' => \true, 'allnullorintegerish' => \true, 'positiveinteger' => \true, 'nullorpositiveinteger' => \true, 'allpositiveinteger' => \true, 'allnullorpositiveinteger' => \true, 'notnegativeinteger' => \true, 'nullornotnegativeinteger' => \true, 'allnotnegativeinteger' => \true, 'allnullornotnegativeinteger' => \true, 'negativeinteger' => \true, 'nullornegativeinteger' => \true, 'allnegativeinteger' => \true, 'allnullornegativeinteger' => \true, 'float' => \true, 'nullorfloat' => \true, 'allfloat' => \true, 'allnullorfloat' => \true, 'numeric' => \true, 'nullornumeric' => \true, 'allnumeric' => \true, 'allnullornumeric' => \true, 'natural' => \true, 'nullornatural' => \true, 'allnatural' => \true, 'allnullornatural' => \true, 'boolean' => \true, 'nullorboolean' => \true, 'allboolean' => \true, 'allnullorboolean' => \true, 'scalar' => \true, 'nullorscalar' => \true, 'allscalar' => \true, 'allnullorscalar' => \true, 'object' => \true, 'nullorobject' => \true, 'allobject' => \true, 'allnullorobject' => \true, 'objectish' => \true, 'nullorobjectish' => \true, 'allobjectish' => \true, 'allnullorobjectish' => \true, 'resource' => \true, 'nullorresource' => \true, 'allresource' => \true, 'allnullorresource' => \true, 'iscallable' => \true, 'nulloriscallable' => \true, 'alliscallable' => \true, 'allnulloriscallable' => \true, 'isarray' => \true, 'nullorisarray' => \true, 'allisarray' => \true, 'allnullorisarray' => \true, 'isarrayaccessible' => \true, 'nullorisarrayaccessible' => \true, 'allisarrayaccessible' => \true, 'allnullorisarrayaccessible' => \true, 'iscountable' => \true, 'nulloriscountable' => \true, 'alliscountable' => \true, 'allnulloriscountable' => \true, 'isiterable' => \true, 'nullorisiterable' => \true, 'allisiterable' => \true, 'allnullorisiterable' => \true, 'isinstanceof' => \true, 'nullorisinstanceof' => \true, 'allisinstanceof' => \true, 'allnullorisinstanceof' => \true, 'notinstanceof' => \true, 'allnullornotinstanceof' => \true, 'isinstanceofany' => \true, 'nullorisinstanceofany' => \true, 'allisinstanceofany' => \true, 'allnullorisinstanceofany' => \true, 'isnotinstanceofany' => \true, 'nullorisnotinstanceofany' => \true, 'allisnotinstanceofany' => \true, 'allnullorisnotinstanceofany' => \true, 'isaof' => \true, 'nullorisaof' => \true, 'allisaof' => \true, 'allnullorisaof' => \true, 'isnota' => \true, 'allnullorisnota' => \true, 'isanyof' => \true, 'nullorisanyof' => \true, 'allisanyof' => \true, 'allnullorisanyof' => \true, 'isempty' => \true, 'nullorisempty' => \true, 'allisempty' => \true, 'allnullorisempty' => \true, 'notempty' => \true, 'allnullornotempty' => \true, 'null' => \true, 'allnull' => \true, 'notnull' => \true, 'true' => \true, 'nullortrue' => \true, 'alltrue' => \true, 'allnullortrue' => \true, 'false' => \true, 'nullorfalse' => \true, 'allfalse' => \true, 'allnullorfalse' => \true, 'notfalse' => \true, 'allnullornotfalse' => \true, 'uniquevalues' => \true, 'nulloruniquevalues' => \true, 'alluniquevalues' => \true, 'allnulloruniquevalues' => \true, 'lower' => \true, 'nullorlower' => \true, 'alllower' => \true, 'allnullorlower' => \true, 'upper' => \true, 'allnullorupper' => \true, 'classexists' => \true, 'nullorclassexists' => \true, 'allclassexists' => \true, 'allnullorclassexists' => \true, 'subclassof' => \true, 'nullorsubclassof' => \true, 'allsubclassof' => \true, 'allnullorsubclassof' => \true, 'interfaceexists' => \true, 'nullorinterfaceexists' => \true, 'allinterfaceexists' => \true, 'allnullorinterfaceexists' => \true, 'implementsinterface' => \true, 'nullorimplementsinterface' => \true, 'allimplementsinterface' => \true, 'allnullorimplementsinterface' => \true, 'validarraykey' => \true, 'nullorvalidarraykey' => \true, 'allvalidarraykey' => \true, 'allnullorvalidarraykey' => \true, 'islist' => \true, 'nullorislist' => \true, 'allislist' => \true, 'allnullorislist' => \true, 'isnonemptylist' => \true, 'nullorisnonemptylist' => \true, 'allisnonemptylist' => \true, 'allnullorisnonemptylist' => \true, 'ismap' => \true, 'nullorismap' => \true, 'allismap' => \true, 'allnullorismap' => \true, 'isnonemptymap' => \true, 'allnullorisnonemptymap' => \true]; +} diff --git a/vendor/webmozart/assert/src/Mixin.php b/vendor/webmozart/assert/src/Mixin.php index 86a1310363b5..3c162ebae928 100644 --- a/vendor/webmozart/assert/src/Mixin.php +++ b/vendor/webmozart/assert/src/Mixin.php @@ -4,6 +4,7 @@ namespace RectorPrefix202605\Webmozart\Assert; use ArrayAccess; +use Closure; use Countable; use Throwable; /** @@ -24,7 +25,7 @@ trait Mixin * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrString($value, $message = '') + public static function nullOrString($value, $message = ''): ?string { null === $value || static::string($value, $message); return $value; @@ -81,7 +82,7 @@ public static function allNullOrString($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrStringNotEmpty($value, $message = '') + public static function nullOrStringNotEmpty($value, $message = ''): ?string { null === $value || static::stringNotEmpty($value, $message); return $value; @@ -138,7 +139,7 @@ public static function allNullOrStringNotEmpty($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrInteger($value, $message = '') + public static function nullOrInteger($value, $message = ''): ?int { null === $value || static::integer($value, $message); return $value; @@ -252,7 +253,7 @@ public static function allNullOrIntegerish($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrPositiveInteger($value, $message = '') + public static function nullOrPositiveInteger($value, $message = ''): ?int { null === $value || static::positiveInteger($value, $message); return $value; @@ -309,7 +310,7 @@ public static function allNullOrPositiveInteger($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrNotNegativeInteger($value, $message = '') + public static function nullOrNotNegativeInteger($value, $message = ''): ?int { null === $value || static::notNegativeInteger($value, $message); return $value; @@ -366,7 +367,7 @@ public static function allNullOrNotNegativeInteger($value, $message = ''): itera * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrNegativeInteger($value, $message = '') + public static function nullOrNegativeInteger($value, $message = ''): ?int { null === $value || static::negativeInteger($value, $message); return $value; @@ -423,7 +424,7 @@ public static function allNullOrNegativeInteger($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrFloat($value, $message = '') + public static function nullOrFloat($value, $message = ''): ?float { null === $value || static::float($value, $message); return $value; @@ -537,7 +538,7 @@ public static function allNullOrNumeric($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrNatural($value, $message = '') + public static function nullOrNatural($value, $message = ''): ?int { null === $value || static::natural($value, $message); return $value; @@ -594,7 +595,7 @@ public static function allNullOrNatural($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrBoolean($value, $message = '') + public static function nullOrBoolean($value, $message = ''): ?bool { null === $value || static::boolean($value, $message); return $value; @@ -708,7 +709,7 @@ public static function allNullOrScalar($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrObject($value, $message = '') + public static function nullOrObject($value, $message = ''): ?object { null === $value || static::object($value, $message); return $value; @@ -756,11 +757,11 @@ public static function allNullOrObject($value, $message = ''): iterable /** * @psalm-pure * - * @psalm-assert object|string|null $value + * @psalm-assert object|class-string|null $value * * @param string|callable():string $message * - * @return object|string|null + * @return object|class-string|null * * @throws InvalidArgumentException * @param mixed $value @@ -773,11 +774,11 @@ public static function nullOrObjectish($value, $message = '') /** * @psalm-pure * - * @psalm-assert iterable $value + * @psalm-assert iterable $value * * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -793,11 +794,11 @@ public static function allObjectish($value, $message = ''): iterable /** * @psalm-pure * - * @psalm-assert iterable $value + * @psalm-assert iterable $value * * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -885,7 +886,7 @@ public static function allNullOrResource($value, ?string $type = null, $message * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrIsCallable($value, $message = '') + public static function nullOrIsCallable($value, $message = ''): ?callable { null === $value || static::isCallable($value, $message); return $value; @@ -942,7 +943,7 @@ public static function allNullOrIsCallable($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrIsArray($value, $message = '') + public static function nullOrIsArray($value, $message = ''): ?array { null === $value || static::isArray($value, $message); return $value; @@ -1113,7 +1114,7 @@ public static function allNullOrIsCountable($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrIsIterable($value, $message = '') + public static function nullOrIsIterable($value, $message = ''): ?iterable { null === $value || static::isIterable($value, $message); return $value; @@ -1164,17 +1165,15 @@ public static function allNullOrIsIterable($value, $message = ''): iterable * @template T of object * @psalm-assert T|null $value * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * * @return T|null * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ - public static function nullOrIsInstanceOf($value, $class, $message = '') + public static function nullOrIsInstanceOf($value, $class, $message = ''): ?object { null === $value || static::isInstanceOf($value, $class, $message); return $value; @@ -1185,15 +1184,13 @@ public static function nullOrIsInstanceOf($value, $class, $message = '') * @template T of object * @psalm-assert iterable $value * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * * @return iterable * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allIsInstanceOf($value, $class, $message = ''): iterable { @@ -1206,18 +1203,16 @@ public static function allIsInstanceOf($value, $class, $message = ''): iterable /** * @psalm-pure * - * @template T of object - * @psalm-assert iterable $value + * @template T of object|null + * @psalm-assert iterable $value * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * - * @return iterable + * @return iterable * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allNullOrIsInstanceOf($value, $class, $message = ''): iterable { @@ -1230,17 +1225,15 @@ public static function allNullOrIsInstanceOf($value, $class, $message = ''): ite /** * @template T of object * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * - * @return mixed + * @return object|null * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ - public static function nullOrNotInstanceOf($value, $class, $message = '') + public static function nullOrNotInstanceOf($value, $class, $message = ''): ?object { null === $value || static::notInstanceOf($value, $class, $message); return $value; @@ -1248,15 +1241,13 @@ public static function nullOrNotInstanceOf($value, $class, $message = '') /** * @template T of object * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allNotInstanceOf($value, $class, $message = ''): iterable { @@ -1267,18 +1258,16 @@ public static function allNotInstanceOf($value, $class, $message = ''): iterable return $value; } /** - * @template T of object + * @template T of object|null * @psalm-assert iterable $value * + * @param mixed $class * @param string|callable():string $message * - * @psalm-param class-string $class - * * @return iterable * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allNullOrNotInstanceOf($value, $class, $message = ''): iterable { @@ -1292,15 +1281,15 @@ public static function allNullOrNotInstanceOf($value, $class, $message = ''): it * @template T of object * @psalm-assert T|null $value * - * @param mixed $value - * @param string|callable():string $message + * @param mixed $classes + * @param string|callable():string $message * * @return T|null * * @throws InvalidArgumentException - * @param mixed $classes + * @param mixed $value */ - public static function nullOrIsInstanceOfAny($value, $classes, $message = '') + public static function nullOrIsInstanceOfAny($value, $classes, $message = ''): ?object { null === $value || static::isInstanceOfAny($value, $classes, $message); return $value; @@ -1309,13 +1298,13 @@ public static function nullOrIsInstanceOfAny($value, $classes, $message = '') * @template T of object * @psalm-assert iterable $value * - * @param mixed $value - * @param string|callable():string $message + * @param mixed $classes + * @param string|callable():string $message * * @return iterable * * @throws InvalidArgumentException - * @param mixed $classes + * @param mixed $value */ public static function allIsInstanceOfAny($value, $classes, $message = ''): iterable { @@ -1326,16 +1315,16 @@ public static function allIsInstanceOfAny($value, $classes, $message = ''): iter return $value; } /** - * @template T of object - * @psalm-assert iterable $value + * @template T of object|null + * @psalm-assert iterable $value * - * @param mixed $value - * @param string|callable():string $message + * @param mixed $classes + * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException - * @param mixed $classes + * @param mixed $value */ public static function allNullOrIsInstanceOfAny($value, $classes, $message = ''): iterable { @@ -1347,7 +1336,7 @@ public static function allNullOrIsInstanceOfAny($value, $classes, $message = '') } /** * @template T - * @psalm-assert T|null $value + * @psalm-assert object|class-string|null $value * * @param mixed $value * @param string|callable():string $message @@ -1364,7 +1353,7 @@ public static function nullOrIsNotInstanceOfAny($value, $classes, $message = '') } /** * @template T - * @psalm-assert iterable $value + * @psalm-assert iterable $value * * @param mixed $value * @param string|callable():string $message @@ -1384,12 +1373,12 @@ public static function allIsNotInstanceOfAny($value, $classes, $message = ''): i } /** * @template T - * @psalm-assert iterable $value + * @psalm-assert iterable $value * * @param mixed $value * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException * @param mixed $classes @@ -1408,13 +1397,13 @@ public static function allNullOrIsNotInstanceOfAny($value, $classes, $message = * @template T of object * @psalm-assert T|class-string|null $value * + * @param mixed $class * @param string|callable():string $message * * @return T|class-string|null * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function nullOrIsAOf($value, $class, $message = '') { @@ -1427,13 +1416,13 @@ public static function nullOrIsAOf($value, $class, $message = '') * @template T of object * @psalm-assert iterable> $value * + * @param mixed $class * @param string|callable():string $message * * @return iterable> * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allIsAOf($value, $class, $message = ''): iterable { @@ -1446,16 +1435,16 @@ public static function allIsAOf($value, $class, $message = ''): iterable /** * @psalm-pure * - * @template T of object + * @template T of object|null * @psalm-assert iterable|null> $value * + * @param mixed $class * @param string|callable():string $message * * @return iterable|null> * * @throws InvalidArgumentException * @param mixed $value - * @param mixed $class */ public static function allNullOrIsAOf($value, $class, $message = ''): iterable { @@ -1473,7 +1462,7 @@ public static function allNullOrIsAOf($value, $class, $message = ''): iterable * @param mixed $value * @param string|callable():string $message * - * @return mixed + * @return object|class-string|null * * @throws InvalidArgumentException * @param mixed $class @@ -1491,7 +1480,7 @@ public static function nullOrIsNotA($value, $class, $message = '') * @param mixed $value * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $class @@ -1529,15 +1518,17 @@ public static function allNullOrIsNotA($value, $class, $message = ''): iterable /** * @psalm-pure * - * @param mixed $value + * @psalm-assert T|null $value + * + * @template T as object + * * @param mixed $classes * @param string|callable():string $message * - * @psalm-param array $classes - * - * @return mixed + * @return T|null * * @throws InvalidArgumentException + * @param mixed $value */ public static function nullOrIsAnyOf($value, $classes, $message = '') { @@ -1547,15 +1538,17 @@ public static function nullOrIsAnyOf($value, $classes, $message = '') /** * @psalm-pure * - * @param mixed $value + * @psalm-assert iterable $value + * + * @template T as object + * * @param mixed $classes * @param string|callable():string $message * - * @psalm-param array $classes - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException + * @param mixed $value */ public static function allIsAnyOf($value, $classes, $message = ''): iterable { @@ -1568,15 +1561,17 @@ public static function allIsAnyOf($value, $classes, $message = ''): iterable /** * @psalm-pure * - * @param mixed $value - * @param mixed $classes - * @param string|callable():string $message + * @psalm-assert iterable $value * - * @psalm-param array $classes + * @template T as object|null * - * @return mixed + * @param mixed $classes + * @param string|callable():string $message + * + * @return iterable * * @throws InvalidArgumentException + * @param mixed $value */ public static function allNullOrIsAnyOf($value, $classes, $message = ''): iterable { @@ -1663,7 +1658,7 @@ public static function nullOrNotEmpty($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -1719,12 +1714,14 @@ public static function allNull($value, $message = ''): iterable /** * @psalm-pure * + * @template T + * + * @param mixed $value * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNotNull($value, $message = ''): iterable { @@ -1746,7 +1743,7 @@ public static function allNotNull($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrTrue($value, $message = '') + public static function nullOrTrue($value, $message = ''): ?bool { null === $value || static::true($value, $message); return $value; @@ -1803,7 +1800,7 @@ public static function allNullOrTrue($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrFalse($value, $message = '') + public static function nullOrFalse($value, $message = ''): ?bool { null === $value || static::false($value, $message); return $value; @@ -1851,12 +1848,14 @@ public static function allNullOrFalse($value, $message = ''): iterable /** * @psalm-pure * + * @template T + * + * @param mixed $value * @param string|callable():string $message * - * @return mixed + * @return T|null * * @throws InvalidArgumentException - * @param mixed $value */ public static function nullOrNotFalse($value, $message = '') { @@ -1866,12 +1865,14 @@ public static function nullOrNotFalse($value, $message = '') /** * @psalm-pure * + * @template T + * + * @param mixed $value * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNotFalse($value, $message = ''): iterable { @@ -1886,12 +1887,14 @@ public static function allNotFalse($value, $message = ''): iterable * * @psalm-assert iterable $value * + * @template T + * + * @param mixed $value * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNullOrNotFalse($value, $message = ''): iterable { @@ -1904,16 +1907,14 @@ public static function allNullOrNotFalse($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param string|null $value - * - * @return mixed + * @return string|null * * @throws InvalidArgumentException - * @param mixed $value */ - public static function nullOrIp($value, $message = '') + public static function nullOrIp($value, $message = ''): ?string { null === $value || static::ip($value, $message); return $value; @@ -1921,14 +1922,12 @@ public static function nullOrIp($value, $message = '') /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allIp($value, $message = ''): iterable { @@ -1941,14 +1940,12 @@ public static function allIp($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNullOrIp($value, $message = ''): iterable { @@ -1961,16 +1958,14 @@ public static function allNullOrIp($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param string|null $value - * - * @return mixed + * @return string|null * * @throws InvalidArgumentException - * @param mixed $value */ - public static function nullOrIpv4($value, $message = '') + public static function nullOrIpv4($value, $message = ''): ?string { null === $value || static::ipv4($value, $message); return $value; @@ -1978,14 +1973,12 @@ public static function nullOrIpv4($value, $message = '') /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allIpv4($value, $message = ''): iterable { @@ -1998,14 +1991,12 @@ public static function allIpv4($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNullOrIpv4($value, $message = ''): iterable { @@ -2018,16 +2009,14 @@ public static function allNullOrIpv4($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param string|null $value - * - * @return mixed + * @return string|null * * @throws InvalidArgumentException - * @param mixed $value */ - public static function nullOrIpv6($value, $message = '') + public static function nullOrIpv6($value, $message = ''): ?string { null === $value || static::ipv6($value, $message); return $value; @@ -2035,14 +2024,12 @@ public static function nullOrIpv6($value, $message = '') /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allIpv6($value, $message = ''): iterable { @@ -2055,14 +2042,12 @@ public static function allIpv6($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNullOrIpv6($value, $message = ''): iterable { @@ -2075,16 +2060,14 @@ public static function allNullOrIpv6($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param string|null $value - * - * @return mixed + * @return string|null * * @throws InvalidArgumentException - * @param mixed $value */ - public static function nullOrEmail($value, $message = '') + public static function nullOrEmail($value, $message = ''): ?string { null === $value || static::email($value, $message); return $value; @@ -2092,14 +2075,12 @@ public static function nullOrEmail($value, $message = '') /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allEmail($value, $message = ''): iterable { @@ -2112,14 +2093,12 @@ public static function allEmail($value, $message = ''): iterable /** * @psalm-pure * + * @param mixed $value * @param string|callable():string $message * - * @psalm-param iterable $value - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $value */ public static function allNullOrEmail($value, $message = ''): iterable { @@ -2130,27 +2109,31 @@ public static function allNullOrEmail($value, $message = ''): iterable return $value; } /** + * @psalm-assert array|null $values + * * @param string|callable():string $message * - * @return mixed + * @return array|null * * @throws InvalidArgumentException * @param mixed $values */ - public static function nullOrUniqueValues($values, $message = '') + public static function nullOrUniqueValues($values, $message = ''): ?array { null === $values || static::uniqueValues($values, $message); return $values; } /** + * @psalm-assert iterable $values + * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $values */ - public static function allUniqueValues($values, $message = '') + public static function allUniqueValues($values, $message = ''): iterable { static::isIterable($values); foreach ($values as $entry) { @@ -2159,14 +2142,16 @@ public static function allUniqueValues($values, $message = '') return $values; } /** + * @psalm-assert iterable $values + * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $values */ - public static function allNullOrUniqueValues($values, $message = '') + public static function allNullOrUniqueValues($values, $message = ''): iterable { static::isIterable($values); foreach ($values as $entry) { @@ -2191,7 +2176,7 @@ public static function nullOrEq($value, $expect, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2208,7 +2193,7 @@ public static function allEq($value, $expect, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2239,7 +2224,7 @@ public static function nullOrNotEq($value, $expect, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2256,7 +2241,7 @@ public static function allNotEq($value, $expect, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2291,7 +2276,7 @@ public static function nullOrSame($value, $expect, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2310,7 +2295,7 @@ public static function allSame($value, $expect, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2345,7 +2330,7 @@ public static function nullOrNotSame($value, $expect, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2364,7 +2349,7 @@ public static function allNotSame($value, $expect, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2399,7 +2384,7 @@ public static function nullOrGreaterThan($value, $limit, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2418,7 +2403,7 @@ public static function allGreaterThan($value, $limit, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2453,7 +2438,7 @@ public static function nullOrGreaterThanEq($value, $limit, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2472,7 +2457,7 @@ public static function allGreaterThanEq($value, $limit, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2507,7 +2492,7 @@ public static function nullOrLessThan($value, $limit, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2526,7 +2511,7 @@ public static function allLessThan($value, $limit, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2561,7 +2546,7 @@ public static function nullOrLessThanEq($value, $limit, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2580,7 +2565,7 @@ public static function allLessThanEq($value, $limit, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2616,7 +2601,7 @@ public static function nullOrRange($value, $min, $max, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2636,7 +2621,7 @@ public static function allRange($value, $min, $max, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2672,7 +2657,7 @@ public static function nullOrOneOf($value, $values, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2691,7 +2676,7 @@ public static function allOneOf($value, $values, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2726,7 +2711,7 @@ public static function nullOrInArray($value, $values, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2745,7 +2730,7 @@ public static function allInArray($value, $values, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2780,7 +2765,7 @@ public static function nullOrNotOneOf($value, $values, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2799,7 +2784,7 @@ public static function allNotOneOf($value, $values, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2834,7 +2819,7 @@ public static function nullOrNotInArray($value, $values, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2853,7 +2838,7 @@ public static function allNotInArray($value, $values, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2872,13 +2857,13 @@ public static function allNullOrNotInArray($value, $values, $message = ''): iter * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $subString */ - public static function nullOrContains($value, $subString, $message = '') + public static function nullOrContains($value, $subString, $message = ''): ?string { null === $value || static::contains($value, $subString, $message); return $value; @@ -2888,7 +2873,7 @@ public static function nullOrContains($value, $subString, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2907,7 +2892,7 @@ public static function allContains($value, $subString, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2926,13 +2911,13 @@ public static function allNullOrContains($value, $subString, $message = ''): ite * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $subString */ - public static function nullOrNotContains($value, $subString, $message = '') + public static function nullOrNotContains($value, $subString, $message = ''): ?string { null === $value || static::notContains($value, $subString, $message); return $value; @@ -2942,7 +2927,7 @@ public static function nullOrNotContains($value, $subString, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2961,7 +2946,7 @@ public static function allNotContains($value, $subString, $message = ''): iterab * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -2980,12 +2965,12 @@ public static function allNullOrNotContains($value, $subString, $message = ''): * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrNotWhitespaceOnly($value, $message = '') + public static function nullOrNotWhitespaceOnly($value, $message = ''): ?string { null === $value || static::notWhitespaceOnly($value, $message); return $value; @@ -2995,7 +2980,7 @@ public static function nullOrNotWhitespaceOnly($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3013,7 +2998,7 @@ public static function allNotWhitespaceOnly($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3031,13 +3016,13 @@ public static function allNullOrNotWhitespaceOnly($value, $message = ''): iterab * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $prefix */ - public static function nullOrStartsWith($value, $prefix, $message = '') + public static function nullOrStartsWith($value, $prefix, $message = ''): ?string { null === $value || static::startsWith($value, $prefix, $message); return $value; @@ -3047,7 +3032,7 @@ public static function nullOrStartsWith($value, $prefix, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3066,7 +3051,7 @@ public static function allStartsWith($value, $prefix, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3085,13 +3070,13 @@ public static function allNullOrStartsWith($value, $prefix, $message = ''): iter * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $prefix */ - public static function nullOrNotStartsWith($value, $prefix, $message = '') + public static function nullOrNotStartsWith($value, $prefix, $message = ''): ?string { null === $value || static::notStartsWith($value, $prefix, $message); return $value; @@ -3101,7 +3086,7 @@ public static function nullOrNotStartsWith($value, $prefix, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3120,7 +3105,7 @@ public static function allNotStartsWith($value, $prefix, $message = ''): iterabl * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3139,12 +3124,12 @@ public static function allNullOrNotStartsWith($value, $prefix, $message = ''): i * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrStartsWithLetter($value, $message = '') + public static function nullOrStartsWithLetter($value, $message = ''): ?string { null === $value || static::startsWithLetter($value, $message); return $value; @@ -3154,7 +3139,7 @@ public static function nullOrStartsWithLetter($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3172,7 +3157,7 @@ public static function allStartsWithLetter($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3190,13 +3175,13 @@ public static function allNullOrStartsWithLetter($value, $message = ''): iterabl * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $suffix */ - public static function nullOrEndsWith($value, $suffix, $message = '') + public static function nullOrEndsWith($value, $suffix, $message = ''): ?string { null === $value || static::endsWith($value, $suffix, $message); return $value; @@ -3206,7 +3191,7 @@ public static function nullOrEndsWith($value, $suffix, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3225,7 +3210,7 @@ public static function allEndsWith($value, $suffix, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3244,13 +3229,13 @@ public static function allNullOrEndsWith($value, $suffix, $message = ''): iterab * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $suffix */ - public static function nullOrNotEndsWith($value, $suffix, $message = '') + public static function nullOrNotEndsWith($value, $suffix, $message = ''): ?string { null === $value || static::notEndsWith($value, $suffix, $message); return $value; @@ -3260,7 +3245,7 @@ public static function nullOrNotEndsWith($value, $suffix, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3279,7 +3264,7 @@ public static function allNotEndsWith($value, $suffix, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3298,13 +3283,13 @@ public static function allNullOrNotEndsWith($value, $suffix, $message = ''): ite * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $pattern */ - public static function nullOrRegex($value, $pattern, $message = '') + public static function nullOrRegex($value, $pattern, $message = ''): ?string { null === $value || static::regex($value, $pattern, $message); return $value; @@ -3314,7 +3299,7 @@ public static function nullOrRegex($value, $pattern, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3333,7 +3318,7 @@ public static function allRegex($value, $pattern, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3352,13 +3337,13 @@ public static function allNullOrRegex($value, $pattern, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $pattern */ - public static function nullOrNotRegex($value, $pattern, $message = '') + public static function nullOrNotRegex($value, $pattern, $message = ''): ?string { null === $value || static::notRegex($value, $pattern, $message); return $value; @@ -3368,7 +3353,7 @@ public static function nullOrNotRegex($value, $pattern, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3387,7 +3372,7 @@ public static function allNotRegex($value, $pattern, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3406,12 +3391,12 @@ public static function allNullOrNotRegex($value, $pattern, $message = ''): itera * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrUnicodeLetters($value, $message = '') + public static function nullOrUnicodeLetters($value, $message = ''): ?string { null === $value || static::unicodeLetters($value, $message); return $value; @@ -3421,7 +3406,7 @@ public static function nullOrUnicodeLetters($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3439,7 +3424,7 @@ public static function allUnicodeLetters($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3457,12 +3442,12 @@ public static function allNullOrUnicodeLetters($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrAlpha($value, $message = '') + public static function nullOrAlpha($value, $message = ''): ?string { null === $value || static::alpha($value, $message); return $value; @@ -3472,7 +3457,7 @@ public static function nullOrAlpha($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3490,7 +3475,7 @@ public static function allAlpha($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3508,12 +3493,12 @@ public static function allNullOrAlpha($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrDigits($value, $message = '') + public static function nullOrDigits($value, $message = ''): ?string { null === $value || static::digits($value, $message); return $value; @@ -3523,7 +3508,7 @@ public static function nullOrDigits($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3541,7 +3526,7 @@ public static function allDigits($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3559,12 +3544,12 @@ public static function allNullOrDigits($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrAlnum($value, $message = '') + public static function nullOrAlnum($value, $message = ''): ?string { null === $value || static::alnum($value, $message); return $value; @@ -3574,7 +3559,7 @@ public static function nullOrAlnum($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3592,7 +3577,7 @@ public static function allAlnum($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3617,7 +3602,7 @@ public static function allNullOrAlnum($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrLower($value, $message = '') + public static function nullOrLower($value, $message = ''): ?string { null === $value || static::lower($value, $message); return $value; @@ -3667,12 +3652,12 @@ public static function allNullOrLower($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrUpper($value, $message = '') + public static function nullOrUpper($value, $message = ''): ?string { null === $value || static::upper($value, $message); return $value; @@ -3682,7 +3667,7 @@ public static function nullOrUpper($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3698,11 +3683,11 @@ public static function allUpper($value, $message = ''): iterable /** * @psalm-pure * - * @psalm-assert iterable $value + * @psalm-assert iterable $value * * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3720,13 +3705,13 @@ public static function allNullOrUpper($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $length */ - public static function nullOrLength($value, $length, $message = '') + public static function nullOrLength($value, $length, $message = ''): ?string { null === $value || static::length($value, $length, $message); return $value; @@ -3736,7 +3721,7 @@ public static function nullOrLength($value, $length, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3755,7 +3740,7 @@ public static function allLength($value, $length, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3774,13 +3759,13 @@ public static function allNullOrLength($value, $length, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $min */ - public static function nullOrMinLength($value, $min, $message = '') + public static function nullOrMinLength($value, $min, $message = ''): ?string { null === $value || static::minLength($value, $min, $message); return $value; @@ -3790,7 +3775,7 @@ public static function nullOrMinLength($value, $min, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3809,7 +3794,7 @@ public static function allMinLength($value, $min, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3828,13 +3813,13 @@ public static function allNullOrMinLength($value, $min, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $max */ - public static function nullOrMaxLength($value, $max, $message = '') + public static function nullOrMaxLength($value, $max, $message = ''): ?string { null === $value || static::maxLength($value, $max, $message); return $value; @@ -3844,7 +3829,7 @@ public static function nullOrMaxLength($value, $max, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3863,7 +3848,7 @@ public static function allMaxLength($value, $max, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3882,14 +3867,14 @@ public static function allNullOrMaxLength($value, $max, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value * @param mixed $min * @param mixed $max */ - public static function nullOrLengthBetween($value, $min, $max, $message = '') + public static function nullOrLengthBetween($value, $min, $max, $message = ''): ?string { null === $value || static::lengthBetween($value, $min, $max, $message); return $value; @@ -3899,7 +3884,7 @@ public static function nullOrLengthBetween($value, $min, $max, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3919,7 +3904,7 @@ public static function allLengthBetween($value, $min, $max, $message = ''): iter * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3937,12 +3922,12 @@ public static function allNullOrLengthBetween($value, $min, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrFileExists($value, $message = '') + public static function nullOrFileExists($value, $message = ''): ?string { null === $value || static::fileExists($value, $message); return $value; @@ -3950,7 +3935,7 @@ public static function nullOrFileExists($value, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3966,7 +3951,7 @@ public static function allFileExists($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -3982,12 +3967,12 @@ public static function allNullOrFileExists($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrFile($value, $message = '') + public static function nullOrFile($value, $message = ''): ?string { null === $value || static::file($value, $message); return $value; @@ -3995,7 +3980,7 @@ public static function nullOrFile($value, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4011,7 +3996,7 @@ public static function allFile($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4027,12 +4012,12 @@ public static function allNullOrFile($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrDirectory($value, $message = '') + public static function nullOrDirectory($value, $message = ''): ?string { null === $value || static::directory($value, $message); return $value; @@ -4040,7 +4025,7 @@ public static function nullOrDirectory($value, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4056,7 +4041,7 @@ public static function allDirectory($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4072,12 +4057,12 @@ public static function allNullOrDirectory($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrReadable($value, $message = '') + public static function nullOrReadable($value, $message = ''): ?string { null === $value || static::readable($value, $message); return $value; @@ -4085,7 +4070,7 @@ public static function nullOrReadable($value, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4101,7 +4086,7 @@ public static function allReadable($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4117,12 +4102,12 @@ public static function allNullOrReadable($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrWritable($value, $message = '') + public static function nullOrWritable($value, $message = ''): ?string { null === $value || static::writable($value, $message); return $value; @@ -4130,7 +4115,7 @@ public static function nullOrWritable($value, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4146,7 +4131,7 @@ public static function allWritable($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -4169,7 +4154,7 @@ public static function allNullOrWritable($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrClassExists($value, $message = '') + public static function nullOrClassExists($value, $message = ''): ?string { null === $value || static::classExists($value, $message); return $value; @@ -4224,7 +4209,7 @@ public static function allNullOrClassExists($value, $message = ''): iterable * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrSubclassOf($value, $class, $message = '') + public static function nullOrSubclassOf($value, $class, $message = ''): ?string { null === $value || static::subclassOf($value, $class, $message); return $value; @@ -4254,7 +4239,7 @@ public static function allSubclassOf($value, $class, $message = ''): iterable /** * @psalm-pure * - * @template ExpectedType of object + * @template ExpectedType of object|null * @psalm-assert iterable|null> $value * * @param mixed $class @@ -4283,7 +4268,7 @@ public static function allNullOrSubclassOf($value, $class, $message = ''): itera * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrInterfaceExists($value, $message = '') + public static function nullOrInterfaceExists($value, $message = ''): ?string { null === $value || static::interfaceExists($value, $message); return $value; @@ -4330,13 +4315,13 @@ public static function allNullOrInterfaceExists($value, $message = ''): iterable * @template ExpectedType of object * @psalm-assert class-string|ExpectedType|null $value * - * @param mixed $value * @param mixed $interface - * @param string|callable():string $message + * @param string|callable():string $message * * @return class-string|ExpectedType|null * * @throws InvalidArgumentException + * @param mixed $value */ public static function nullOrImplementsInterface($value, $interface, $message = '') { @@ -4349,13 +4334,13 @@ public static function nullOrImplementsInterface($value, $interface, $message = * @template ExpectedType of object * @psalm-assert iterable|ExpectedType> $value * - * @param mixed $value * @param mixed $interface - * @param string|callable():string $message + * @param string|callable():string $message * * @return iterable|ExpectedType> * * @throws InvalidArgumentException + * @param mixed $value */ public static function allImplementsInterface($value, $interface, $message = ''): iterable { @@ -4368,16 +4353,16 @@ public static function allImplementsInterface($value, $interface, $message = '') /** * @psalm-pure * - * @template ExpectedType of object + * @template ExpectedType of object|null * @psalm-assert iterable|ExpectedType|null> $value * - * @param mixed $value * @param mixed $interface - * @param string|callable():string $message + * @param string|callable():string $message * * @return iterable|ExpectedType|null> * * @throws InvalidArgumentException + * @param mixed $value */ public static function allNullOrImplementsInterface($value, $interface, $message = ''): iterable { @@ -4393,7 +4378,7 @@ public static function allNullOrImplementsInterface($value, $interface, $message * @param mixed $classOrObject * @param string|callable():string $message * - * @return mixed + * @return string|object|null * * @throws InvalidArgumentException * @param mixed $property @@ -4409,12 +4394,12 @@ public static function nullOrPropertyExists($classOrObject, $property, $message * @param mixed $classOrObject * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $property */ - public static function allPropertyExists($classOrObject, $property, $message = '') + public static function allPropertyExists($classOrObject, $property, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4428,12 +4413,12 @@ public static function allPropertyExists($classOrObject, $property, $message = ' * @param mixed $classOrObject * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $property */ - public static function allNullOrPropertyExists($classOrObject, $property, $message = '') + public static function allNullOrPropertyExists($classOrObject, $property, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4444,12 +4429,12 @@ public static function allNullOrPropertyExists($classOrObject, $property, $messa /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param class-string|object|null $classOrObject - * - * @return mixed + * @return T|null * * @throws InvalidArgumentException * @param mixed $property @@ -4462,17 +4447,17 @@ public static function nullOrPropertyNotExists($classOrObject, $property, $messa /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param iterable $classOrObject - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $property */ - public static function allPropertyNotExists($classOrObject, $property, $message = '') + public static function allPropertyNotExists($classOrObject, $property, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4483,17 +4468,17 @@ public static function allPropertyNotExists($classOrObject, $property, $message /** * @psalm-pure * - * @param mixed $classOrObject - * @param string|callable():string $message + * @template T as class-string|object|null * - * @psalm-param iterable $classOrObject + * @param mixed $classOrObject + * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $property */ - public static function allNullOrPropertyNotExists($classOrObject, $property, $message = '') + public static function allNullOrPropertyNotExists($classOrObject, $property, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4504,12 +4489,12 @@ public static function allNullOrPropertyNotExists($classOrObject, $property, $me /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param class-string|object|null $classOrObject - * - * @return mixed + * @return T|null * * @throws InvalidArgumentException * @param mixed $method @@ -4522,17 +4507,17 @@ public static function nullOrMethodExists($classOrObject, $method, $message = '' /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param iterable $classOrObject - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $method */ - public static function allMethodExists($classOrObject, $method, $message = '') + public static function allMethodExists($classOrObject, $method, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4543,17 +4528,17 @@ public static function allMethodExists($classOrObject, $method, $message = '') /** * @psalm-pure * - * @param mixed $classOrObject - * @param string|callable():string $message + * @template T as class-string|object|null * - * @psalm-param iterable $classOrObject + * @param mixed $classOrObject + * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $method */ - public static function allNullOrMethodExists($classOrObject, $method, $message = '') + public static function allNullOrMethodExists($classOrObject, $method, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4564,12 +4549,12 @@ public static function allNullOrMethodExists($classOrObject, $method, $message = /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param class-string|object|null $classOrObject - * - * @return mixed + * @return T|null * * @throws InvalidArgumentException * @param mixed $method @@ -4582,17 +4567,17 @@ public static function nullOrMethodNotExists($classOrObject, $method, $message = /** * @psalm-pure * + * @template T as class-string|object + * * @param mixed $classOrObject * @param string|callable():string $message * - * @psalm-param iterable $classOrObject - * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $method */ - public static function allMethodNotExists($classOrObject, $method, $message = '') + public static function allMethodNotExists($classOrObject, $method, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4603,17 +4588,17 @@ public static function allMethodNotExists($classOrObject, $method, $message = '' /** * @psalm-pure * - * @param mixed $classOrObject - * @param string|callable():string $message + * @template T as class-string|object|null * - * @psalm-param iterable $classOrObject + * @param mixed $classOrObject + * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $method */ - public static function allNullOrMethodNotExists($classOrObject, $method, $message = '') + public static function allNullOrMethodNotExists($classOrObject, $method, $message = ''): iterable { static::isIterable($classOrObject); foreach ($classOrObject as $entry) { @@ -4627,12 +4612,12 @@ public static function allNullOrMethodNotExists($classOrObject, $method, $messag * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return array|null * * @throws InvalidArgumentException * @param mixed $array */ - public static function nullOrKeyExists($array, $key, $message = '') + public static function nullOrKeyExists($array, $key, $message = ''): ?array { null === $array || static::keyExists($array, $key, $message); return $array; @@ -4643,12 +4628,12 @@ public static function nullOrKeyExists($array, $key, $message = '') * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array */ - public static function allKeyExists($array, $key, $message = '') + public static function allKeyExists($array, $key, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4662,12 +4647,12 @@ public static function allKeyExists($array, $key, $message = '') * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array */ - public static function allNullOrKeyExists($array, $key, $message = '') + public static function allNullOrKeyExists($array, $key, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4681,12 +4666,12 @@ public static function allNullOrKeyExists($array, $key, $message = '') * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return array|null * * @throws InvalidArgumentException * @param mixed $array */ - public static function nullOrKeyNotExists($array, $key, $message = '') + public static function nullOrKeyNotExists($array, $key, $message = ''): ?array { null === $array || static::keyNotExists($array, $key, $message); return $array; @@ -4697,12 +4682,12 @@ public static function nullOrKeyNotExists($array, $key, $message = '') * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array */ - public static function allKeyNotExists($array, $key, $message = '') + public static function allKeyNotExists($array, $key, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4716,12 +4701,12 @@ public static function allKeyNotExists($array, $key, $message = '') * @param string|int $key * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array */ - public static function allNullOrKeyNotExists($array, $key, $message = '') + public static function allNullOrKeyNotExists($array, $key, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4789,7 +4774,7 @@ public static function allNullOrValidArrayKey($value, $message = ''): iterable /** * @param string|callable():string $message * - * @return mixed + * @return Countable|array|null * * @throws InvalidArgumentException * @param mixed $array @@ -4803,13 +4788,13 @@ public static function nullOrCount($array, $number, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $number */ - public static function allCount($array, $number, $message = '') + public static function allCount($array, $number, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4820,13 +4805,13 @@ public static function allCount($array, $number, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $number */ - public static function allNullOrCount($array, $number, $message = '') + public static function allNullOrCount($array, $number, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4837,7 +4822,7 @@ public static function allNullOrCount($array, $number, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return Countable|array|null * * @throws InvalidArgumentException * @param mixed $array @@ -4851,13 +4836,13 @@ public static function nullOrMinCount($array, $min, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $min */ - public static function allMinCount($array, $min, $message = '') + public static function allMinCount($array, $min, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4868,13 +4853,13 @@ public static function allMinCount($array, $min, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $min */ - public static function allNullOrMinCount($array, $min, $message = '') + public static function allNullOrMinCount($array, $min, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4885,7 +4870,7 @@ public static function allNullOrMinCount($array, $min, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return Countable|array|null * * @throws InvalidArgumentException * @param mixed $array @@ -4899,13 +4884,13 @@ public static function nullOrMaxCount($array, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $max */ - public static function allMaxCount($array, $max, $message = '') + public static function allMaxCount($array, $max, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4916,13 +4901,13 @@ public static function allMaxCount($array, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $max */ - public static function allNullOrMaxCount($array, $max, $message = '') + public static function allNullOrMaxCount($array, $max, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4933,7 +4918,7 @@ public static function allNullOrMaxCount($array, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return Countable|array|null * * @throws InvalidArgumentException * @param mixed $array @@ -4948,14 +4933,14 @@ public static function nullOrCountBetween($array, $min, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $min * @param mixed $max */ - public static function allCountBetween($array, $min, $max, $message = '') + public static function allCountBetween($array, $min, $max, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4966,14 +4951,14 @@ public static function allCountBetween($array, $min, $max, $message = '') /** * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $array * @param mixed $min * @param mixed $max */ - public static function allNullOrCountBetween($array, $min, $max, $message = '') + public static function allNullOrCountBetween($array, $min, $max, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -4993,7 +4978,7 @@ public static function allNullOrCountBetween($array, $min, $max, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function nullOrIsList($array, $message = '') + public static function nullOrIsList($array, $message = ''): ?array { null === $array || static::isList($array, $message); return $array; @@ -5010,7 +4995,7 @@ public static function nullOrIsList($array, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function allIsList($array, $message = '') + public static function allIsList($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5030,7 +5015,7 @@ public static function allIsList($array, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function allNullOrIsList($array, $message = '') + public static function allNullOrIsList($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5050,7 +5035,7 @@ public static function allNullOrIsList($array, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function nullOrIsNonEmptyList($array, $message = '') + public static function nullOrIsNonEmptyList($array, $message = ''): ?array { null === $array || static::isNonEmptyList($array, $message); return $array; @@ -5067,7 +5052,7 @@ public static function nullOrIsNonEmptyList($array, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function allIsNonEmptyList($array, $message = '') + public static function allIsNonEmptyList($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5087,7 +5072,7 @@ public static function allIsNonEmptyList($array, $message = '') * @throws InvalidArgumentException * @param mixed $array */ - public static function allNullOrIsNonEmptyList($array, $message = '') + public static function allNullOrIsNonEmptyList($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5108,7 +5093,7 @@ public static function allNullOrIsNonEmptyList($array, $message = '') * * @throws InvalidArgumentException */ - public static function nullOrIsMap($array, $message = '') + public static function nullOrIsMap($array, $message = ''): ?array { null === $array || static::isMap($array, $message); return $array; @@ -5126,7 +5111,7 @@ public static function nullOrIsMap($array, $message = '') * * @throws InvalidArgumentException */ - public static function allIsMap($array, $message = '') + public static function allIsMap($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5147,7 +5132,7 @@ public static function allIsMap($array, $message = '') * * @throws InvalidArgumentException */ - public static function allNullOrIsMap($array, $message = '') + public static function allNullOrIsMap($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5156,12 +5141,10 @@ public static function allNullOrIsMap($array, $message = '') return $array; } /** - * @psalm-assert callable|null $callable - * * @param mixed $callable * @param string|callable():string $message * - * @return callable|null + * @return Closure|callable-string|null * * @throws InvalidArgumentException */ @@ -5171,16 +5154,14 @@ public static function nullOrIsStatic($callable, $message = '') return $callable; } /** - * @psalm-assert iterable $callable - * * @param mixed $callable - * @param string|callable():string $message + * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException */ - public static function allIsStatic($callable, $message = '') + public static function allIsStatic($callable, $message = ''): iterable { static::isIterable($callable); foreach ($callable as $entry) { @@ -5189,16 +5170,14 @@ public static function allIsStatic($callable, $message = '') return $callable; } /** - * @psalm-assert iterable $callable - * * @param mixed $callable - * @param string|callable():string $message + * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException */ - public static function allNullOrIsStatic($callable, $message = '') + public static function allNullOrIsStatic($callable, $message = ''): iterable { static::isIterable($callable); foreach ($callable as $entry) { @@ -5207,12 +5186,10 @@ public static function allNullOrIsStatic($callable, $message = '') return $callable; } /** - * @psalm-assert callable|null $callable - * * @param mixed $callable * @param string|callable():string $message * - * @return callable|null + * @return Closure|callable-string|null * * @throws InvalidArgumentException */ @@ -5222,16 +5199,14 @@ public static function nullOrNotStatic($callable, $message = '') return $callable; } /** - * @psalm-assert iterable $callable - * * @param mixed $callable - * @param string|callable():string $message + * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException */ - public static function allNotStatic($callable, $message = '') + public static function allNotStatic($callable, $message = ''): iterable { static::isIterable($callable); foreach ($callable as $entry) { @@ -5240,16 +5215,14 @@ public static function allNotStatic($callable, $message = '') return $callable; } /** - * @psalm-assert iterable $callable - * * @param mixed $callable - * @param string|callable():string $message + * @param string|callable():string $message * - * @return iterable + * @return iterable * * @throws InvalidArgumentException */ - public static function allNullOrNotStatic($callable, $message = '') + public static function allNullOrNotStatic($callable, $message = ''): iterable { static::isIterable($callable); foreach ($callable as $entry) { @@ -5265,11 +5238,11 @@ public static function allNullOrNotStatic($callable, $message = '') * @param mixed $array * @param string|callable():string $message * - * @return mixed + * @return non-empty-array|null * * @throws InvalidArgumentException */ - public static function nullOrIsNonEmptyMap($array, $message = '') + public static function nullOrIsNonEmptyMap($array, $message = ''): ?array { null === $array || static::isNonEmptyMap($array, $message); return $array; @@ -5282,11 +5255,11 @@ public static function nullOrIsNonEmptyMap($array, $message = '') * @param mixed $array * @param string|callable():string $message * - * @return mixed + * @return iterable> * * @throws InvalidArgumentException */ - public static function allIsNonEmptyMap($array, $message = '') + public static function allIsNonEmptyMap($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5304,12 +5277,11 @@ public static function allIsNonEmptyMap($array, $message = '') * @param mixed $array * @param string|callable():string $message * - * @return iterable + * @return iterable|null> * * @throws InvalidArgumentException - * @return mixed */ - public static function allNullOrIsNonEmptyMap($array, $message = '') + public static function allNullOrIsNonEmptyMap($array, $message = ''): iterable { static::isIterable($array); foreach ($array as $entry) { @@ -5322,12 +5294,12 @@ public static function allNullOrIsNonEmptyMap($array, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return string|null * * @throws InvalidArgumentException * @param mixed $value */ - public static function nullOrUuid($value, $message = '') + public static function nullOrUuid($value, $message = ''): ?string { null === $value || static::uuid($value, $message); return $value; @@ -5337,7 +5309,7 @@ public static function nullOrUuid($value, $message = '') * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -5355,7 +5327,7 @@ public static function allUuid($value, $message = ''): iterable * * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException * @param mixed $value @@ -5369,31 +5341,33 @@ public static function allNullOrUuid($value, $message = ''): iterable return $value; } /** - * @param string|callable():string $message + * @template T as callable * - * @psalm-param class-string $class + * @param mixed $expression + * @param class-string $class + * @param string|callable():string $message * - * @return mixed + * @return T|null * * @throws InvalidArgumentException - * @param mixed $expression */ - public static function nullOrThrows($expression, string $class = 'Throwable', $message = '') + public static function nullOrThrows($expression, string $class = 'Throwable', $message = ''): ?callable { null === $expression || static::throws($expression, $class, $message); return $expression; } /** - * @param string|callable():string $message + * @template T as callable * - * @psalm-param class-string $class + * @param mixed $expression + * @param class-string $class + * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $expression */ - public static function allThrows($expression, string $class = 'Throwable', $message = '') + public static function allThrows($expression, string $class = 'Throwable', $message = ''): iterable { static::isIterable($expression); foreach ($expression as $entry) { @@ -5402,16 +5376,17 @@ public static function allThrows($expression, string $class = 'Throwable', $mess return $expression; } /** - * @param string|callable():string $message + * @template T as callable|null * - * @psalm-param class-string $class + * @param mixed $expression + * @param class-string $class + * @param string|callable():string $message * - * @return mixed + * @return iterable * * @throws InvalidArgumentException - * @param mixed $expression */ - public static function allNullOrThrows($expression, string $class = 'Throwable', $message = '') + public static function allNullOrThrows($expression, string $class = 'Throwable', $message = ''): iterable { static::isIterable($expression); foreach ($expression as $entry) { diff --git a/vendor/webmozart/assert/src/PsalmPlugin.php b/vendor/webmozart/assert/src/PsalmPlugin.php new file mode 100644 index 000000000000..e88cc255e9c1 --- /dev/null +++ b/vendor/webmozart/assert/src/PsalmPlugin.php @@ -0,0 +1,38 @@ +registerHooksFromClass(self::class); + } + public static function afterMethodCallAnalysis(AfterMethodCallAnalysisEvent $event): void + { + [$class, $method] = explode('::', $event->getAppearingMethodId()); + if ($class !== Assert::class) { + return; + } + if (!isset(HasAssert::HAS_ASSERT[$method])) { + return; + } + $firstArg = $event->getExpr()->getArgs()[0] ?? null; + if ($firstArg === null) { + return; + } + $varId = ExpressionIdentifier::getExtendedVarId($firstArg->value, $event->getContext()->self, $event->getStatementsSource()); + if ($varId === null || !isset($event->getContext()->vars_in_scope[$varId])) { + return; + } + $candidateType = $event->getContext()->vars_in_scope[$varId]; + $event->setReturnTypeCandidate($candidateType); + } +} From 4661c582a20f03df585d2e3fdc4af1b83d67a091 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 20 May 2026 19:30:21 +0000 Subject: [PATCH 12/12] Rector 2.4.4 --- src/Application/VersionResolver.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index de1ef416fcb2..b20639a121a1 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,7 +19,7 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = 'ee9e4d565f58117c8d17bfe93a8126bbb5de6d3b'; + public const PACKAGE_VERSION = '2.4.4'; /** * @api * @var string