From 1fd6f9d8b1bc6d5f3c3e958e1873e34b88041ec4 Mon Sep 17 00:00:00 2001 From: Marc Beinder Date: Fri, 20 Feb 2026 08:49:59 -0600 Subject: [PATCH 1/7] Add Laravel 13 Support --- .idea/copyright/Encore_Digital_Group.xml | 6 - composer.json | 4 +- composer.lock | 648 +++++++++--------- rector.php | 5 +- src/Support/Internal/Rector/Rector.php | 32 +- .../ApplySingleItemDocBlockStyleRector.php | 124 ++++ .../ExpandSeeAnnotationClassNameRector.php | 222 ++++++ .../ReplaceSingleQuotesWithDoubleRector.php | 9 +- 8 files changed, 715 insertions(+), 335 deletions(-) delete mode 100644 .idea/copyright/Encore_Digital_Group.xml create mode 100644 src/Support/Internal/Rector/Rules/ApplySingleItemDocBlockStyleRector.php create mode 100644 src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php diff --git a/.idea/copyright/Encore_Digital_Group.xml b/.idea/copyright/Encore_Digital_Group.xml deleted file mode 100644 index e61d004..0000000 --- a/.idea/copyright/Encore_Digital_Group.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file diff --git a/composer.json b/composer.json index 93380a1..8888255 100644 --- a/composer.json +++ b/composer.json @@ -15,8 +15,8 @@ "require": { "php": "^8.3", "composer/composer": "^2.8", - "illuminate/collections": "^10|^11|^12", - "illuminate/support": "^10|^11|^12", + "illuminate/collections": "^10|^11|^12|^13", + "illuminate/support": "^10|^11|^12|^13", "ramsey/uuid": "^4.7", "symfony/property-access": "^7.2", "symfony/serializer": "^7.2" diff --git a/composer.lock b/composer.lock index aef6d16..93c289d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "5e755e57c6d94b86a69152b6f4fe6939", + "content-hash": "e232d175aceeb9770dfd2659b55f9bfb", "packages": [ { "name": "brick/math", - "version": "0.14.1", + "version": "0.14.8", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", - "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", + "url": "https://api.github.com/repos/brick/math/zipball/63422359a44b7f06cae63c3b429b59e8efcc0629", + "reference": "63422359a44b7f06cae63c3b429b59e8efcc0629", "shasum": "" }, "require": { @@ -56,7 +56,7 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.14.1" + "source": "https://github.com/brick/math/tree/0.14.8" }, "funding": [ { @@ -64,7 +64,7 @@ "type": "github" } ], - "time": "2025-11-24T14:40:29+00:00" + "time": "2026-02-10T14:33:43+00:00" }, { "name": "carbonphp/carbon-doctrine-types", @@ -852,16 +852,16 @@ }, { "name": "illuminate/collections", - "version": "v12.51.0", + "version": "v12.52.0", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "1fd7db2203ce5a935fffd2ad40955248fb9f581c" + "reference": "f35c084f0d9bc57895515cb4d0665797c66285fd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/1fd7db2203ce5a935fffd2ad40955248fb9f581c", - "reference": "1fd7db2203ce5a935fffd2ad40955248fb9f581c", + "url": "https://api.github.com/repos/illuminate/collections/zipball/f35c084f0d9bc57895515cb4d0665797c66285fd", + "reference": "f35c084f0d9bc57895515cb4d0665797c66285fd", "shasum": "" }, "require": { @@ -908,7 +908,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2026-02-09T13:43:38+00:00" + "time": "2026-02-16T14:10:38+00:00" }, { "name": "illuminate/conditionable", @@ -1050,18 +1050,69 @@ }, "time": "2024-07-23T16:31:01+00:00" }, + { + "name": "illuminate/reflection", + "version": "v12.52.0", + "source": { + "type": "git", + "url": "https://github.com/illuminate/reflection.git", + "reference": "6188e97a587371b9951c2a7e337cd760308c17d7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/illuminate/reflection/zipball/6188e97a587371b9951c2a7e337cd760308c17d7", + "reference": "6188e97a587371b9951c2a7e337cd760308c17d7", + "shasum": "" + }, + "require": { + "illuminate/collections": "^12.0", + "illuminate/contracts": "^12.0", + "php": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "12.x-dev" + } + }, + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Illuminate\\Support\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "The Illuminate Reflection package.", + "homepage": "https://laravel.com", + "support": { + "issues": "https://github.com/laravel/framework/issues", + "source": "https://github.com/laravel/framework" + }, + "time": "2026-02-04T15:21:22+00:00" + }, { "name": "illuminate/support", - "version": "v12.39.0", + "version": "v12.52.0", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "d9780f626aa79d6b7b9c18f0d886340a29c66659" + "reference": "6e9de455bcb232372db11531b72a01d4eca83ef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/d9780f626aa79d6b7b9c18f0d886340a29c66659", - "reference": "d9780f626aa79d6b7b9c18f0d886340a29c66659", + "url": "https://api.github.com/repos/illuminate/support/zipball/6e9de455bcb232372db11531b72a01d4eca83ef2", + "reference": "6e9de455bcb232372db11531b72a01d4eca83ef2", "shasum": "" }, "require": { @@ -1073,6 +1124,7 @@ "illuminate/conditionable": "^12.0", "illuminate/contracts": "^12.0", "illuminate/macroable": "^12.0", + "illuminate/reflection": "^12.0", "nesbot/carbon": "^3.8.4", "php": "^8.2", "symfony/polyfill-php83": "^1.33", @@ -1127,20 +1179,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-11-16T14:43:22+00:00" + "time": "2026-02-14T23:03:41+00:00" }, { "name": "justinrainbow/json-schema", - "version": "6.6.4", + "version": "v6.7.2", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "2eeb75d21cf73211335888e7f5e6fd7440723ec7" + "reference": "6fea66c7204683af437864e7c4e7abf383d14bc0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/2eeb75d21cf73211335888e7f5e6fd7440723ec7", - "reference": "2eeb75d21cf73211335888e7f5e6fd7440723ec7", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/6fea66c7204683af437864e7c4e7abf383d14bc0", + "reference": "6fea66c7204683af437864e7c4e7abf383d14bc0", "shasum": "" }, "require": { @@ -1200,9 +1252,9 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.6.4" + "source": "https://github.com/jsonrainbow/json-schema/tree/v6.7.2" }, - "time": "2025-12-19T15:01:32+00:00" + "time": "2026-02-15T15:06:22+00:00" }, { "name": "marc-mabe/php-enum", @@ -1279,16 +1331,16 @@ }, { "name": "nesbot/carbon", - "version": "3.10.3", + "version": "3.11.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f" + "reference": "f438fcc98f92babee98381d399c65336f3a3827f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", - "reference": "8e3643dcd149ae0fe1d2ff4f2c8e4bbfad7c165f", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f", + "reference": "f438fcc98f92babee98381d399c65336f3a3827f", "shasum": "" }, "require": { @@ -1296,9 +1348,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3.12 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -1312,7 +1364,7 @@ "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan": "^2.1.22", "phpunit/phpunit": "^10.5.53", - "squizlabs/php_codesniffer": "^3.13.4" + "squizlabs/php_codesniffer": "^3.13.4 || ^4.0.0" }, "bin": [ "bin/carbon" @@ -1355,14 +1407,14 @@ } ], "description": "An API extension for DateTime that supports 281 different languages.", - "homepage": "https://carbon.nesbot.com", + "homepage": "https://carbonphp.github.io/carbon/", "keywords": [ "date", "datetime", "time" ], "support": { - "docs": "https://carbon.nesbot.com/docs", + "docs": "https://carbonphp.github.io/carbon/guide/getting-started/introduction.html", "issues": "https://github.com/CarbonPHP/carbon/issues", "source": "https://github.com/CarbonPHP/carbon" }, @@ -1380,7 +1432,7 @@ "type": "tidelift" } ], - "time": "2025-09-06T13:39:36+00:00" + "time": "2026-01-29T09:26:29+00:00" }, { "name": "psr/clock", @@ -1986,22 +2038,21 @@ }, { "name": "symfony/clock", - "version": "v7.3.0", + "version": "v8.0.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24" + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", - "reference": "b81435fbd6648ea425d1ee96a2d8e68f4ceacd24", + "url": "https://api.github.com/repos/symfony/clock/zipball/832119f9b8dbc6c8e6f65f30c5969eca1e88764f", + "reference": "832119f9b8dbc6c8e6f65f30c5969eca1e88764f", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" + "php": ">=8.4", + "psr/clock": "^1.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -2040,7 +2091,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.3.0" + "source": "https://github.com/symfony/clock/tree/v8.0.0" }, "funding": [ { @@ -2051,56 +2102,52 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-11-12T15:46:48+00:00" }, { "name": "symfony/console", - "version": "v7.4.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894" + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/41e38717ac1dd7a46b6bda7d6a82af2d98a78894", - "reference": "41e38717ac1dd7a46b6bda7d6a82af2d98a78894", + "url": "https://api.github.com/repos/symfony/console/zipball/ace03c4cf9805080ff40cbeec69fca180c339a3b", + "reference": "ace03c4cf9805080ff40cbeec69fca180c339a3b", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^7.2|^8.0" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" + "symfony/string": "^7.4|^8.0" }, "provide": { "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0|^8.0", - "symfony/dependency-injection": "^6.4|^7.0|^8.0", - "symfony/event-dispatcher": "^6.4|^7.0|^8.0", - "symfony/http-foundation": "^6.4|^7.0|^8.0", - "symfony/http-kernel": "^6.4|^7.0|^8.0", - "symfony/lock": "^6.4|^7.0|^8.0", - "symfony/messenger": "^6.4|^7.0|^8.0", - "symfony/process": "^6.4|^7.0|^8.0", - "symfony/stopwatch": "^6.4|^7.0|^8.0", - "symfony/var-dumper": "^6.4|^7.0|^8.0" + "symfony/config": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/event-dispatcher": "^7.4|^8.0", + "symfony/http-foundation": "^7.4|^8.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/lock": "^7.4|^8.0", + "symfony/messenger": "^7.4|^8.0", + "symfony/process": "^7.4|^8.0", + "symfony/stopwatch": "^7.4|^8.0", + "symfony/var-dumper": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -2134,7 +2181,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.4" + "source": "https://github.com/symfony/console/tree/v8.0.4" }, "funding": [ { @@ -2154,7 +2201,7 @@ "type": "tidelift" } ], - "time": "2026-01-13T11:36:38+00:00" + "time": "2026-01-13T13:06:50+00:00" }, { "name": "symfony/deprecation-contracts", @@ -2225,25 +2272,25 @@ }, { "name": "symfony/filesystem", - "version": "v7.4.0", + "version": "v8.0.1", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "d551b38811096d0be9c4691d406991b47c0c630a" + "reference": "d937d400b980523dc9ee946bb69972b5e619058d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/d551b38811096d0be9c4691d406991b47c0c630a", - "reference": "d551b38811096d0be9c4691d406991b47c0c630a", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/d937d400b980523dc9ee946bb69972b5e619058d", + "reference": "d937d400b980523dc9ee946bb69972b5e619058d", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=8.4", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.8" }, "require-dev": { - "symfony/process": "^6.4|^7.0|^8.0" + "symfony/process": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -2271,7 +2318,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.4.0" + "source": "https://github.com/symfony/filesystem/tree/v8.0.1" }, "funding": [ { @@ -2291,27 +2338,27 @@ "type": "tidelift" } ], - "time": "2025-11-27T13:27:24+00:00" + "time": "2025-12-01T09:13:36+00:00" }, { "name": "symfony/finder", - "version": "v7.4.5", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb" + "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", - "reference": "ad4daa7c38668dcb031e63bc99ea9bd42196a2cb", + "url": "https://api.github.com/repos/symfony/finder/zipball/8bd576e97c67d45941365bf824e18dc8538e6eb0", + "reference": "8bd576e97c67d45941365bf824e18dc8538e6eb0", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0|^8.0" + "symfony/filesystem": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -2339,7 +2386,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.5" + "source": "https://github.com/symfony/finder/tree/v8.0.5" }, "funding": [ { @@ -2359,7 +2406,7 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/polyfill-ctype", @@ -3182,20 +3229,20 @@ }, { "name": "symfony/process", - "version": "v7.4.5", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "608476f4604102976d687c483ac63a79ba18cc97" + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/608476f4604102976d687c483ac63a79ba18cc97", - "reference": "608476f4604102976d687c483ac63a79ba18cc97", + "url": "https://api.github.com/repos/symfony/process/zipball/b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", + "reference": "b5f3aa6762e33fd95efbaa2ec4f4bc9fdd16d674", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=8.4" }, "type": "library", "autoload": { @@ -3223,7 +3270,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.5" + "source": "https://github.com/symfony/process/tree/v8.0.5" }, "funding": [ { @@ -3243,28 +3290,29 @@ "type": "tidelift" } ], - "time": "2026-01-26T15:07:59+00:00" + "time": "2026-01-26T15:08:38+00:00" }, { "name": "symfony/property-access", - "version": "v7.3.3", + "version": "v7.4.4", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7" + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", - "reference": "4a4389e5c8bd1d0320d80a23caa6a1ac71cb81a7", + "url": "https://api.github.com/repos/symfony/property-access/zipball/fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", + "reference": "fa49bf1ca8fce1ba0e2dba4e4658554cfb9364b1", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/property-info": "^6.4|^7.0" + "symfony/property-info": "^6.4.32|~7.3.10|^7.4.4|^8.0.4" }, "require-dev": { - "symfony/cache": "^6.4|^7.0" + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4.1|^7.0.1|^8.0" }, "type": "library", "autoload": { @@ -3303,7 +3351,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.3.3" + "source": "https://github.com/symfony/property-access/tree/v7.4.4" }, "funding": [ { @@ -3323,41 +3371,37 @@ "type": "tidelift" } ], - "time": "2025-08-04T15:15:28+00:00" + "time": "2026-01-05T08:47:25+00:00" }, { "name": "symfony/property-info", - "version": "v7.3.5", + "version": "v8.0.5", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051" + "reference": "9d987224b54758240e80a062c5e414431bbf84de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/0b346ed259dc5da43535caf243005fe7d4b0f051", - "reference": "0b346ed259dc5da43535caf243005fe7d4b0f051", + "url": "https://api.github.com/repos/symfony/property-info/zipball/9d987224b54758240e80a062c5e414431bbf84de", + "reference": "9d987224b54758240e80a062c5e414431bbf84de", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0", - "symfony/type-info": "^7.3.5" + "php": ">=8.4", + "symfony/string": "^7.4|^8.0", + "symfony/type-info": "^7.4.4|^8.0.4" }, "conflict": { - "phpdocumentor/reflection-docblock": "<5.2", - "phpdocumentor/type-resolver": "<1.5.1", - "symfony/cache": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/serializer": "<6.4" + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1" }, "require-dev": { "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/cache": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/serializer": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3393,7 +3437,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.3.5" + "source": "https://github.com/symfony/property-info/tree/v8.0.5" }, "funding": [ { @@ -3413,20 +3457,20 @@ "type": "tidelift" } ], - "time": "2025-10-05T22:12:41+00:00" + "time": "2026-01-27T16:18:07+00:00" }, { "name": "symfony/serializer", - "version": "v7.3.5", + "version": "v7.4.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035" + "reference": "480cd1237c98ab1219c20945b92c9d4480a44f47" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", - "reference": "ba2e50a5f2870c93f0f47ca1a4e56e4bbe274035", + "url": "https://api.github.com/repos/symfony/serializer/zipball/480cd1237c98ab1219c20945b92c9d4480a44f47", + "reference": "480cd1237c98ab1219c20945b92c9d4480a44f47", "shasum": "" }, "require": { @@ -3436,8 +3480,8 @@ "symfony/polyfill-php84": "^1.30" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.2.2", - "phpdocumentor/type-resolver": "<1.4.0", + "phpdocumentor/reflection-docblock": "<5.2|>=6", + "phpdocumentor/type-resolver": "<1.5.1", "symfony/dependency-injection": "<6.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", @@ -3446,29 +3490,29 @@ "symfony/yaml": "<6.4" }, "require-dev": { - "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpdocumentor/reflection-docblock": "^5.2", "phpstan/phpdoc-parser": "^1.0|^2.0", "seld/jsonlint": "^1.10", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^7.2", - "symfony/error-handler": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", + "symfony/cache": "^6.4|^7.0|^8.0", + "symfony/config": "^6.4|^7.0|^8.0", + "symfony/console": "^6.4|^7.0|^8.0", + "symfony/dependency-injection": "^7.2|^8.0", + "symfony/error-handler": "^6.4|^7.0|^8.0", + "symfony/filesystem": "^6.4|^7.0|^8.0", + "symfony/form": "^6.4|^7.0|^8.0", + "symfony/http-foundation": "^6.4|^7.0|^8.0", + "symfony/http-kernel": "^6.4|^7.0|^8.0", + "symfony/messenger": "^6.4|^7.0|^8.0", + "symfony/mime": "^6.4|^7.0|^8.0", + "symfony/property-access": "^6.4|^7.0|^8.0", + "symfony/property-info": "^6.4|^7.0|^8.0", "symfony/translation-contracts": "^2.5|^3", - "symfony/type-info": "^7.1.8", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/type-info": "^7.1.8|^8.0", + "symfony/uid": "^6.4|^7.0|^8.0", + "symfony/validator": "^6.4|^7.0|^8.0", + "symfony/var-dumper": "^6.4|^7.0|^8.0", + "symfony/var-exporter": "^6.4|^7.0|^8.0", + "symfony/yaml": "^6.4|^7.0|^8.0" }, "type": "library", "autoload": { @@ -3496,7 +3540,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.3.5" + "source": "https://github.com/symfony/serializer/tree/v7.4.5" }, "funding": [ { @@ -3516,7 +3560,7 @@ "type": "tidelift" } ], - "time": "2025-10-08T11:26:21+00:00" + "time": "2026-01-27T08:59:58+00:00" }, { "name": "symfony/service-contracts", @@ -3607,35 +3651,34 @@ }, { "name": "symfony/string", - "version": "v7.4.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f" + "reference": "758b372d6882506821ed666032e43020c4f57194" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1c4b10461bf2ec27537b5f36105337262f5f5d6f", - "reference": "1c4b10461bf2ec27537b5f36105337262f5f5d6f", + "url": "https://api.github.com/repos/symfony/string/zipball/758b372d6882506821ed666032e43020c4f57194", + "reference": "758b372d6882506821ed666032e43020c4f57194", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3.0", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.33", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=8.4", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-intl-grapheme": "^1.33", + "symfony/polyfill-intl-normalizer": "^1.0", + "symfony/polyfill-mbstring": "^1.0" }, "conflict": { "symfony/translation-contracts": "<2.5" }, "require-dev": { - "symfony/emoji": "^7.1|^8.0", - "symfony/http-client": "^6.4|^7.0|^8.0", - "symfony/intl": "^6.4|^7.0|^8.0", + "symfony/emoji": "^7.4|^8.0", + "symfony/http-client": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0|^8.0" + "symfony/var-exporter": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3674,7 +3717,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.4" + "source": "https://github.com/symfony/string/tree/v8.0.4" }, "funding": [ { @@ -3694,38 +3737,31 @@ "type": "tidelift" } ], - "time": "2026-01-12T10:54:30+00:00" + "time": "2026-01-12T12:37:40+00:00" }, { "name": "symfony/translation", - "version": "v7.3.4", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174" + "reference": "db70c8ce7db74fd2da7b1d268db46b2a8ce32c10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/ec25870502d0c7072d086e8ffba1420c85965174", - "reference": "ec25870502d0c7072d086e8ffba1420c85965174", + "url": "https://api.github.com/repos/symfony/translation/zipball/db70c8ce7db74fd2da7b1d268db46b2a8ce32c10", + "reference": "db70c8ce7db74fd2da7b1d268db46b2a8ce32c10", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^2.5|^3.0" + "php": ">=8.4", + "symfony/polyfill-mbstring": "^1.0", + "symfony/translation-contracts": "^3.6.1" }, "conflict": { "nikic/php-parser": "<5.0", - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", "symfony/http-client-contracts": "<2.5", - "symfony/http-kernel": "<6.4", - "symfony/service-contracts": "<2.5", - "symfony/twig-bundle": "<6.4", - "symfony/yaml": "<6.4" + "symfony/service-contracts": "<2.5" }, "provide": { "symfony/translation-implementation": "2.3|3.0" @@ -3733,17 +3769,17 @@ "require-dev": { "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", + "symfony/config": "^7.4|^8.0", + "symfony/console": "^7.4|^8.0", + "symfony/dependency-injection": "^7.4|^8.0", + "symfony/finder": "^7.4|^8.0", "symfony/http-client-contracts": "^2.5|^3.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", + "symfony/http-kernel": "^7.4|^8.0", + "symfony/intl": "^7.4|^8.0", "symfony/polyfill-intl-icu": "^1.21", - "symfony/routing": "^6.4|^7.0", + "symfony/routing": "^7.4|^8.0", "symfony/service-contracts": "^2.5|^3", - "symfony/yaml": "^6.4|^7.0" + "symfony/yaml": "^7.4|^8.0" }, "type": "library", "autoload": { @@ -3774,7 +3810,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.3.4" + "source": "https://github.com/symfony/translation/tree/v8.0.4" }, "funding": [ { @@ -3794,7 +3830,7 @@ "type": "tidelift" } ], - "time": "2025-09-07T11:39:36+00:00" + "time": "2026-01-13T13:06:50+00:00" }, { "name": "symfony/translation-contracts", @@ -3880,22 +3916,21 @@ }, { "name": "symfony/type-info", - "version": "v7.3.5", + "version": "v8.0.4", "source": { "type": "git", "url": "https://github.com/symfony/type-info.git", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3" + "reference": "106a2d3bbf0d4576b2f70e6ca866fa420956ed0d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/type-info/zipball/8b36f41421160db56914f897b57eaa6a830758b3", - "reference": "8b36f41421160db56914f897b57eaa6a830758b3", + "url": "https://api.github.com/repos/symfony/type-info/zipball/106a2d3bbf0d4576b2f70e6ca866fa420956ed0d", + "reference": "106a2d3bbf0d4576b2f70e6ca866fa420956ed0d", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/container": "^1.1|^2.0", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=8.4", + "psr/container": "^1.1|^2.0" }, "conflict": { "phpstan/phpdoc-parser": "<1.30" @@ -3939,7 +3974,7 @@ "type" ], "support": { - "source": "https://github.com/symfony/type-info/tree/v7.3.5" + "source": "https://github.com/symfony/type-info/tree/v8.0.4" }, "funding": [ { @@ -3959,7 +3994,7 @@ "type": "tidelift" } ], - "time": "2025-10-16T12:30:12+00:00" + "time": "2026-01-09T12:15:10+00:00" }, { "name": "voku/portable-ascii", @@ -4039,16 +4074,16 @@ "packages-dev": [ { "name": "brianium/paratest", - "version": "v7.17.0", + "version": "v7.19.0", "source": { "type": "git", "url": "https://github.com/paratestphp/paratest.git", - "reference": "53cb90a6aa3ef3840458781600628ade058a18b9" + "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/53cb90a6aa3ef3840458781600628ade058a18b9", - "reference": "53cb90a6aa3ef3840458781600628ade058a18b9", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", + "reference": "7c6c29af7c4b406b49ce0c6b0a3a81d3684474e6", "shasum": "" }, "require": { @@ -4059,13 +4094,13 @@ "fidry/cpu-core-counter": "^1.3.0", "jean85/pretty-package-versions": "^2.1.1", "php": "~8.3.0 || ~8.4.0 || ~8.5.0", - "phpunit/php-code-coverage": "^12.5.2", - "phpunit/php-file-iterator": "^6", - "phpunit/php-timer": "^8", - "phpunit/phpunit": "^12.5.8", - "sebastian/environment": "^8.0.3", - "symfony/console": "^7.3.4 || ^8.0.0", - "symfony/process": "^7.3.4 || ^8.0.0" + "phpunit/php-code-coverage": "^12.5.3 || ^13.0.1", + "phpunit/php-file-iterator": "^6.0.1 || ^7", + "phpunit/php-timer": "^8 || ^9", + "phpunit/phpunit": "^12.5.9 || ^13", + "sebastian/environment": "^8.0.3 || ^9", + "symfony/console": "^7.4.4 || ^8.0.4", + "symfony/process": "^7.4.5 || ^8.0.5" }, "require-dev": { "doctrine/coding-standard": "^14.0.0", @@ -4076,7 +4111,7 @@ "phpstan/phpstan-deprecation-rules": "^2.0.3", "phpstan/phpstan-phpunit": "^2.0.12", "phpstan/phpstan-strict-rules": "^2.0.8", - "symfony/filesystem": "^7.3.2 || ^8.0.0" + "symfony/filesystem": "^7.4.0 || ^8.0.1" }, "bin": [ "bin/paratest", @@ -4116,7 +4151,7 @@ ], "support": { "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.17.0" + "source": "https://github.com/paratestphp/paratest/tree/v7.19.0" }, "funding": [ { @@ -4128,7 +4163,7 @@ "type": "paypal" } ], - "time": "2026-02-05T09:14:44+00:00" + "time": "2026-02-06T10:53:26+00:00" }, { "name": "doctrine/deprecations", @@ -4624,39 +4659,36 @@ }, { "name": "nunomaduro/collision", - "version": "v8.8.3", + "version": "v8.9.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4" + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/1dc9e88d105699d0fee8bb18890f41b274f6b4c4", - "reference": "1dc9e88d105699d0fee8bb18890f41b274f6b4c4", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", + "reference": "a1ed3fa530fd60bc515f9303e8520fcb7d4bd935", "shasum": "" }, "require": { - "filp/whoops": "^2.18.1", - "nunomaduro/termwind": "^2.3.1", + "filp/whoops": "^2.18.4", + "nunomaduro/termwind": "^2.4.0", "php": "^8.2.0", - "symfony/console": "^7.3.0" + "symfony/console": "^7.4.4 || ^8.0.4" }, "conflict": { - "laravel/framework": "<11.44.2 || >=13.0.0", - "phpunit/phpunit": "<11.5.15 || >=13.0.0" + "laravel/framework": "<11.48.0 || >=14.0.0", + "phpunit/phpunit": "<11.5.50 || >=14.0.0" }, "require-dev": { - "brianium/paratest": "^7.8.3", - "larastan/larastan": "^3.4.2", - "laravel/framework": "^11.44.2 || ^12.18", - "laravel/pint": "^1.22.1", - "laravel/sail": "^1.43.1", - "laravel/sanctum": "^4.1.1", - "laravel/tinker": "^2.10.1", - "orchestra/testbench-core": "^9.12.0 || ^10.4", - "pestphp/pest": "^3.8.2 || ^4.0.0", - "sebastian/environment": "^7.2.1 || ^8.0" + "brianium/paratest": "^7.8.5", + "larastan/larastan": "^3.9.2", + "laravel/framework": "^11.48.0 || ^12.52.0", + "laravel/pint": "^1.27.1", + "orchestra/testbench-core": "^9.12.0 || ^10.9.0", + "pestphp/pest": "^3.8.5 || ^4.4.1 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.0.3 || ^9.0.0" }, "type": "library", "extra": { @@ -4719,35 +4751,35 @@ "type": "patreon" } ], - "time": "2025-11-20T02:55:25+00:00" + "time": "2026-02-17T17:33:08+00:00" }, { "name": "nunomaduro/termwind", - "version": "v2.3.3", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017" + "reference": "712a31b768f5daea284c2169a7d227031001b9a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/6fb2a640ff502caace8e05fd7be3b503a7e1c017", - "reference": "6fb2a640ff502caace8e05fd7be3b503a7e1c017", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/712a31b768f5daea284c2169a7d227031001b9a8", + "reference": "712a31b768f5daea284c2169a7d227031001b9a8", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.3.6" + "symfony/console": "^7.4.4 || ^8.0.4" }, "require-dev": { - "illuminate/console": "^11.46.1", - "laravel/pint": "^1.25.1", + "illuminate/console": "^11.47.0", + "laravel/pint": "^1.27.1", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.1.3", + "pestphp/pest": "^2.36.0 || ^3.8.4 || ^4.3.2", "phpstan/phpstan": "^1.12.32", "phpstan/phpstan-strict-rules": "^1.6.2", - "symfony/var-dumper": "^7.3.5", + "symfony/var-dumper": "^7.3.5 || ^8.0.4", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -4779,7 +4811,7 @@ "email": "enunomaduro@gmail.com" } ], - "description": "Its like Tailwind CSS, but for the console.", + "description": "It's like Tailwind CSS, but for the console.", "keywords": [ "cli", "console", @@ -4790,7 +4822,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.3" + "source": "https://github.com/nunomaduro/termwind/tree/v2.4.0" }, "funding": [ { @@ -4806,45 +4838,45 @@ "type": "github" } ], - "time": "2025-11-20T02:34:59+00:00" + "time": "2026-02-16T23:10:27+00:00" }, { "name": "pestphp/pest", - "version": "v4.3.2", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/pestphp/pest.git", - "reference": "3a4329ddc7a2b67c19fca8342a668b39be3ae398" + "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/3a4329ddc7a2b67c19fca8342a668b39be3ae398", - "reference": "3a4329ddc7a2b67c19fca8342a668b39be3ae398", + "url": "https://api.github.com/repos/pestphp/pest/zipball/f96a1b27864b585b0b29b0ee7331176726f7e54a", + "reference": "f96a1b27864b585b0b29b0ee7331176726f7e54a", "shasum": "" }, "require": { - "brianium/paratest": "^7.16.1", - "nunomaduro/collision": "^8.8.3", - "nunomaduro/termwind": "^2.3.3", + "brianium/paratest": "^7.19.0", + "nunomaduro/collision": "^8.9.0", + "nunomaduro/termwind": "^2.4.0", "pestphp/pest-plugin": "^4.0.0", "pestphp/pest-plugin-arch": "^4.0.0", "pestphp/pest-plugin-mutate": "^4.0.1", "pestphp/pest-plugin-profanity": "^4.2.1", "php": "^8.3.0", - "phpunit/phpunit": "^12.5.8", - "symfony/process": "^7.4.4|^8.0.0" + "phpunit/phpunit": "^12.5.12", + "symfony/process": "^7.4.5|^8.0.5" }, "conflict": { "filp/whoops": "<2.18.3", - "phpunit/phpunit": ">12.5.8", + "phpunit/phpunit": ">12.5.12", "sebastian/exporter": "<7.0.0", "webmozart/assert": "<1.11.0" }, "require-dev": { - "pestphp/pest-dev-tools": "^4.0.0", - "pestphp/pest-plugin-browser": "^4.2.1", + "pestphp/pest-dev-tools": "^4.1.0", + "pestphp/pest-plugin-browser": "^4.3.0", "pestphp/pest-plugin-type-coverage": "^4.0.3", - "psy/psysh": "^0.12.18" + "psy/psysh": "^0.12.20" }, "bin": [ "bin/pest" @@ -4910,7 +4942,7 @@ ], "support": { "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v4.3.2" + "source": "https://github.com/pestphp/pest/tree/v4.4.1" }, "funding": [ { @@ -4922,7 +4954,7 @@ "type": "github" } ], - "time": "2026-01-28T01:01:19+00:00" + "time": "2026-02-17T15:27:18+00:00" }, { "name": "pestphp/pest-plugin", @@ -5369,16 +5401,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "6.0.1", + "version": "5.6.6", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e" + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", - "reference": "2f5cbed597cb261d1ea458f3da3a9ad32e670b1e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/5cee1d3dfc2d2aa6599834520911d246f656bcb8", + "reference": "5cee1d3dfc2d2aa6599834520911d246f656bcb8", "shasum": "" }, "require": { @@ -5386,8 +5418,8 @@ "ext-filter": "*", "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^2.0", - "phpstan/phpdoc-parser": "^2.0", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1 || ^2" }, "require-dev": { @@ -5397,8 +5429,7 @@ "phpstan/phpstan-mockery": "^1.1", "phpstan/phpstan-webmozart-assert": "^1.2", "phpunit/phpunit": "^9.5", - "psalm/phar": "^5.26", - "shipmonk/dead-code-detector": "^0.5.1" + "psalm/phar": "^5.26" }, "type": "library", "extra": { @@ -5428,44 +5459,44 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.0.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.6" }, - "time": "2026-01-20T15:30:42+00:00" + "time": "2025-12-22T21:13:58+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "2.0.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9" + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/327a05bbee54120d4786a0dc67aad30226ad4cf9", - "reference": "327a05bbee54120d4786a0dc67aad30226ad4cf9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/92a98ada2b93d9b201a613cb5a33584dde25f195", + "reference": "92a98ada2b93d9b201a613cb5a33584dde25f195", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^2.0" + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.4", - "phpstan/phpstan": "^2.1", - "phpstan/phpstan-phpunit": "^2.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", "phpunit/phpunit": "^9.5", - "psalm/phar": "^4" + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" }, "type": "library", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev", - "dev-2.x": "2.x-dev" + "dev-1.x": "1.x-dev" } }, "autoload": { @@ -5486,9 +5517,9 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.0.0" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.12.0" }, - "time": "2026-01-06T21:53:42+00:00" + "time": "2025-11-21T15:09:14+00:00" }, { "name": "phpstan/extension-installer", @@ -5986,16 +6017,16 @@ }, { "name": "phpunit/phpunit", - "version": "12.5.8", + "version": "12.5.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889" + "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/37ddb96c14bfee10304825edbb7e66d341ec6889", - "reference": "37ddb96c14bfee10304825edbb7e66d341ec6889", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/418e06b3b46b0d54bad749ff4907fc7dfb530199", + "reference": "418e06b3b46b0d54bad749ff4907fc7dfb530199", "shasum": "" }, "require": { @@ -6009,8 +6040,8 @@ "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.3", - "phpunit/php-code-coverage": "^12.5.2", - "phpunit/php-file-iterator": "^6.0.0", + "phpunit/php-code-coverage": "^12.5.3", + "phpunit/php-file-iterator": "^6.0.1", "phpunit/php-invoker": "^6.0.0", "phpunit/php-text-template": "^5.0.0", "phpunit/php-timer": "^8.0.0", @@ -6021,6 +6052,7 @@ "sebastian/exporter": "^7.0.2", "sebastian/global-state": "^8.0.2", "sebastian/object-enumerator": "^7.0.0", + "sebastian/recursion-context": "^7.0.1", "sebastian/type": "^6.0.3", "sebastian/version": "^6.0.0", "staabm/side-effects-detector": "^1.0.5" @@ -6063,7 +6095,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.8" + "source": "https://github.com/sebastianbergmann/phpunit/tree/12.5.12" }, "funding": [ { @@ -6087,20 +6119,20 @@ "type": "tidelift" } ], - "time": "2026-01-27T06:12:29+00:00" + "time": "2026-02-16T08:34:36+00:00" }, { "name": "rector/rector", - "version": "2.3.6", + "version": "2.3.7", "source": { "type": "git", "url": "https://github.com/rectorphp/rector.git", - "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b" + "reference": "9c46ad17f57963932c9788fd1b0f1d07ff450370" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/ca9ebb81d280cd362ea39474dabd42679e32ca6b", - "reference": "ca9ebb81d280cd362ea39474dabd42679e32ca6b", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/9c46ad17f57963932c9788fd1b0f1d07ff450370", + "reference": "9c46ad17f57963932c9788fd1b0f1d07ff450370", "shasum": "" }, "require": { @@ -6139,7 +6171,7 @@ ], "support": { "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/2.3.6" + "source": "https://github.com/rectorphp/rector/tree/2.3.7" }, "funding": [ { @@ -6147,7 +6179,7 @@ "type": "github" } ], - "time": "2026-02-06T14:25:06+00:00" + "time": "2026-02-19T14:44:16+00:00" }, { "name": "sebastian/cli-parser", @@ -7100,23 +7132,23 @@ }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.8.6", + "version": "0.8.7", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "ad48430b92901fd7d003fdaf2d7b139f96c0906e" + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/ad48430b92901fd7d003fdaf2d7b139f96c0906e", - "reference": "ad48430b92901fd7d003fdaf2d7b139f96c0906e", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/1248f3f506ca9641d4f68cebcd538fa489754db8", + "reference": "1248f3f506ca9641d4f68cebcd538fa489754db8", "shasum": "" }, "require": { "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0 || ^6.0.0", - "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0 || ^13.0.0", "symfony/finder": "^6.4.0 || ^7.0.0 || ^8.0.0" }, "require-dev": { @@ -7153,9 +7185,9 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.6" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.7" }, - "time": "2026-01-30T07:16:00+00:00" + "time": "2026-02-17T17:25:14+00:00" }, { "name": "theseer/tokenizer", @@ -7329,16 +7361,16 @@ }, { "name": "webmozart/assert", - "version": "2.1.2", + "version": "2.1.5", "source": { "type": "git", "url": "https://github.com/webmozarts/assert.git", - "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649" + "reference": "79155f94852fa27e2f73b459f6503f5e87e2c188" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", - "reference": "ce6a2f100c404b2d32a1dd1270f9b59ad4f57649", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/79155f94852fa27e2f73b459f6503f5e87e2c188", + "reference": "79155f94852fa27e2f73b459f6503f5e87e2c188", "shasum": "" }, "require": { @@ -7385,9 +7417,9 @@ ], "support": { "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/2.1.2" + "source": "https://github.com/webmozarts/assert/tree/2.1.5" }, - "time": "2026-01-13T14:02:24+00:00" + "time": "2026-02-18T14:09:36+00:00" } ], "aliases": [], diff --git a/rector.php b/rector.php index 8db2a49..6620131 100644 --- a/rector.php +++ b/rector.php @@ -21,9 +21,8 @@ function skipTypeHintsForMagicMethods(): array ]); } -return RectorConfig::configure() +return Rector::configure() ->withPaths([ __DIR__ . "/src", ]) - ->withRules(Rector::rules()) - ->withSkip(skipTypeHintsForMagicMethods()); + ->withSkip(skipTypeHintsForMagicMethods()); \ No newline at end of file diff --git a/src/Support/Internal/Rector/Rector.php b/src/Support/Internal/Rector/Rector.php index 6310c77..8c0a1c9 100644 --- a/src/Support/Internal/Rector/Rector.php +++ b/src/Support/Internal/Rector/Rector.php @@ -2,6 +2,8 @@ namespace EncoreDigitalGroup\StdLib\Support\Internal\Rector; +use EncoreDigitalGroup\StdLib\Support\Internal\Rector\Rules\ApplySingleItemDocBlockStyleRector; +use EncoreDigitalGroup\StdLib\Support\Internal\Rector\Rules\ExpandSeeAnnotationClassNameRector; use EncoreDigitalGroup\StdLib\Support\Internal\Rector\Rules\ReplaceSingleQuotesWithDoubleRector; use Rector\CodeQuality\Rector\Assign\CombinedAssignRector; use Rector\CodeQuality\Rector\BooleanAnd\RemoveUselessIsObjectCheckRector; @@ -10,6 +12,7 @@ use Rector\CodeQuality\Rector\BooleanNot\SimplifyDeMorganBinaryRector; use Rector\CodeQuality\Rector\Catch_\ThrowWithPreviousExceptionRector; use Rector\CodeQuality\Rector\Class_\CompleteDynamicPropertiesRector; +use Rector\CodeQuality\Rector\Class_\ConvertStaticToSelfRector; use Rector\CodeQuality\Rector\Class_\InlineConstructorDefaultToPropertyRector; use Rector\CodeQuality\Rector\ClassMethod\ExplicitReturnNullRector; use Rector\CodeQuality\Rector\ClassMethod\InlineArrayReturnAssignRector; @@ -89,10 +92,11 @@ use Rector\CodingStyle\Rector\Property\SplitGroupedPropertiesRector; use Rector\CodingStyle\Rector\Stmt\NewlineAfterStatementRector; use Rector\CodingStyle\Rector\Stmt\RemoveUselessAliasInUseStatementRector; -use Rector\CodingStyle\Rector\String_\SymplifyQuoteEscapeRector; use Rector\CodingStyle\Rector\String_\UseClassKeywordForClassNameResolutionRector; use Rector\CodingStyle\Rector\Ternary\TernaryConditionVariableAssignmentRector; use Rector\CodingStyle\Rector\Use_\SeparateMultiUseImportsRector; +use Rector\Config\RectorConfig; +use Rector\Configuration\RectorConfigBuilder; use Rector\DeadCode\Rector\Array_\RemoveDuplicatedArrayKeyRector; use Rector\DeadCode\Rector\Assign\RemoveDoubleAssignRector; use Rector\DeadCode\Rector\Assign\RemoveUnusedVariableAssignRector; @@ -157,7 +161,6 @@ use Rector\Privatization\Rector\MethodCall\PrivatizeLocalGetterToPropertyRector; use Rector\Privatization\Rector\Property\PrivatizeFinalClassPropertyRector; use Rector\Renaming\Rector\FuncCall\RenameFunctionRector; -use Rector\Strict\Rector\Empty_\DisallowedEmptyRuleFixerRector; use Rector\Symfony\CodeQuality\Rector\ClassMethod\ResponseReturnTypeControllerActionRector; use Rector\Transform\Rector\FuncCall\FuncCallToConstFetchRector; use Rector\TypeDeclaration\Rector\ArrowFunction\AddArrowFunctionReturnTypeRector; @@ -211,20 +214,31 @@ use Rector\TypeDeclaration\Rector\While_\WhileNullableToInstanceofRector; use Rector\Visibility\Rector\ClassMethod\ExplicitPublicClassMethodRector; -/** @codeCoverageIgnore */ class Rector { - public static function rules(array $rules = []): array + public static function configure(): RectorConfigBuilder { - return array_merge([ + return RectorConfig::configure() + ->withRules(Rector::rules()) + ->withImportNames() + ->withParallel(600); + } + + public static function rules(array $rules = [], array $except = []): array + { + $allRules = array_merge([ AddVoidReturnTypeWhereNoReturnRector::class, ReplaceSingleQuotesWithDoubleRector::class, + ApplySingleItemDocBlockStyleRector::class, + SeparateMultiUseImportsRector::class, + ExpandSeeAnnotationClassNameRector::class, CombinedAssignRector::class, RemoveUselessIsObjectCheckRector::class, SimplifyEmptyArrayCheckRector::class, ReplaceMultipleBooleanNotRector::class, SimplifyDeMorganBinaryRector::class, ThrowWithPreviousExceptionRector::class, + ConvertStaticToSelfRector::class, ExplicitReturnNullRector::class, InlineArrayReturnAssignRector::class, LocallyCalledStaticMethodToNonStaticRector::class, @@ -299,7 +313,6 @@ public static function rules(array $rules = []): array NullableCompareToNullRector::class, SplitGroupedPropertiesRector::class, RemoveUselessAliasInUseStatementRector::class, - SymplifyQuoteEscapeRector::class, UseClassKeywordForClassNameResolutionRector::class, TernaryConditionVariableAssignmentRector::class, RemoveDuplicatedArrayKeyRector::class, @@ -363,7 +376,6 @@ public static function rules(array $rules = []): array PrivatizeLocalGetterToPropertyRector::class, PrivatizeFinalClassPropertyRector::class, RenameFunctionRector::class, - DisallowedEmptyRuleFixerRector::class, ResponseReturnTypeControllerActionRector::class, FuncCallToConstFetchRector::class, AddArrowFunctionReturnTypeRector::class, @@ -416,6 +428,10 @@ public static function rules(array $rules = []): array WhileNullableToInstanceofRector::class, ExplicitPublicClassMethodRector::class, ], $rules); + + $filteredRules = array_diff($allRules, $except); + + return array_filter($filteredRules, fn(string $class): bool => class_exists($class)); } public static function skip(array $rules = []): array @@ -433,4 +449,4 @@ public static function skip(array $rules = []): array NewlineAfterStatementRector::class, ], $rules); } -} +} \ No newline at end of file diff --git a/src/Support/Internal/Rector/Rules/ApplySingleItemDocBlockStyleRector.php b/src/Support/Internal/Rector/Rules/ApplySingleItemDocBlockStyleRector.php new file mode 100644 index 0000000..3fe3cf2 --- /dev/null +++ b/src/Support/Internal/Rector/Rules/ApplySingleItemDocBlockStyleRector.php @@ -0,0 +1,124 @@ +getDocComment(); + + if (!$docComment instanceof Doc) { + return null; + } + + $originalText = $docComment->getText(); + $collapsedText = $this->collapseDocBlock($originalText); + + if ($collapsedText === null || $collapsedText === $originalText) { + return null; + } + + // Create new doc comment with collapsed text + $node->setDocComment(new Doc($collapsedText)); + + return $node; + } + + public function getRuleDefinition(): RuleDefinition + { + return new RuleDefinition("Collapse multi-line docblocks into single line format", [ + new CodeSample( + <<<'CODE_SAMPLE' +class SomeClass +{ + /** + * @var string + */ + private string $name; + + /** + * @return void + */ + public function someMethod(): void + { + } +} +CODE_SAMPLE + , + <<<'CODE_SAMPLE' +class SomeClass +{ + /** @var string */ + private string $name; + + /** @return void */ + public function someMethod(): void + { + } +} +CODE_SAMPLE + ), + ]); + } + + private function collapseDocBlock(string $docBlock): ?string + { + // Remove the opening /** and closing */ + $lines = explode("\n", $docBlock); + + if (count($lines) <= 1) { + return null; // Already single line or invalid + } + + $contentLines = []; + + foreach ($lines as $line) { + $trimmedLine = trim($line); + // Skip opening /** and closing */ + if ($trimmedLine === "/**") { + continue; + } + if ($trimmedLine === "*/") { + continue; + } + + // Remove leading * and whitespace + $trimmedLine = preg_replace('/^\*\s?/', "", $trimmedLine); + + if ($trimmedLine !== "") { + $contentLines[] = $trimmedLine; + } + } + + // Don't collapse if there are multiple content lines (e.g., description + tags) + // or if there are no content lines + if (count($contentLines) !== 1) { + return null; + } + + // Create single-line docblock + return "/** " . $contentLines[0] . " */"; + } +} \ No newline at end of file diff --git a/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php b/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php new file mode 100644 index 0000000..f018e1d --- /dev/null +++ b/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php @@ -0,0 +1,222 @@ +getDocComment(); + + if (!$docComment instanceof Doc) { + return null; + } + + $originalText = $docComment->getText(); + $newText = $this->expandSeeAnnotations($originalText, $node); + + if ($newText === $originalText) { + return null; + } + + $node->setDocComment(new Doc($newText)); + + return $node; + } + + public function getRuleDefinition(): RuleDefinition + { + return new RuleDefinition("Expand short class names in @see annotations to fully qualified class names", [ + new CodeSample( + <<<'CODE_SAMPLE' +use App\Services\UserService; + +/** + * @see UserService + */ +class UserController +{ +} +CODE_SAMPLE + , + <<<'CODE_SAMPLE' +use App\Services\UserService; + +/** + * @see \App\Services\UserService + */ +class UserController +{ +} +CODE_SAMPLE + ), + ]); + } + + private function expandSeeAnnotations(string $docBlock, Class_ $classNode): string + { + // Find all @see annotations + $pattern = '/@see\s+([^\s\*]+)/'; + + $result = preg_replace_callback($pattern, fn(array $matches): string => $this->processSeeMatch($matches, $classNode), $docBlock); + + return is_string($result) ? $result : $docBlock; + } + + /** @param array $matches */ + private function processSeeMatch(array $matches, Class_ $classNode): string + { + if (!isset($matches[1])) { + return $this->getMatchValue($matches); + } + + $reference = $matches[1]; + + if ($this->shouldSkipReference($reference)) { + return $this->getMatchValue($matches); + } + + $expandedClassName = $this->resolveClassName($reference, $classNode); + + if ($expandedClassName !== null) { + return "@see " . $expandedClassName; + } + + return $this->getMatchValue($matches); + } + + /** @param array $matches */ + private function getMatchValue(array $matches): string + { + return $matches[0]; + } + + private function shouldSkipReference(string $reference): bool + { + // Skip if already fully qualified + if (str_starts_with($reference, "\\")) { + return true; + } + + // Skip URLs and method references + return str_contains($reference, "://") || str_contains($reference, "()"); + } + + private function resolveClassName(string $shortName, Class_ $classNode): ?string + { + $namespaceNode = $this->findParentNamespace($classNode); + + if (!$namespaceNode instanceof Namespace_) { + return null; + } + + // Look for use statements + $resolvedName = $this->findInUseStatements($shortName, $namespaceNode); + + if ($resolvedName !== null) { + return $resolvedName; + } + + // Check current namespace + return $this->checkCurrentNamespace($shortName, $namespaceNode); + } + + private function findParentNamespace(Class_ $classNode): ?Namespace_ + { + /** @var Node|null $parent */ + $parent = $classNode->getAttribute("parent"); + + while ($parent !== null) { + if ($parent instanceof Namespace_) { + return $parent; + } + + /** @var Node|null $parent */ + $parent = $parent->getAttribute("parent"); + } + + return null; + } + + private function findInUseStatements(string $shortName, Namespace_ $namespaceNode): ?string + { + foreach ($namespaceNode->stmts as $stmt) { + if ($stmt instanceof Use_) { + $result = $this->checkUseStatement($shortName, $stmt); + if ($result !== null) { + return $result; + } + } elseif ($stmt instanceof GroupUse) { + $result = $this->checkGroupUseStatement($shortName, $stmt); + if ($result !== null) { + return $result; + } + } + } + + return null; + } + + private function checkUseStatement(string $shortName, Use_ $useStmt): ?string + { + foreach ($useStmt->uses as $use) { + $alias = $use->alias instanceof Identifier ? $use->alias->toString() : $use->name->getLast(); + + if ($alias === $shortName) { + return "\\" . $use->name->toString(); + } + } + + return null; + } + + private function checkGroupUseStatement(string $shortName, GroupUse $groupUse): ?string + { + $prefix = $groupUse->prefix->toString(); + + foreach ($groupUse->uses as $use) { + $alias = $use->alias instanceof Identifier ? $use->alias->toString() : $use->name->getLast(); + + if ($alias === $shortName) { + return "\\" . $prefix . "\\" . $use->name->toString(); + } + } + + return null; + } + + private function checkCurrentNamespace(string $shortName, Namespace_ $namespaceNode): ?string + { + if (!$namespaceNode->name instanceof Name) { + return null; + } + + $currentNamespace = $namespaceNode->name->toString(); + $namespacedName = $currentNamespace . "\\" . $shortName; + + if (class_exists($namespacedName) || interface_exists($namespacedName) || trait_exists($namespacedName)) { + return "\\" . $namespacedName; + } + + return null; + } +} \ No newline at end of file diff --git a/src/Support/Internal/Rector/Rules/ReplaceSingleQuotesWithDoubleRector.php b/src/Support/Internal/Rector/Rules/ReplaceSingleQuotesWithDoubleRector.php index cfb1495..8d8624d 100644 --- a/src/Support/Internal/Rector/Rules/ReplaceSingleQuotesWithDoubleRector.php +++ b/src/Support/Internal/Rector/Rules/ReplaceSingleQuotesWithDoubleRector.php @@ -8,11 +8,6 @@ use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; -/** - * @internal - * - * @codeCoverageIgnore - */ final class ReplaceSingleQuotesWithDoubleRector extends AbstractRector { private const EXCLUDED_SYMBOLS = ['$', "'", '\\', "\n", "\r", "\t", "\v", "\e", "\f", "\0", "\x"]; @@ -22,9 +17,7 @@ public function getNodeTypes(): array return [String_::class]; } - /** - * @param String_ $node - */ + /** @param String_ $node */ public function refactor(Node $node): ?Node { if ($node->getAttribute("kind") === String_::KIND_SINGLE_QUOTED) { From ddb46f8c01605d0301bc27d5f5b0eae037f3e185 Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:05:22 +0000 Subject: [PATCH 2/7] Rectifying --- src/Objects/Filesystem/Directory.php | 8 ++---- src/Objects/Serializers/JsonSerializer.php | 8 ++---- src/Objects/Support/Assert.php | 16 +++-------- src/Objects/Support/Traits/Assertable.php | 12 ++------ src/Objects/Support/Traits/HasEnumValue.php | 32 ++++++++++----------- src/Objects/Support/Traits/Macroable.php | 4 +-- 6 files changed, 28 insertions(+), 52 deletions(-) diff --git a/src/Objects/Filesystem/Directory.php b/src/Objects/Filesystem/Directory.php index 04bf488..55385eb 100644 --- a/src/Objects/Filesystem/Directory.php +++ b/src/Objects/Filesystem/Directory.php @@ -25,9 +25,7 @@ public static function current(): string return $cwd; } - /** - * Get the MD5 hash of a directory - */ + /** Get the MD5 hash of a directory */ public static function hash(string $dir): string { if (!is_dir($dir)) { @@ -51,9 +49,7 @@ public static function hash(string $dir): string } - /** - * @codeCoverageIgnore - */ + /** @codeCoverageIgnore */ public static function scan(string $dir, array &$results = []): array { $files = scandir($dir); diff --git a/src/Objects/Serializers/JsonSerializer.php b/src/Objects/Serializers/JsonSerializer.php index 6df8300..16dd1e5 100644 --- a/src/Objects/Serializers/JsonSerializer.php +++ b/src/Objects/Serializers/JsonSerializer.php @@ -49,9 +49,7 @@ protected static function encoders(): array return [(new JsonEncoder)]; } - /** - * @param class-string|object $classOrObject - */ + /** @param class-string|object $classOrObject */ private static function hasMapNameAttributes(string|object $classOrObject): bool { $reflection = new ReflectionClass($classOrObject); @@ -95,9 +93,7 @@ private static function serializeWithMapName(object $object): string return $json; } - /** - * @param class-string $class - */ + /** @param class-string $class */ private static function deserializeWithMapName(string $class, string $jsonData): mixed { $data = json_decode($jsonData, true); diff --git a/src/Objects/Support/Assert.php b/src/Objects/Support/Assert.php index 5a2aa57..fc3c041 100644 --- a/src/Objects/Support/Assert.php +++ b/src/Objects/Support/Assert.php @@ -6,9 +6,7 @@ class Assert { - /** - * @phpstan-assert true $value - */ + /** @phpstan-assert true $value */ public static function true(mixed $value): void { if (!is_bool($value)) { @@ -20,9 +18,7 @@ public static function true(mixed $value): void } } - /** - * @phpstan-assert false $value - */ + /** @phpstan-assert false $value */ public static function false(mixed $value): void { if (!is_bool($value)) { @@ -34,9 +30,7 @@ public static function false(mixed $value): void } } - /** - * @phpstan-assert !null $value - */ + /** @phpstan-assert !null $value */ public static function notNull(mixed $value): void { if (is_null($value)) { @@ -44,9 +38,7 @@ public static function notNull(mixed $value): void } } - /** - * @phpstan-assert string $value - */ + /** @phpstan-assert string $value */ public static function string(mixed $value): void { if (!is_string($value)) { diff --git a/src/Objects/Support/Traits/Assertable.php b/src/Objects/Support/Traits/Assertable.php index d6aa099..8110169 100644 --- a/src/Objects/Support/Traits/Assertable.php +++ b/src/Objects/Support/Traits/Assertable.php @@ -6,25 +6,19 @@ trait Assertable { - /** - * @phpstan-assert true $value - */ + /** @phpstan-assert true $value */ protected function assertTrue(mixed $value): void { Assert::true($value); } - /** - * @phpstan-assert false $value - */ + /** @phpstan-assert false $value */ protected function assertFalse(mixed $value): void { Assert::false($value); } - /** - * @phpstan-assert !null $value - */ + /** @phpstan-assert !null $value */ protected function assertNotNull(mixed $value): void { Assert::notNull($value); diff --git a/src/Objects/Support/Traits/HasEnumValue.php b/src/Objects/Support/Traits/HasEnumValue.php index 8bed9fc..ee4db28 100644 --- a/src/Objects/Support/Traits/HasEnumValue.php +++ b/src/Objects/Support/Traits/HasEnumValue.php @@ -27,8 +27,8 @@ public static function values(): array $cases = []; /** @var BackedEnum $case */ - foreach (static::cases() as $case) { - $cases[] = $case->value; + foreach (static::cases() as $backedEnum) { + $cases[] = $backedEnum->value; } return $cases; @@ -40,9 +40,9 @@ public static function titleCasedValues(): array $cases = []; /** @var BackedEnum $case */ - foreach (static::cases() as $case) { - if (is_string($case->value)) { - $cases[$case->value] = Str::formattedTitleCase($case->value); + foreach (static::cases() as $backedEnum) { + if (is_string($backedEnum->value)) { + $cases[$backedEnum->value] = Str::formattedTitleCase($backedEnum->value); } } @@ -53,9 +53,9 @@ public static function from(int|string $value): ?static { static::enforceEnum(); - foreach (static::cases() as $case) { - if ($case->value === $value) { - return $case; + foreach (static::cases() as $backedEnum) { + if ($backedEnum->value === $value) { + return $backedEnum; } } @@ -74,8 +74,8 @@ public static function options(array $include = [], array $exclude = []): array $options = []; - foreach (self::cases() as $case) { - $options[$case->value] = self::name($case); + foreach (self::cases() as $backedEnum) { + $options[$backedEnum->value] = self::name($backedEnum); } return $options; @@ -107,9 +107,9 @@ private static function optionsIncluding(array $include): array { $options = []; - foreach (self::cases() as $case) { - if (in_array($case, $include)) { - $options[$case->value] = self::name($case); + foreach (self::cases() as $backedEnum) { + if (in_array($backedEnum, $include)) { + $options[$backedEnum->value] = self::name($backedEnum); } } @@ -120,9 +120,9 @@ private static function optionsExcluding(array $exclude): array { $options = []; - foreach (self::cases() as $case) { - if (!in_array($case, $exclude)) { - $options[$case->value] = self::name($case); + foreach (self::cases() as $backedEnum) { + if (!in_array($backedEnum, $exclude)) { + $options[$backedEnum->value] = self::name($backedEnum); } } diff --git a/src/Objects/Support/Traits/Macroable.php b/src/Objects/Support/Traits/Macroable.php index 36754fd..c233da9 100644 --- a/src/Objects/Support/Traits/Macroable.php +++ b/src/Objects/Support/Traits/Macroable.php @@ -66,9 +66,7 @@ protected static function deferToLaravel(string $method, array $parameters, bool throw new BadMethodCallException(sprintf("Method %s::%s does not exist.", static::class, $method)); } - /** - * Defer instance method call to the parent class's __call for Eloquent models. - */ + /** Defer instance method call to the parent class's __call for Eloquent models. */ protected function deferToEloquentInstance(string $method, array $parameters): mixed { if (static::canDeferToLaravel()) { From 18319ab6a83160c7a2dbc91c268a6ef0adf8e75d Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:05:22 +0000 Subject: [PATCH 3/7] Ignore Rector Commit in Git Blame --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 1489ded..cbecb10 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -68,3 +68,4 @@ d0097bd14bf964bf4c283d07432ca52bfefa6391 843702b4b18a3f73efeaefb9e019ccb21f12f042 641723ac49f06a16f68e49f35cacf1eecd94e1e4 fb55e55b716537b83b79c20a1822493ce775e36a +ddb46f8c01605d0301bc27d5f5b0eae037f3e185 From ac6e8d053f11c58db96af2d264b0840c937617b2 Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:05:42 +0000 Subject: [PATCH 4/7] Dusting --- rector.php | 1 - src/Support/Internal/Rector/Rector.php | 2 +- .../Rector/Rules/ExpandSeeAnnotationClassNameRector.php | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rector.php b/rector.php index 6620131..09c7ced 100644 --- a/rector.php +++ b/rector.php @@ -3,7 +3,6 @@ declare(strict_types=1); use EncoreDigitalGroup\StdLib\Support\Internal\Rector\Rector; -use Rector\Config\RectorConfig; use Rector\TypeDeclaration\Rector\ClassMethod\AddMethodCallBasedStrictParamTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByMethodCallTypeRector; use Rector\TypeDeclaration\Rector\ClassMethod\ParamTypeByParentCallTypeRector; diff --git a/src/Support/Internal/Rector/Rector.php b/src/Support/Internal/Rector/Rector.php index 8c0a1c9..0af4f74 100644 --- a/src/Support/Internal/Rector/Rector.php +++ b/src/Support/Internal/Rector/Rector.php @@ -431,7 +431,7 @@ public static function rules(array $rules = [], array $except = []): array $filteredRules = array_diff($allRules, $except); - return array_filter($filteredRules, fn(string $class): bool => class_exists($class)); + return array_filter($filteredRules, fn (string $class): bool => class_exists($class)); } public static function skip(array $rules = []): array diff --git a/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php b/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php index f018e1d..694bc4c 100644 --- a/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php +++ b/src/Support/Internal/Rector/Rules/ExpandSeeAnnotationClassNameRector.php @@ -10,7 +10,6 @@ use PhpParser\Node\Stmt\GroupUse; use PhpParser\Node\Stmt\Namespace_; use PhpParser\Node\Stmt\Use_; -use PhpParser\Node\Stmt\UseUse; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -77,7 +76,7 @@ private function expandSeeAnnotations(string $docBlock, Class_ $classNode): stri // Find all @see annotations $pattern = '/@see\s+([^\s\*]+)/'; - $result = preg_replace_callback($pattern, fn(array $matches): string => $this->processSeeMatch($matches, $classNode), $docBlock); + $result = preg_replace_callback($pattern, fn (array $matches): string => $this->processSeeMatch($matches, $classNode), $docBlock); return is_string($result) ? $result : $docBlock; } From 55255a2b7e960d3a9793ff3d2b8f45c783fcd367 Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:05:42 +0000 Subject: [PATCH 5/7] Ignore Duster Commit in Git Blame --- .git-blame-ignore-revs | 1 + phpstan-baseline.neon | 55 ++++++++++++++++++++++++++++++++++++++++++ phpstan.neon | 3 +++ 3 files changed, 59 insertions(+) create mode 100644 phpstan-baseline.neon diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index cbecb10..c10581f 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -69,3 +69,4 @@ d0097bd14bf964bf4c283d07432ca52bfefa6391 641723ac49f06a16f68e49f35cacf1eecd94e1e4 fb55e55b716537b83b79c20a1822493ce775e36a ddb46f8c01605d0301bc27d5f5b0eae037f3e185 +ac6e8d053f11c58db96af2d264b0840c937617b2 diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..5ec6bed --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,55 @@ +parameters: + ignoreErrors: + - + message: '#^Call to function is_string\(\) with ''friday''\|''monday''\|''saturday''\|''sunday''\|''thursday''\|''tuesday''\|''wednesday'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Calendar/DayOfWeek.php + + - + message: '#^Call to function is_string\(\) with ''april''\|''august''\|''december''\|''february''\|''january''\|''july''\|''june''\|''march''\|''may''\|''november''\|''october''\|''september'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Calendar/Month.php + + - + message: '#^Call to function is_string\(\) with ''afghanistan''\|''albania''\|''algeria''\|''andorra''\|''angola''\|''antigua_and_barbuda''\|''argentina''\|''armenia''\|''australia''\|''austria''\|''azerbaijan''\|''bahamas''\|''bahrain''\|''bangladesh''\|''barbados''\|''belarus''\|''belgium''\|''belize''\|''benin''\|''bhutan''\|''bolivia''\|''bosnia_and…''\|''botswana''\|''brazil''\|''brunei''\|''bulgaria''\|''burkina_faso''\|''burundi''\|''cabo_verde''\|''cambodia''\|''cameroon''\|''canada''\|''central_african…''\|''chad''\|''chile''\|''china''\|''colombia''\|''comoros''\|''congo''\|''costa_rica''\|''croatia''\|''cuba''\|''cyprus''\|''czechia''\|''democratic_republic…''\|''denmark''\|''djibouti''\|''dominica''\|''dominican_republic''\|''ecuador''\|''egypt''\|''el_salvador''\|''equatorial_guinea''\|''eritrea''\|''estonia''\|''eswatini''\|''ethiopia''\|''fiji''\|''finland''\|''france''\|''gabon''\|''gambia''\|''georgia''\|''germany''\|''ghana''\|''greece''\|''grenada''\|''guatemala''\|''guinea''\|''guinea_bissau''\|''guyana''\|''haiti''\|''honduras''\|''hungary''\|''iceland''\|''india''\|''indonesia''\|''iran''\|''iraq''\|''ireland''\|''israel''\|''italy''\|''jamaica''\|''japan''\|''jordan''\|''kazakhstan''\|''kenya''\|''kiribati''\|''kosovo''\|''kuwait''\|''kyrgyzstan''\|''laos''\|''latvia''\|''lebanon''\|''lesotho''\|''liberia''\|''libya''\|''liechtenstein''\|''lithuania''\|''luxembourg''\|''madagascar''\|''malawi''\|''malaysia''\|''maldives''\|''mali''\|''malta''\|''marshall_islands''\|''mauritania''\|''mauritius''\|''mexico''\|''micronesia''\|''moldova''\|''monaco''\|''mongolia''\|''montenegro''\|''morocco''\|''mozambique''\|''myanmar''\|''namibia''\|''nauru''\|''nepal''\|''netherlands''\|''new_zealand''\|''nicaragua''\|''niger''\|''nigeria''\|''north_korea''\|''north_macedonia''\|''norway''\|''oman''\|''pakistan''\|''palau''\|''palestine''\|''panama''\|''papua_new_guinea''\|''paraguay''\|''peru''\|''philippines''\|''poland''\|''portugal''\|''qatar''\|''romania''\|''russia''\|''rwanda''\|''saint_kitts_and…''\|''saint_lucia''\|''saint_vincent_and…''\|''samoa''\|''san_marino''\|''sao_tome_and…''\|''saudi_arabia''\|''senegal''\|''serbia''\|''seychelles''\|''sierra_leone''\|''singapore''\|''slovakia''\|''slovenia''\|''solomon_islands''\|''somalia''\|''south_africa''\|''south_korea''\|''south_sudan''\|''spain''\|''sri_lanka''\|''sudan''\|''suriname''\|''sweden''\|''switzerland''\|''syria''\|''taiwan''\|''tajikistan''\|''tanzania''\|''thailand''\|''timor_leste''\|''togo''\|''tonga''\|''trinidad_and_tobago''\|''tunisia''\|''turkey''\|''turkmenistan''\|''tuvalu''\|''uganda''\|''ukraine''\|''united_arab_emirates''\|''united_kingdom''\|''united_states''\|''uruguay''\|''uzbekistan''\|''vanuatu''\|''vatican_city''\|''venezuela''\|''vietnam''\|''yemen''\|''zambia''\|''zimbabwe'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Geography/Country.php + + - + message: '#^Call to function is_string\(\) with ''alberta''\|''british_columbia''\|''manitoba''\|''new_brunswick''\|''newfoundland_and…''\|''northwest…''\|''nova_scotia''\|''nunavut''\|''ontario''\|''prince_edward_island''\|''quebec''\|''saskatchewan''\|''yukon'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Geography/Country/Canada.php + + - + message: '#^Call to function is_string\(\) with ''alabama''\|''alaska''\|''arizona''\|''arkansas''\|''california''\|''colorado''\|''connecticut''\|''delaware''\|''florida''\|''georgia''\|''hawaii''\|''idaho''\|''illinois''\|''indiana''\|''iowa''\|''kansas''\|''kentucky''\|''louisiana''\|''maine''\|''maryland''\|''massachusetts''\|''michigan''\|''minnesota''\|''mississippi''\|''missouri''\|''montana''\|''nebraska''\|''nevada''\|''new_hampshire''\|''new_jersey''\|''new_mexico''\|''new_york''\|''north_carolina''\|''north_dakota''\|''ohio''\|''oklahoma''\|''oregon''\|''pennsylvania''\|''rhode_island''\|''south_carolina''\|''south_dakota''\|''tennessee''\|''texas''\|''utah''\|''vermont''\|''virginia''\|''washington''\|''west_virginia''\|''wisconsin''\|''wyoming'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Geography/Country/UnitedStates.php + + - + message: '#^Call to function is_string\(\) with ''afghan_afghani''\|''albanian_lek''\|''angolan_kwanza''\|''argentine_peso''\|''armenian_dram''\|''australian_dollar''\|''azerbaijani_manat''\|''bahamian_dollar''\|''bahraini_dinar''\|''bangladeshi_taka''\|''barbadian_dollar''\|''belarusian_ruble''\|''belize_dollar''\|''beninese_franc''\|''bermudian_dollar''\|''bolivian_boliviano''\|''bosnian_convertible…''\|''botswana_pula''\|''brazilian_real''\|''british_pound…''\|''brunei_dollar''\|''bulgarian_lev''\|''burkinabe_franc''\|''burundian_franc''\|''cambodian_riel''\|''canadian_dollar''\|''cape_verdean_escudo''\|''cayman_islands…''\|''central_african_cfa…''\|''cfp_franc''\|''chadian_franc''\|''chilean_peso''\|''chinese_yuan''\|''colombian_peso''\|''comorian_franc''\|''congolese_franc''\|''costa_rican_colon''\|''croatian_kuna''\|''cuban_peso''\|''czech_koruna''\|''danish_krone''\|''djiboutian_franc''\|''dominican_peso''\|''east_caribbean…''\|''ecuadorian_sucre''\|''egyptian_pound''\|''equatorial_guinean…''\|''eritrean_nakfa''\|''estonian_kroon''\|''ethiopian_birr''\|''euro''\|''fijian_dollar''\|''gabonese_franc''\|''gambian_dalasi''\|''georgian_lari''\|''ghanaian_cedi''\|''guatemalan_quetzal''\|''guinean_franc''\|''guyanese_dollar''\|''haitian_gourde''\|''honduran_lempira''\|''hong_kong_dollar''\|''hungarian_forint''\|''icelandic_krona''\|''indian_rupee''\|''indonesian_rupiah''\|''iranian_rial''\|''iraqi_dinar''\|''israeli_new_shekel''\|''ivorian_franc''\|''jamaican_dollar''\|''japanese_yen''\|''jordanian_dinar''\|''kazakhstani_tenge''\|''kenyan_shilling''\|''kuwaiti_dinar''\|''kyrgyzstani_som''\|''laotian_kip''\|''latvian_lats''\|''lebanese_pound''\|''lesotho_loti''\|''liberian_dollar''\|''libyan_dinar''\|''lithuanian_litas''\|''macanese_pataca''\|''macedonian_denar''\|''malagasy_ariary''\|''malawian_kwacha''\|''malaysian_ringgit''\|''maldivian_rufiyaa''\|''malian_franc''\|''mauritanian_ouguiya''\|''mauritian_rupee''\|''mexican_peso''\|''moldovan_leu''\|''mongolian_tugrik''\|''moroccan_dirham''\|''mozambican_metical''\|''myanmar_kyat''\|''namibian_dollar''\|''nepalese_rupee''\|''new_zealand_dollar''\|''nicaraguan_cordoba''\|''nigerian_franc''\|''nigerian_naira''\|''north_korean_won''\|''norwegian_krone''\|''omani_rial''\|''pakistani_rupee''\|''panamanian_balboa''\|''papua_new_guinean…''\|''paraguayan_guarani''\|''peruvian_sol''\|''philippine_peso''\|''polish_zloty''\|''qatari_riyal''\|''romanian_leu''\|''russian_ruble''\|''rwandan_franc''\|''salvadoran_colon''\|''sao_tomean_dobra''\|''saudi_riyal''\|''senegalese_franc''\|''serbian_dinar''\|''seychellois_rupee''\|''sierra_leonean_leone''\|''singapore_dollar''\|''solomon_islands…''\|''somali_shilling''\|''south_african_rand''\|''south_korean_won''\|''sri_lankan_rupee''\|''sudanese_pound''\|''surinamese_dollar''\|''swazi_lilangeni''\|''swedish_krona''\|''swiss_franc''\|''syrian_pound''\|''tajikistani_somoni''\|''tanzanian_shilling''\|''thai_baht''\|''togolese_franc''\|''tongan_paanga''\|''trinidad_and_tobago…''\|''tunisian_dinar''\|''turkish_lira''\|''turkmenistani_manat''\|''ugandan_shilling''\|''ukrainian_hryvnia''\|''united_arab…''\|''united_states_dollar''\|''uruguayan_peso''\|''uzbekistani_som''\|''vanuatu_vatu''\|''venezuelan_bolivar''\|''vietnamese_dong''\|''west_african_cfa…''\|''yemeni_rial''\|''zambian_kwacha''\|''zimbabwean_dollar'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Geography/Currency.php + + - + message: '#^Call to function is_string\(\) with ''province''\|''region''\|''state'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Geography/DivisionType.php + + - + message: '#^Call to function is_string\(\) with ''no''\|''yes'' will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Support/Enums/YesNo.php + + - + message: '#^Call to function is_string\(\) with string will always evaluate to true\.$#' + identifier: function.alreadyNarrowedType + count: 1 + path: src/Objects/Support/Types/Str.php diff --git a/phpstan.neon b/phpstan.neon index c8da40c..45ea14f 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,3 +1,6 @@ +includes: + - phpstan-baseline.neon + parameters: level: 8 paths: From 417c0b034ffd5adf1efdf507c0427bf898cea9e7 Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:08:55 +0000 Subject: [PATCH 6/7] Rectifying --- src/Objects/Support/Traits/HasEnumValue.php | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Objects/Support/Traits/HasEnumValue.php b/src/Objects/Support/Traits/HasEnumValue.php index ee4db28..c64c3cd 100644 --- a/src/Objects/Support/Traits/HasEnumValue.php +++ b/src/Objects/Support/Traits/HasEnumValue.php @@ -26,7 +26,6 @@ public static function values(): array static::enforceEnum(); $cases = []; - /** @var BackedEnum $case */ foreach (static::cases() as $backedEnum) { $cases[] = $backedEnum->value; } @@ -39,7 +38,6 @@ public static function titleCasedValues(): array static::enforceEnum(); $cases = []; - /** @var BackedEnum $case */ foreach (static::cases() as $backedEnum) { if (is_string($backedEnum->value)) { $cases[$backedEnum->value] = Str::formattedTitleCase($backedEnum->value); From 4be86c6149874bdac1e9cf305bb1cc4bfcf27f89 Mon Sep 17 00:00:00 2001 From: EncoreBot Date: Fri, 20 Feb 2026 15:08:55 +0000 Subject: [PATCH 7/7] Ignore Rector Commit in Git Blame --- .git-blame-ignore-revs | 1 + 1 file changed, 1 insertion(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index c10581f..72dd63d 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -70,3 +70,4 @@ d0097bd14bf964bf4c283d07432ca52bfefa6391 fb55e55b716537b83b79c20a1822493ce775e36a ddb46f8c01605d0301bc27d5f5b0eae037f3e185 ac6e8d053f11c58db96af2d264b0840c937617b2 +417c0b034ffd5adf1efdf507c0427bf898cea9e7