Bläddra i källkod

修改b端接口:获取项目列表、获取企业列表

15313670163 6 månader sedan
förälder
incheckning
368729970f
100 ändrade filer med 2021 tillägg och 1242 borttagningar
  1. 4 1
      app/JsonRpc/NewsService.php
  2. 194 154
      composer.lock
  3. 17 0
      vendor/brick/math/CHANGELOG.md
  4. 14 5
      vendor/brick/math/src/BigDecimal.php
  5. 4 0
      vendor/brick/math/src/BigInteger.php
  6. 1 1
      vendor/brick/math/src/Exception/MathException.php
  7. 13 2
      vendor/composer/autoload_classmap.php
  8. 1 1
      vendor/composer/autoload_files.php
  9. 2 2
      vendor/composer/autoload_psr4.php
  10. 20 9
      vendor/composer/autoload_static.php
  11. 206 166
      vendor/composer/installed.json
  12. 104 104
      vendor/composer/installed.php
  13. 34 10
      vendor/fidry/cpu-core-counter/README.md
  14. 179 0
      vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php
  15. 4 2
      vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php
  16. 5 2
      vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php
  17. 7 4
      vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php
  18. 321 0
      vendor/friendsofphp/php-cs-fixer/CHANGELOG.md
  19. 5 26
      vendor/friendsofphp/php-cs-fixer/README.md
  20. 31 22
      vendor/friendsofphp/php-cs-fixer/composer.json
  21. 17 11
      vendor/friendsofphp/php-cs-fixer/php-cs-fixer
  22. 8 4
      vendor/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php
  23. 1 4
      vendor/friendsofphp/php-cs-fixer/src/AbstractFixer.php
  24. 1 4
      vendor/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php
  25. 13 3
      vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php
  26. 17 35
      vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php
  27. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Cache/Directory.php
  28. 3 6
      vendor/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php
  29. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Cache/Signature.php
  30. 25 5
      vendor/friendsofphp/php-cs-fixer/src/Config.php
  31. 23 1
      vendor/friendsofphp/php-cs-fixer/src/ConfigInterface.php
  32. 5 2
      vendor/friendsofphp/php-cs-fixer/src/Console/Application.php
  33. 0 2
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php
  34. 3 4
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php
  35. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php
  36. 9 7
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php
  37. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php
  38. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php
  39. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php
  40. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php
  41. 7 9
      vendor/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php
  42. 60 72
      vendor/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php
  43. 3 4
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php
  44. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php
  45. 14 17
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php
  46. 4 2
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php
  47. 4 2
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php
  48. 11 3
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php
  49. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php
  50. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php
  51. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php
  52. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php
  53. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php
  54. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php
  55. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php
  56. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php
  57. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php
  58. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php
  59. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php
  60. 8 1
      vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php
  61. 1 1
      vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php
  62. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php
  63. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php
  64. 32 25
      vendor/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php
  65. 1 1
      vendor/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php
  66. 2 0
      vendor/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php
  67. 205 60
      vendor/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php
  68. 6 8
      vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php
  69. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php
  70. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php
  71. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php
  72. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Error/Error.php
  73. 2 0
      vendor/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php
  74. 1 4
      vendor/friendsofphp/php-cs-fixer/src/FileReader.php
  75. 27 26
      vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php
  76. 1 1
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php
  77. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php
  78. 58 19
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php
  79. 112 7
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php
  80. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php
  81. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php
  82. 7 5
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php
  83. 0 1
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php
  84. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php
  85. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php
  86. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php
  87. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php
  88. 20 71
      vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php
  89. 4 10
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php
  90. 19 7
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php
  91. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php
  92. 10 0
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php
  93. 3 3
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php
  94. 10 10
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php
  95. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php
  96. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php
  97. 2 2
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php
  98. 1 6
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php
  99. 9 4
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php
  100. 26 235
      vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php

+ 4 - 1
app/JsonRpc/NewsService.php

@@ -6015,6 +6015,7 @@ class NewsService implements NewsServiceInterface
           'website_category.alias as category_name',
           'website_category.alias as category_name',
           'company.status',
           'company.status',
           'company.updated_at',
           'company.updated_at',
+          'company.user_id'
         )
         )
         ->orderBy('company.updated_at', 'desc')
         ->orderBy('company.updated_at', 'desc')
         ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
         ->paginate($data['pageSize'], ['*'], 'page', $data['page']);
@@ -6314,7 +6315,9 @@ class NewsService implements NewsServiceInterface
         'project.updated_at',
         'project.updated_at',
         'project.status',
         'project.status',
         'website.website_name',
         'website.website_name',
-        'website_category.alias as category_name'
+        'website_category.alias as category_name',
+        'project.website_id',
+        'project.user_id'
       )
       )
       ->orderBy('project.updated_at', 'desc')
       ->orderBy('project.updated_at', 'desc')
       ->offset(($data['page'] - 1) * $data['pageSize'])
       ->offset(($data['page'] - 1) * $data['pageSize'])

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 194 - 154
composer.lock


+ 17 - 0
vendor/brick/math/CHANGELOG.md

@@ -2,6 +2,23 @@
 
 
 All notable changes to this project will be documented in this file.
 All notable changes to this project will be documented in this file.
 
 
+## [0.13.1](https://github.com/brick/math/releases/tag/0.13.1) - 2025-03-29
+
+✨ **Improvements**
+
+- `__toString()` methods of `BigInteger` and `BigDecimal` are now type-hinted as returning `numeric-string` instead of `string` (#90 by @vudaltsov)
+
+## [0.13.0](https://github.com/brick/math/releases/tag/0.13.0) - 2025-03-03
+
+💥 **Breaking changes**
+
+- `BigDecimal::ofUnscaledValue()` no longer throws an exception if the scale is negative
+- `MathException` now extends `RuntimeException` instead of `Exception`; this reverts the change introduced in version `0.11.0` (#82)
+
+✨ **New features**
+
+- `BigDecimal::ofUnscaledValue()` allows a negative scale (and converts the values to create a zero scale number)
+
 ## [0.12.3](https://github.com/brick/math/releases/tag/0.12.3) - 2025-02-28
 ## [0.12.3](https://github.com/brick/math/releases/tag/0.12.3) - 2025-02-28
 
 
 ✨ **New features**
 ✨ **New features**

+ 14 - 5
vendor/brick/math/src/BigDecimal.php

@@ -60,19 +60,23 @@ final class BigDecimal extends BigNumber
      * Example: `(12345, 3)` will result in the BigDecimal `12.345`.
      * Example: `(12345, 3)` will result in the BigDecimal `12.345`.
      *
      *
      * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger.
      * @param BigNumber|int|float|string $value The unscaled value. Must be convertible to a BigInteger.
-     * @param int                        $scale The scale of the number, positive or zero.
-     *
-     * @throws \InvalidArgumentException If the scale is negative.
+     * @param int                        $scale The scale of the number. If negative, the scale will be set to zero
+     *                                          and the unscaled value will be adjusted accordingly.
      *
      *
      * @psalm-pure
      * @psalm-pure
      */
      */
     public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal
     public static function ofUnscaledValue(BigNumber|int|float|string $value, int $scale = 0) : BigDecimal
     {
     {
+        $value = (string) BigInteger::of($value);
+
         if ($scale < 0) {
         if ($scale < 0) {
-            throw new \InvalidArgumentException('The scale cannot be negative.');
+            if ($value !== '0') {
+                $value .= \str_repeat('0', -$scale);
+            }
+            $scale = 0;
         }
         }
 
 
-        return new BigDecimal((string) BigInteger::of($value), $scale);
+        return new BigDecimal($value, $scale);
     }
     }
 
 
     /**
     /**
@@ -685,15 +689,20 @@ final class BigDecimal extends BigNumber
         return (float) (string) $this;
         return (float) (string) $this;
     }
     }
 
 
+    /**
+     * @return numeric-string
+     */
     #[Override]
     #[Override]
     public function __toString() : string
     public function __toString() : string
     {
     {
         if ($this->scale === 0) {
         if ($this->scale === 0) {
+            /** @var numeric-string */
             return $this->value;
             return $this->value;
         }
         }
 
 
         $value = $this->getUnscaledValueWithLeadingZeros();
         $value = $this->getUnscaledValueWithLeadingZeros();
 
 
+        /** @var numeric-string */
         return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale);
         return \substr($value, 0, -$this->scale) . '.' . \substr($value, -$this->scale);
     }
     }
 
 

+ 4 - 0
vendor/brick/math/src/BigInteger.php

@@ -1023,9 +1023,13 @@ final class BigInteger extends BigNumber
         return \hex2bin($hex);
         return \hex2bin($hex);
     }
     }
 
 
+    /**
+     * @return numeric-string
+     */
     #[Override]
     #[Override]
     public function __toString() : string
     public function __toString() : string
     {
     {
+        /** @var numeric-string */
         return $this->value;
         return $this->value;
     }
     }
 
 

+ 1 - 1
vendor/brick/math/src/Exception/MathException.php

@@ -7,6 +7,6 @@ namespace Brick\Math\Exception;
 /**
 /**
  * Base class for all math exceptions.
  * Base class for all math exceptions.
  */
  */
-class MathException extends \Exception
+class MathException extends \RuntimeException
 {
 {
 }
 }

+ 13 - 2
vendor/composer/autoload_classmap.php

@@ -40,9 +40,11 @@ return array(
     'App\\Model\\JobPosition' => $baseDir . '/app/Model/JobPosition.php',
     'App\\Model\\JobPosition' => $baseDir . '/app/Model/JobPosition.php',
     'App\\Model\\JobRecruiting' => $baseDir . '/app/Model/JobRecruiting.php',
     'App\\Model\\JobRecruiting' => $baseDir . '/app/Model/JobRecruiting.php',
     'App\\Model\\JobRemuse' => $baseDir . '/app/Model/JobRemuse.php',
     'App\\Model\\JobRemuse' => $baseDir . '/app/Model/JobRemuse.php',
+    'App\\Model\\JobResume' => $baseDir . '/app/Model/JobResume.php',
     'App\\Model\\Link' => $baseDir . '/app/Model/Link.php',
     'App\\Model\\Link' => $baseDir . '/app/Model/Link.php',
     'App\\Model\\Model' => $baseDir . '/app/Model/Model.php',
     'App\\Model\\Model' => $baseDir . '/app/Model/Model.php',
     'App\\Model\\Notice' => $baseDir . '/app/Model/Notice.php',
     'App\\Model\\Notice' => $baseDir . '/app/Model/Notice.php',
+    'App\\Model\\Project' => $baseDir . '/app/Model/Project.php',
     'App\\Model\\Riddle' => $baseDir . '/app/Model/Riddle.php',
     'App\\Model\\Riddle' => $baseDir . '/app/Model/Riddle.php',
     'App\\Model\\User' => $baseDir . '/app/Model/User.php',
     'App\\Model\\User' => $baseDir . '/app/Model/User.php',
     'App\\Model\\UserInfo' => $baseDir . '/app/Model/UserInfo.php',
     'App\\Model\\UserInfo' => $baseDir . '/app/Model/UserInfo.php',
@@ -53,6 +55,7 @@ return array(
     'App\\Model\\WebsiteGroup' => $baseDir . '/app/Model/WebsiteGroup.php',
     'App\\Model\\WebsiteGroup' => $baseDir . '/app/Model/WebsiteGroup.php',
     'App\\Model\\WebsiteRole' => $baseDir . '/app/Model/WebsiteRole.php',
     'App\\Model\\WebsiteRole' => $baseDir . '/app/Model/WebsiteRole.php',
     'App\\Model\\WebsiteRoleUser' => $baseDir . '/app/Model/WebsiteRoleUser.php',
     'App\\Model\\WebsiteRoleUser' => $baseDir . '/app/Model/WebsiteRoleUser.php',
+    'App\\Model\\WhiteRouter' => $baseDir . '/app/Model/WhiteRouter.php',
     'App\\Tools\\PublicData' => $baseDir . '/app/Tools/PublicData.php',
     'App\\Tools\\PublicData' => $baseDir . '/app/Tools/PublicData.php',
     'App\\Tools\\Result' => $baseDir . '/app/Tools/Result.php',
     'App\\Tools\\Result' => $baseDir . '/app/Tools/Result.php',
     'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
     'Attribute' => $vendorDir . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
@@ -363,6 +366,7 @@ return array(
     'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
+    'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
     'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
     'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
@@ -380,6 +384,7 @@ return array(
     'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
     'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => $vendorDir . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
     'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
     'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => $vendorDir . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
+    'Fidry\\CpuCoreCounter\\ParallelisationResult' => $vendorDir . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
     'Fig\\Http\\Message\\RequestMethodInterface' => $vendorDir . '/fig/http-message-util/src/RequestMethodInterface.php',
     'Fig\\Http\\Message\\RequestMethodInterface' => $vendorDir . '/fig/http-message-util/src/RequestMethodInterface.php',
     'Fig\\Http\\Message\\StatusCodeInterface' => $vendorDir . '/fig/http-message-util/src/StatusCodeInterface.php',
     'Fig\\Http\\Message\\StatusCodeInterface' => $vendorDir . '/fig/http-message-util/src/StatusCodeInterface.php',
     'Fukuball\\Jieba\\Finalseg' => $vendorDir . '/fukuball/jieba-php/src/class/Finalseg.php',
     'Fukuball\\Jieba\\Finalseg' => $vendorDir . '/fukuball/jieba-php/src/class/Finalseg.php',
@@ -733,6 +738,7 @@ return array(
     'Hyperf\\Coordinator\\CoordinatorManager' => $vendorDir . '/hyperf/coordinator/src/CoordinatorManager.php',
     'Hyperf\\Coordinator\\CoordinatorManager' => $vendorDir . '/hyperf/coordinator/src/CoordinatorManager.php',
     'Hyperf\\Coordinator\\Listener\\ResumeExitCoordinatorListener' => $vendorDir . '/hyperf/coordinator/src/Listener/ResumeExitCoordinatorListener.php',
     'Hyperf\\Coordinator\\Listener\\ResumeExitCoordinatorListener' => $vendorDir . '/hyperf/coordinator/src/Listener/ResumeExitCoordinatorListener.php',
     'Hyperf\\Coordinator\\Timer' => $vendorDir . '/hyperf/coordinator/src/Timer.php',
     'Hyperf\\Coordinator\\Timer' => $vendorDir . '/hyperf/coordinator/src/Timer.php',
+    'Hyperf\\Coroutine\\Barrier' => $vendorDir . '/hyperf/coroutine/src/Barrier.php',
     'Hyperf\\Coroutine\\Channel\\Caller' => $vendorDir . '/hyperf/coroutine/src/Channel/Caller.php',
     'Hyperf\\Coroutine\\Channel\\Caller' => $vendorDir . '/hyperf/coroutine/src/Channel/Caller.php',
     'Hyperf\\Coroutine\\Channel\\Manager' => $vendorDir . '/hyperf/coroutine/src/Channel/Manager.php',
     'Hyperf\\Coroutine\\Channel\\Manager' => $vendorDir . '/hyperf/coroutine/src/Channel/Manager.php',
     'Hyperf\\Coroutine\\Channel\\Pool' => $vendorDir . '/hyperf/coroutine/src/Channel/Pool.php',
     'Hyperf\\Coroutine\\Channel\\Pool' => $vendorDir . '/hyperf/coroutine/src/Channel/Pool.php',
@@ -3402,7 +3408,6 @@ return array(
     'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
     'PhpCsFixer\\FixerDefinition\\VersionSpecification' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
     'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
     'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
     'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
     'PhpCsFixer\\FixerFactory' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
-    'PhpCsFixer\\FixerFileProcessedEvent' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php',
     'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
     'PhpCsFixer\\FixerNameValidator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
     'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php',
     'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php',
     'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php',
     'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php',
@@ -3428,6 +3433,7 @@ return array(
     'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
     'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
     'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
     'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
     'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php',
     'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php',
+    'PhpCsFixer\\Fixer\\AttributeNotation\\GeneralAttributeRemoveFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php',
     'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php',
     'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php',
     'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
     'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
     'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php',
     'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php',
@@ -3602,6 +3608,7 @@ return array(
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
+    'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderMethodOrderFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php',
     'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php',
@@ -3701,6 +3708,7 @@ return array(
     'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
     'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
     'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
     'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
     'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
     'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
+    'PhpCsFixer\\Hasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Hasher.php',
     'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
     'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
     'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
     'PhpCsFixer\\Linter\\CachingLinter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
     'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
     'PhpCsFixer\\Linter\\Linter' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
@@ -3746,6 +3754,7 @@ return array(
     'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
+    'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php',
@@ -3773,6 +3782,8 @@ return array(
     'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php',
     'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php',
     'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => $vendorDir . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php',
+    'PhpCsFixer\\Runner\\Event\\AnalysisStarted' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php',
+    'PhpCsFixer\\Runner\\Event\\FileProcessed' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php',
     'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php',
     'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php',
     'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
     'PhpCsFixer\\Runner\\FileFilterIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
     'PhpCsFixer\\Runner\\LintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php',
     'PhpCsFixer\\Runner\\LintingFileIterator' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php',
@@ -3812,6 +3823,7 @@ return array(
     'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
+    'PhpCsFixer\\Tokenizer\\Analyzer\\FullyQualifiedNameAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
@@ -3821,7 +3833,6 @@ return array(
     'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php',
     'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
     'PhpCsFixer\\Tokenizer\\CT' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
-    'PhpCsFixer\\Tokenizer\\CodeHasher' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php',
     'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php',
     'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php',
     'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
     'PhpCsFixer\\Tokenizer\\Token' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
     'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',
     'PhpCsFixer\\Tokenizer\\Tokens' => $vendorDir . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',

+ 1 - 1
vendor/composer/autoload_files.php

@@ -7,9 +7,9 @@ $baseDir = dirname($vendorDir);
 
 
 return array(
 return array(
     '9c7a683baffd24f5595c1dc5f5273030' => $vendorDir . '/hyperf/engine/src/Functions.php',
     '9c7a683baffd24f5595c1dc5f5273030' => $vendorDir . '/hyperf/engine/src/Functions.php',
-    'f0334cce41da231af374e1df9dc548c9' => $vendorDir . '/hyperf/collection/src/Functions.php',
     '3ac0459b8c20ccf3a7319b7cba59c914' => $vendorDir . '/hyperf/tappable/src/Functions.php',
     '3ac0459b8c20ccf3a7319b7cba59c914' => $vendorDir . '/hyperf/tappable/src/Functions.php',
     'e45471c4161dad9820dfacbc5735c3f5' => $vendorDir . '/hyperf/stringable/src/Functions.php',
     'e45471c4161dad9820dfacbc5735c3f5' => $vendorDir . '/hyperf/stringable/src/Functions.php',
+    'f0334cce41da231af374e1df9dc548c9' => $vendorDir . '/hyperf/collection/src/Functions.php',
     '6c17036e92b20070dc14f563311a06a3' => $vendorDir . '/hyperf/coroutine/src/Functions.php',
     '6c17036e92b20070dc14f563311a06a3' => $vendorDir . '/hyperf/coroutine/src/Functions.php',
     'ffe5873ab2256a6c3a4c92b3488528cb' => $vendorDir . '/hyperf/support/src/Functions.php',
     'ffe5873ab2256a6c3a4c92b3488528cb' => $vendorDir . '/hyperf/support/src/Functions.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
     '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',

+ 2 - 2
vendor/composer/autoload_psr4.php

@@ -39,7 +39,7 @@ return array(
     'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'),
     'Ramsey\\Collection\\' => array($vendorDir . '/ramsey/collection/src'),
     'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
     'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
     'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
     'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
-    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-middleware/src', $vendorDir . '/psr/http-server-handler/src'),
+    'Psr\\Http\\Server\\' => array($vendorDir . '/psr/http-server-handler/src', $vendorDir . '/psr/http-server-middleware/src'),
     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-factory/src', $vendorDir . '/psr/http-message/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Psr\\Http\\Client\\' => array($vendorDir . '/psr/http-client/src'),
     'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
     'Psr\\EventDispatcher\\' => array($vendorDir . '/psr/event-dispatcher/src'),
@@ -56,7 +56,7 @@ return array(
     'Laminas\\Stdlib\\' => array($vendorDir . '/laminas/laminas-stdlib/src'),
     'Laminas\\Stdlib\\' => array($vendorDir . '/laminas/laminas-stdlib/src'),
     'Laminas\\Mime\\' => array($vendorDir . '/laminas/laminas-mime/src'),
     'Laminas\\Mime\\' => array($vendorDir . '/laminas/laminas-mime/src'),
     'JetBrains\\PhpStorm\\' => array($vendorDir . '/jetbrains/phpstorm-attributes/src'),
     'JetBrains\\PhpStorm\\' => array($vendorDir . '/jetbrains/phpstorm-attributes/src'),
-    'Illuminate\\Support\\' => array($vendorDir . '/illuminate/support', $vendorDir . '/illuminate/collections', $vendorDir . '/illuminate/conditionable', $vendorDir . '/illuminate/macroable'),
+    'Illuminate\\Support\\' => array($vendorDir . '/illuminate/collections', $vendorDir . '/illuminate/conditionable', $vendorDir . '/illuminate/macroable', $vendorDir . '/illuminate/support'),
     'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
     'Illuminate\\Contracts\\' => array($vendorDir . '/illuminate/contracts'),
     'Illuminate\\Cache\\' => array($vendorDir . '/illuminate/cache'),
     'Illuminate\\Cache\\' => array($vendorDir . '/illuminate/cache'),
     'Hyperf\\Watcher\\' => array($vendorDir . '/hyperf/watcher/src'),
     'Hyperf\\Watcher\\' => array($vendorDir . '/hyperf/watcher/src'),

+ 20 - 9
vendor/composer/autoload_static.php

@@ -8,9 +8,9 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
 {
 {
     public static $files = array (
     public static $files = array (
         '9c7a683baffd24f5595c1dc5f5273030' => __DIR__ . '/..' . '/hyperf/engine/src/Functions.php',
         '9c7a683baffd24f5595c1dc5f5273030' => __DIR__ . '/..' . '/hyperf/engine/src/Functions.php',
-        'f0334cce41da231af374e1df9dc548c9' => __DIR__ . '/..' . '/hyperf/collection/src/Functions.php',
         '3ac0459b8c20ccf3a7319b7cba59c914' => __DIR__ . '/..' . '/hyperf/tappable/src/Functions.php',
         '3ac0459b8c20ccf3a7319b7cba59c914' => __DIR__ . '/..' . '/hyperf/tappable/src/Functions.php',
         'e45471c4161dad9820dfacbc5735c3f5' => __DIR__ . '/..' . '/hyperf/stringable/src/Functions.php',
         'e45471c4161dad9820dfacbc5735c3f5' => __DIR__ . '/..' . '/hyperf/stringable/src/Functions.php',
+        'f0334cce41da231af374e1df9dc548c9' => __DIR__ . '/..' . '/hyperf/collection/src/Functions.php',
         '6c17036e92b20070dc14f563311a06a3' => __DIR__ . '/..' . '/hyperf/coroutine/src/Functions.php',
         '6c17036e92b20070dc14f563311a06a3' => __DIR__ . '/..' . '/hyperf/coroutine/src/Functions.php',
         'ffe5873ab2256a6c3a4c92b3488528cb' => __DIR__ . '/..' . '/hyperf/support/src/Functions.php',
         'ffe5873ab2256a6c3a4c92b3488528cb' => __DIR__ . '/..' . '/hyperf/support/src/Functions.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
         '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
@@ -359,8 +359,8 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         ),
         ),
         'Psr\\Http\\Server\\' => 
         'Psr\\Http\\Server\\' => 
         array (
         array (
-            0 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
-            1 => __DIR__ . '/..' . '/psr/http-server-handler/src',
+            0 => __DIR__ . '/..' . '/psr/http-server-handler/src',
+            1 => __DIR__ . '/..' . '/psr/http-server-middleware/src',
         ),
         ),
         'Psr\\Http\\Message\\' => 
         'Psr\\Http\\Message\\' => 
         array (
         array (
@@ -429,10 +429,10 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         ),
         ),
         'Illuminate\\Support\\' => 
         'Illuminate\\Support\\' => 
         array (
         array (
-            0 => __DIR__ . '/..' . '/illuminate/support',
-            1 => __DIR__ . '/..' . '/illuminate/collections',
-            2 => __DIR__ . '/..' . '/illuminate/conditionable',
-            3 => __DIR__ . '/..' . '/illuminate/macroable',
+            0 => __DIR__ . '/..' . '/illuminate/collections',
+            1 => __DIR__ . '/..' . '/illuminate/conditionable',
+            2 => __DIR__ . '/..' . '/illuminate/macroable',
+            3 => __DIR__ . '/..' . '/illuminate/support',
         ),
         ),
         'Illuminate\\Contracts\\' => 
         'Illuminate\\Contracts\\' => 
         array (
         array (
@@ -791,9 +791,11 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'App\\Model\\JobPosition' => __DIR__ . '/../..' . '/app/Model/JobPosition.php',
         'App\\Model\\JobPosition' => __DIR__ . '/../..' . '/app/Model/JobPosition.php',
         'App\\Model\\JobRecruiting' => __DIR__ . '/../..' . '/app/Model/JobRecruiting.php',
         'App\\Model\\JobRecruiting' => __DIR__ . '/../..' . '/app/Model/JobRecruiting.php',
         'App\\Model\\JobRemuse' => __DIR__ . '/../..' . '/app/Model/JobRemuse.php',
         'App\\Model\\JobRemuse' => __DIR__ . '/../..' . '/app/Model/JobRemuse.php',
+        'App\\Model\\JobResume' => __DIR__ . '/../..' . '/app/Model/JobResume.php',
         'App\\Model\\Link' => __DIR__ . '/../..' . '/app/Model/Link.php',
         'App\\Model\\Link' => __DIR__ . '/../..' . '/app/Model/Link.php',
         'App\\Model\\Model' => __DIR__ . '/../..' . '/app/Model/Model.php',
         'App\\Model\\Model' => __DIR__ . '/../..' . '/app/Model/Model.php',
         'App\\Model\\Notice' => __DIR__ . '/../..' . '/app/Model/Notice.php',
         'App\\Model\\Notice' => __DIR__ . '/../..' . '/app/Model/Notice.php',
+        'App\\Model\\Project' => __DIR__ . '/../..' . '/app/Model/Project.php',
         'App\\Model\\Riddle' => __DIR__ . '/../..' . '/app/Model/Riddle.php',
         'App\\Model\\Riddle' => __DIR__ . '/../..' . '/app/Model/Riddle.php',
         'App\\Model\\User' => __DIR__ . '/../..' . '/app/Model/User.php',
         'App\\Model\\User' => __DIR__ . '/../..' . '/app/Model/User.php',
         'App\\Model\\UserInfo' => __DIR__ . '/../..' . '/app/Model/UserInfo.php',
         'App\\Model\\UserInfo' => __DIR__ . '/../..' . '/app/Model/UserInfo.php',
@@ -804,6 +806,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'App\\Model\\WebsiteGroup' => __DIR__ . '/../..' . '/app/Model/WebsiteGroup.php',
         'App\\Model\\WebsiteGroup' => __DIR__ . '/../..' . '/app/Model/WebsiteGroup.php',
         'App\\Model\\WebsiteRole' => __DIR__ . '/../..' . '/app/Model/WebsiteRole.php',
         'App\\Model\\WebsiteRole' => __DIR__ . '/../..' . '/app/Model/WebsiteRole.php',
         'App\\Model\\WebsiteRoleUser' => __DIR__ . '/../..' . '/app/Model/WebsiteRoleUser.php',
         'App\\Model\\WebsiteRoleUser' => __DIR__ . '/../..' . '/app/Model/WebsiteRoleUser.php',
+        'App\\Model\\WhiteRouter' => __DIR__ . '/../..' . '/app/Model/WhiteRouter.php',
         'App\\Tools\\PublicData' => __DIR__ . '/../..' . '/app/Tools/PublicData.php',
         'App\\Tools\\PublicData' => __DIR__ . '/../..' . '/app/Tools/PublicData.php',
         'App\\Tools\\Result' => __DIR__ . '/../..' . '/app/Tools/Result.php',
         'App\\Tools\\Result' => __DIR__ . '/../..' . '/app/Tools/Result.php',
         'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
         'Attribute' => __DIR__ . '/..' . '/symfony/polyfill-php80/Resources/stubs/Attribute.php',
@@ -1114,6 +1117,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\CpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuCoreFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\CpuInfoFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\DummyCpuCoreFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/DummyCpuCoreFinder.php',
+        'Fidry\\CpuCoreCounter\\Finder\\EnvVariableFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/EnvVariableFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
         'Fidry\\CpuCoreCounter\\Finder\\FinderRegistry' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/FinderRegistry.php',
         'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\HwLogicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwLogicalFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\HwPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/HwPhysicalFinder.php',
@@ -1131,6 +1135,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\WmicPhysicalFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/WmicPhysicalFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
         'Fidry\\CpuCoreCounter\\Finder\\_NProcessorFinder' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/Finder/_NProcessorFinder.php',
         'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
         'Fidry\\CpuCoreCounter\\NumberOfCpuCoreNotFound' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/NumberOfCpuCoreNotFound.php',
+        'Fidry\\CpuCoreCounter\\ParallelisationResult' => __DIR__ . '/..' . '/fidry/cpu-core-counter/src/ParallelisationResult.php',
         'Fig\\Http\\Message\\RequestMethodInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/RequestMethodInterface.php',
         'Fig\\Http\\Message\\RequestMethodInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/RequestMethodInterface.php',
         'Fig\\Http\\Message\\StatusCodeInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/StatusCodeInterface.php',
         'Fig\\Http\\Message\\StatusCodeInterface' => __DIR__ . '/..' . '/fig/http-message-util/src/StatusCodeInterface.php',
         'Fukuball\\Jieba\\Finalseg' => __DIR__ . '/..' . '/fukuball/jieba-php/src/class/Finalseg.php',
         'Fukuball\\Jieba\\Finalseg' => __DIR__ . '/..' . '/fukuball/jieba-php/src/class/Finalseg.php',
@@ -1484,6 +1489,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'Hyperf\\Coordinator\\CoordinatorManager' => __DIR__ . '/..' . '/hyperf/coordinator/src/CoordinatorManager.php',
         'Hyperf\\Coordinator\\CoordinatorManager' => __DIR__ . '/..' . '/hyperf/coordinator/src/CoordinatorManager.php',
         'Hyperf\\Coordinator\\Listener\\ResumeExitCoordinatorListener' => __DIR__ . '/..' . '/hyperf/coordinator/src/Listener/ResumeExitCoordinatorListener.php',
         'Hyperf\\Coordinator\\Listener\\ResumeExitCoordinatorListener' => __DIR__ . '/..' . '/hyperf/coordinator/src/Listener/ResumeExitCoordinatorListener.php',
         'Hyperf\\Coordinator\\Timer' => __DIR__ . '/..' . '/hyperf/coordinator/src/Timer.php',
         'Hyperf\\Coordinator\\Timer' => __DIR__ . '/..' . '/hyperf/coordinator/src/Timer.php',
+        'Hyperf\\Coroutine\\Barrier' => __DIR__ . '/..' . '/hyperf/coroutine/src/Barrier.php',
         'Hyperf\\Coroutine\\Channel\\Caller' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Caller.php',
         'Hyperf\\Coroutine\\Channel\\Caller' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Caller.php',
         'Hyperf\\Coroutine\\Channel\\Manager' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Manager.php',
         'Hyperf\\Coroutine\\Channel\\Manager' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Manager.php',
         'Hyperf\\Coroutine\\Channel\\Pool' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Pool.php',
         'Hyperf\\Coroutine\\Channel\\Pool' => __DIR__ . '/..' . '/hyperf/coroutine/src/Channel/Pool.php',
@@ -4153,7 +4159,6 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
         'PhpCsFixer\\FixerDefinition\\VersionSpecification' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecification.php',
         'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
         'PhpCsFixer\\FixerDefinition\\VersionSpecificationInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerDefinition/VersionSpecificationInterface.php',
         'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
         'PhpCsFixer\\FixerFactory' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFactory.php',
-        'PhpCsFixer\\FixerFileProcessedEvent' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerFileProcessedEvent.php',
         'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
         'PhpCsFixer\\FixerNameValidator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/FixerNameValidator.php',
         'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php',
         'PhpCsFixer\\Fixer\\AbstractIncrementOperatorFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractIncrementOperatorFixer.php',
         'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php',
         'PhpCsFixer\\Fixer\\AbstractPhpUnitFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php',
@@ -4179,6 +4184,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
         'PhpCsFixer\\Fixer\\ArrayNotation\\WhitespaceAfterCommaInArrayFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php',
         'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
         'PhpCsFixer\\Fixer\\ArrayNotation\\YieldFromArrayToYieldsFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/YieldFromArrayToYieldsFixer.php',
         'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php',
         'PhpCsFixer\\Fixer\\AttributeNotation\\AttributeEmptyParenthesesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php',
+        'PhpCsFixer\\Fixer\\AttributeNotation\\GeneralAttributeRemoveFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/GeneralAttributeRemoveFixer.php',
         'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php',
         'PhpCsFixer\\Fixer\\AttributeNotation\\OrderedAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php',
         'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
         'PhpCsFixer\\Fixer\\Basic\\BracesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php',
         'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php',
         'PhpCsFixer\\Fixer\\Basic\\BracesPositionFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php',
@@ -4353,6 +4359,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAssertNewNamesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAssertNewNamesFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitAttributesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitAttributesFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitConstructFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitConstructFixer.php',
+        'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderMethodOrderFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderMethodOrderFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderNameFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderNameFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderReturnTypeFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderReturnTypeFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php',
         'PhpCsFixer\\Fixer\\PhpUnit\\PhpUnitDataProviderStaticFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/PhpUnit/PhpUnitDataProviderStaticFixer.php',
@@ -4452,6 +4459,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
         'PhpCsFixer\\Fixer\\Whitespace\\TypeDeclarationSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypeDeclarationSpacesFixer.php',
         'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
         'PhpCsFixer\\Fixer\\Whitespace\\TypesSpacesFixer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/Whitespace/TypesSpacesFixer.php',
         'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
         'PhpCsFixer\\Fixer\\WhitespacesAwareFixerInterface' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Fixer/WhitespacesAwareFixerInterface.php',
+        'PhpCsFixer\\Hasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Hasher.php',
         'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
         'PhpCsFixer\\Indicator\\PhpUnitTestCaseIndicator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Indicator/PhpUnitTestCaseIndicator.php',
         'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
         'PhpCsFixer\\Linter\\CachingLinter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/CachingLinter.php',
         'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
         'PhpCsFixer\\Linter\\Linter' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Linter/Linter.php',
@@ -4497,6 +4505,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationRiskySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP80MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP80MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP81MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP81MigrationSet.php',
+        'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationRiskySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP82MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP82MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP83MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP83MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PHP84MigrationSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PHP84MigrationSet.php',
@@ -4524,6 +4533,8 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\PhpCsFixerSet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/PhpCsFixerSet.php',
         'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\SymfonyRiskySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonyRiskySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php',
         'PhpCsFixer\\RuleSet\\Sets\\SymfonySet' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/RuleSet/Sets/SymfonySet.php',
+        'PhpCsFixer\\Runner\\Event\\AnalysisStarted' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Event/AnalysisStarted.php',
+        'PhpCsFixer\\Runner\\Event\\FileProcessed' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/Event/FileProcessed.php',
         'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php',
         'PhpCsFixer\\Runner\\FileCachingLintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileCachingLintingFileIterator.php',
         'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
         'PhpCsFixer\\Runner\\FileFilterIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/FileFilterIterator.php',
         'PhpCsFixer\\Runner\\LintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php',
         'PhpCsFixer\\Runner\\LintingFileIterator' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Runner/LintingFileIterator.php',
@@ -4563,6 +4574,7 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\CommentsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/CommentsAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\ControlCaseStructuresAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/ControlCaseStructuresAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\DataProviderAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/DataProviderAnalyzer.php',
+        'PhpCsFixer\\Tokenizer\\Analyzer\\FullyQualifiedNameAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FullyQualifiedNameAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\FunctionsAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/FunctionsAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\GotoLabelAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/GotoLabelAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\NamespaceUsesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/NamespaceUsesAnalyzer.php',
@@ -4572,7 +4584,6 @@ class ComposerStaticInit93d050353fc587b1b1fb188f0a8c068c
         'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\SwitchAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/SwitchAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\Analyzer\\WhitespacesAnalyzer' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Analyzer/WhitespacesAnalyzer.php',
         'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
         'PhpCsFixer\\Tokenizer\\CT' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CT.php',
-        'PhpCsFixer\\Tokenizer\\CodeHasher' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/CodeHasher.php',
         'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php',
         'PhpCsFixer\\Tokenizer\\Processor\\ImportProcessor' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Processor/ImportProcessor.php',
         'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
         'PhpCsFixer\\Tokenizer\\Token' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Token.php',
         'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',
         'PhpCsFixer\\Tokenizer\\Tokens' => __DIR__ . '/..' . '/friendsofphp/php-cs-fixer/src/Tokenizer/Tokens.php',

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 206 - 166
vendor/composer/installed.json


+ 104 - 104
vendor/composer/installed.php

@@ -3,7 +3,7 @@
         'name' => 'hyperf/hyperf-skeleton',
         'name' => 'hyperf/hyperf-skeleton',
         'pretty_version' => 'dev-master',
         'pretty_version' => 'dev-master',
         'version' => 'dev-master',
         'version' => 'dev-master',
-        'reference' => '9d12071cf0586267e5cb1c8008d745bd7632820e',
+        'reference' => '1be4553ed9a0a5c329bc2983be17f74f345fa1da',
         'type' => 'project',
         'type' => 'project',
         'install_path' => __DIR__ . '/../../',
         'install_path' => __DIR__ . '/../../',
         'aliases' => array(),
         'aliases' => array(),
@@ -11,9 +11,9 @@
     ),
     ),
     'versions' => array(
     'versions' => array(
         'brick/math' => array(
         'brick/math' => array(
-            'pretty_version' => '0.12.3',
-            'version' => '0.12.3.0',
-            'reference' => '866551da34e9a618e64a819ee1e01c20d8a588ba',
+            'pretty_version' => '0.13.1',
+            'version' => '0.13.1.0',
+            'reference' => 'fc7ed316430118cc7836bf45faff18d5dfc8de04',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../brick/math',
             'install_path' => __DIR__ . '/../brick/math',
             'aliases' => array(),
             'aliases' => array(),
@@ -122,9 +122,9 @@
             'dev_requirement' => true,
             'dev_requirement' => true,
         ),
         ),
         'fidry/cpu-core-counter' => array(
         'fidry/cpu-core-counter' => array(
-            'pretty_version' => '1.1.0',
-            'version' => '1.1.0.0',
-            'reference' => 'f92996c4d5c1a696a6a970e20f7c4216200fcc42',
+            'pretty_version' => '1.2.0',
+            'version' => '1.2.0.0',
+            'reference' => '8520451a140d3f46ac33042715115e290cf5785f',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../fidry/cpu-core-counter',
             'install_path' => __DIR__ . '/../fidry/cpu-core-counter',
             'aliases' => array(),
             'aliases' => array(),
@@ -140,9 +140,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'friendsofphp/php-cs-fixer' => array(
         'friendsofphp/php-cs-fixer' => array(
-            'pretty_version' => 'v3.64.0',
-            'version' => '3.64.0.0',
-            'reference' => '58dd9c931c785a79739310aef5178928305ffa67',
+            'pretty_version' => 'v3.75.0',
+            'version' => '3.75.0.0',
+            'reference' => '399a128ff2fdaf4281e4e79b755693286cdf325c',
             'type' => 'application',
             'type' => 'application',
             'install_path' => __DIR__ . '/../friendsofphp/php-cs-fixer',
             'install_path' => __DIR__ . '/../friendsofphp/php-cs-fixer',
             'aliases' => array(),
             'aliases' => array(),
@@ -203,9 +203,9 @@
             'dev_requirement' => true,
             'dev_requirement' => true,
         ),
         ),
         'hyperf/cache' => array(
         'hyperf/cache' => array(
-            'pretty_version' => 'v3.1.56',
-            'version' => '3.1.56.0',
-            'reference' => '4848c733560941490d9bf3aa8605deb4cce8fbf1',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '40c786b5d1c85f41dd8692d7c3d9e2d187bce728',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/cache',
             'install_path' => __DIR__ . '/../hyperf/cache',
             'aliases' => array(),
             'aliases' => array(),
@@ -257,45 +257,45 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/config' => array(
         'hyperf/config' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '1df5e310aab752d6195f89f5cc98daf3cdc4bb6e',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'fb0b51ba1cb9fb1e688bbe18ac36d0a7e4d7901b',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/config',
             'install_path' => __DIR__ . '/../hyperf/config',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/config-center' => array(
         'hyperf/config-center' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'c96837394c842a0b1ece13b29ff972241021d4f3',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'bdc03fbcaada9d338bf40ccd96074574f30e5f52',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/config-center',
             'install_path' => __DIR__ . '/../hyperf/config-center',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/config-nacos' => array(
         'hyperf/config-nacos' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'f980296a1e8cdd1916433a99dcb98e6a1c49eb98',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '36e44c6e2eccc391d48dfffc65a98fcd62eeb6e9',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/config-nacos',
             'install_path' => __DIR__ . '/../hyperf/config-nacos',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/constants' => array(
         'hyperf/constants' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'e1e1184779cd163f9603ce234e1ecccb6fe382ae',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '0b7f77ae9f54175163084096f60577627ffa55c4',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/constants',
             'install_path' => __DIR__ . '/../hyperf/constants',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/consul' => array(
         'hyperf/consul' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '12888dddd5bd4acebb6e4ca9729b3401dafa64ef',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '1e9cf202dc5bcc763c941ad48a1046fcd8d235c9',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/consul',
             'install_path' => __DIR__ . '/../hyperf/consul',
             'aliases' => array(),
             'aliases' => array(),
@@ -338,36 +338,36 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/database' => array(
         'hyperf/database' => array(
-            'pretty_version' => 'v3.1.56',
-            'version' => '3.1.56.0',
-            'reference' => 'a4e5f11df6a74337836f1690c05506adf6e82f0f',
+            'pretty_version' => 'v3.1.58',
+            'version' => '3.1.58.0',
+            'reference' => 'fe2bdefd2800d446a7e75aa9016d1fd52a583f7c',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/database',
             'install_path' => __DIR__ . '/../hyperf/database',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/db-connection' => array(
         'hyperf/db-connection' => array(
-            'pretty_version' => 'v3.1.44',
-            'version' => '3.1.44.0',
-            'reference' => '95dbb713fda5556106b803d0201e1631645985b5',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '2b7ac3e322698e3e97f46556008cd197ef318d4d',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/db-connection',
             'install_path' => __DIR__ . '/../hyperf/db-connection',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/devtool' => array(
         'hyperf/devtool' => array(
-            'pretty_version' => 'v3.1.51',
-            'version' => '3.1.51.0',
-            'reference' => 'b032916fa51293f894046754f596f7d6d71352df',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '399644050ef032d883690254db30a243f4db8f6a',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/devtool',
             'install_path' => __DIR__ . '/../hyperf/devtool',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => true,
             'dev_requirement' => true,
         ),
         ),
         'hyperf/di' => array(
         'hyperf/di' => array(
-            'pretty_version' => 'v3.1.53',
-            'version' => '3.1.53.0',
-            'reference' => '13a89409da739102c7fc308ef53bdd2694cb220b',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'f9d40858346fe88336211e8e3ac0cc210adb94c7',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/di',
             'install_path' => __DIR__ . '/../hyperf/di',
             'aliases' => array(),
             'aliases' => array(),
@@ -410,9 +410,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/exception-handler' => array(
         'hyperf/exception-handler' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'df2135fb0ffe0bb61032911038aea6488077cdef',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'c2240b8a455b7305b470576dd846078d4aca44f0',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/exception-handler',
             'install_path' => __DIR__ . '/../hyperf/exception-handler',
             'aliases' => array(),
             'aliases' => array(),
@@ -428,27 +428,27 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/guzzle' => array(
         'hyperf/guzzle' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'fe838557530bf7b2d39dc604563c3a3ff8d5618f',
+            'pretty_version' => 'v3.1.58',
+            'version' => '3.1.58.0',
+            'reference' => 'd6de1e1cc6175137b8f91b79f308c73ce426717e',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/guzzle',
             'install_path' => __DIR__ . '/../hyperf/guzzle',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/http-message' => array(
         'hyperf/http-message' => array(
-            'pretty_version' => 'v3.1.48',
-            'version' => '3.1.48.0',
-            'reference' => '534ce81af0feaa0c4a9e132af1c6a9c5527a8d85',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '26201c732b9ceb6fa14af3bfa381463d3e1a4e6a',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/http-message',
             'install_path' => __DIR__ . '/../hyperf/http-message',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/http-server' => array(
         'hyperf/http-server' => array(
-            'pretty_version' => 'v3.1.55',
-            'version' => '3.1.55.0',
-            'reference' => '96a1d80cd9482942899d7068af0e6ecb78d382ce',
+            'pretty_version' => 'v3.1.59',
+            'version' => '3.1.59.0',
+            'reference' => 'b5f8dbd03578adb101fbf98ab7407510d553130f',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/http-server',
             'install_path' => __DIR__ . '/../hyperf/http-server',
             'aliases' => array(),
             'aliases' => array(),
@@ -457,16 +457,16 @@
         'hyperf/hyperf-skeleton' => array(
         'hyperf/hyperf-skeleton' => array(
             'pretty_version' => 'dev-master',
             'pretty_version' => 'dev-master',
             'version' => 'dev-master',
             'version' => 'dev-master',
-            'reference' => '9d12071cf0586267e5cb1c8008d745bd7632820e',
+            'reference' => '1be4553ed9a0a5c329bc2983be17f74f345fa1da',
             'type' => 'project',
             'type' => 'project',
             'install_path' => __DIR__ . '/../../',
             'install_path' => __DIR__ . '/../../',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/json-rpc' => array(
         'hyperf/json-rpc' => array(
-            'pretty_version' => 'v3.1.47',
-            'version' => '3.1.47.0',
-            'reference' => 'daa987e9e58fcbbf676ae266de2d428301a74d1b',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'bc0526468cafbd656578229cf70e19f7b244508d',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/json-rpc',
             'install_path' => __DIR__ . '/../hyperf/json-rpc',
             'aliases' => array(),
             'aliases' => array(),
@@ -500,9 +500,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/memory' => array(
         'hyperf/memory' => array(
-            'pretty_version' => 'v3.1.53',
-            'version' => '3.1.53.0',
-            'reference' => '74a3093ee766e18f912269f6846a63ae21a4360b',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '448ceeaab7b32a6c8c0958040ea3a1872c28bb12',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/memory',
             'install_path' => __DIR__ . '/../hyperf/memory',
             'aliases' => array(),
             'aliases' => array(),
@@ -563,27 +563,27 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/redis' => array(
         'hyperf/redis' => array(
-            'pretty_version' => 'v3.1.53',
-            'version' => '3.1.53.0',
-            'reference' => 'd481e97926d8e12b41bfeb1ebf5d88e66482da64',
+            'pretty_version' => 'v3.1.59',
+            'version' => '3.1.59.0',
+            'reference' => 'e7bd1b5ce85c06a766ad599dfa64238596c5fb11',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/redis',
             'install_path' => __DIR__ . '/../hyperf/redis',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/rpc' => array(
         'hyperf/rpc' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '90e97635c0e3c5080e422abdfc1399fd57ee204f',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '1c81cd46be8d1926096cf333849add07e755ced3',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/rpc',
             'install_path' => __DIR__ . '/../hyperf/rpc',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/rpc-server' => array(
         'hyperf/rpc-server' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '5647c5fd54342fe96aa2198e7fdeb8ee50cfc30c',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'b3730be9e992c6d2a3acf105c3aca1aec49efce9',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/rpc-server',
             'install_path' => __DIR__ . '/../hyperf/rpc-server',
             'aliases' => array(),
             'aliases' => array(),
@@ -599,9 +599,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/server' => array(
         'hyperf/server' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => 'e10c5ce6d9b72d3ca9ad16d36977e2e64d975460',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '1bb241ec5b52b42475aa26a15d5446f1ef429530',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/server',
             'install_path' => __DIR__ . '/../hyperf/server',
             'aliases' => array(),
             'aliases' => array(),
@@ -617,9 +617,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/service-governance-consul' => array(
         'hyperf/service-governance-consul' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '0c153a006eff3778a208ca5233a33ecb2685407e',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'f40dcd05dd0cdae6915faf0fd088295b18d71878',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/service-governance-consul',
             'install_path' => __DIR__ . '/../hyperf/service-governance-consul',
             'aliases' => array(),
             'aliases' => array(),
@@ -635,9 +635,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/snowflake' => array(
         'hyperf/snowflake' => array(
-            'pretty_version' => 'v3.1.42',
-            'version' => '3.1.42.0',
-            'reference' => '0271dfd9f0030e4f4cdd90f91428d1dbb35ecd56',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '698231cab7f174882c2b0fd6f377413c561ca49e',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/snowflake',
             'install_path' => __DIR__ . '/../hyperf/snowflake',
             'aliases' => array(),
             'aliases' => array(),
@@ -653,18 +653,18 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/stringable' => array(
         'hyperf/stringable' => array(
-            'pretty_version' => 'v3.1.55',
-            'version' => '3.1.55.0',
-            'reference' => '1ce51e8c73609898da6b0b9ab80a14508fa671d7',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => '5548d35f5dbdad0b3196cc8503c618a990b38b3f',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/stringable',
             'install_path' => __DIR__ . '/../hyperf/stringable',
             'aliases' => array(),
             'aliases' => array(),
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/support' => array(
         'hyperf/support' => array(
-            'pretty_version' => 'v3.1.51',
-            'version' => '3.1.51.0',
-            'reference' => '8d630b496945f3ac791a570fe6c1bf481c3f28ed',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'ea0d41f825595bf26daf6f41d0bb1bf2f48dfe2a',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/support',
             'install_path' => __DIR__ . '/../hyperf/support',
             'aliases' => array(),
             'aliases' => array(),
@@ -680,9 +680,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'hyperf/testing' => array(
         'hyperf/testing' => array(
-            'pretty_version' => 'v3.1.55',
-            'version' => '3.1.55.0',
-            'reference' => 'f7daebdcc7aa4520acf61689f7e2e4049e9247db',
+            'pretty_version' => 'v3.1.57',
+            'version' => '3.1.57.0',
+            'reference' => 'bda78d4d4d6962342caf7c337f85904db26c9614',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../hyperf/testing',
             'install_path' => __DIR__ . '/../hyperf/testing',
             'aliases' => array(),
             'aliases' => array(),
@@ -821,9 +821,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'myclabs/deep-copy' => array(
         'myclabs/deep-copy' => array(
-            'pretty_version' => '1.13.0',
-            'version' => '1.13.0.0',
-            'reference' => '024473a478be9df5fdaca2c793f2232fe788e414',
+            'pretty_version' => '1.13.3',
+            'version' => '1.13.3.0',
+            'reference' => 'faed855a7b5f4d4637717c2b3863e277116beb36',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../myclabs/deep-copy',
             'install_path' => __DIR__ . '/../myclabs/deep-copy',
             'aliases' => array(),
             'aliases' => array(),
@@ -1080,8 +1080,8 @@
         'psr/log-implementation' => array(
         'psr/log-implementation' => array(
             'dev_requirement' => false,
             'dev_requirement' => false,
             'provided' => array(
             'provided' => array(
-                0 => '1.0|2.0|3.0',
-                1 => '3.0.0',
+                0 => '3.0.0',
+                1 => '1.0|2.0|3.0',
             ),
             ),
         ),
         ),
         'psr/simple-cache' => array(
         'psr/simple-cache' => array(
@@ -1118,9 +1118,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'ramsey/uuid' => array(
         'ramsey/uuid' => array(
-            'pretty_version' => '4.7.6',
-            'version' => '4.7.6.0',
-            'reference' => '91039bc1faa45ba123c4328958e620d382ec7088',
+            'pretty_version' => '4.8.1',
+            'version' => '4.8.1.0',
+            'reference' => 'fdf4dd4e2ff1813111bd0ad58d7a1ddbb5b56c28',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../ramsey/uuid',
             'install_path' => __DIR__ . '/../ramsey/uuid',
             'aliases' => array(),
             'aliases' => array(),
@@ -1192,7 +1192,7 @@
         'rhumsaa/uuid' => array(
         'rhumsaa/uuid' => array(
             'dev_requirement' => false,
             'dev_requirement' => false,
             'replaced' => array(
             'replaced' => array(
-                0 => '4.7.6',
+                0 => '4.8.1',
             ),
             ),
         ),
         ),
         'sebastian/cli-parser' => array(
         'sebastian/cli-parser' => array(
@@ -1349,9 +1349,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'symfony/console' => array(
         'symfony/console' => array(
-            'pretty_version' => 'v6.4.21',
-            'version' => '6.4.21.0',
-            'reference' => 'a3011c7b7adb58d89f6c0d822abb641d7a5f9719',
+            'pretty_version' => 'v6.4.22',
+            'version' => '6.4.22.0',
+            'reference' => '7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/console',
             'install_path' => __DIR__ . '/../symfony/console',
             'aliases' => array(),
             'aliases' => array(),
@@ -1409,9 +1409,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'symfony/http-foundation' => array(
         'symfony/http-foundation' => array(
-            'pretty_version' => 'v6.4.21',
-            'version' => '6.4.21.0',
-            'reference' => '3f0c7ea41db479383b81d436b836d37168fd5b99',
+            'pretty_version' => 'v6.4.22',
+            'version' => '6.4.22.0',
+            'reference' => '6b7c97fe1ddac8df3cc9ba6410c8abc683e148ae',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/http-foundation',
             'install_path' => __DIR__ . '/../symfony/http-foundation',
             'aliases' => array(),
             'aliases' => array(),
@@ -1526,9 +1526,9 @@
             'dev_requirement' => false,
             'dev_requirement' => false,
         ),
         ),
         'symfony/translation' => array(
         'symfony/translation' => array(
-            'pretty_version' => 'v6.4.21',
-            'version' => '6.4.21.0',
-            'reference' => 'bb92ea5588396b319ba43283a5a3087a034cb29c',
+            'pretty_version' => 'v6.4.23',
+            'version' => '6.4.23.0',
+            'reference' => 'de8afa521e04a5220e9e58a1dc99971ab7cac643',
             'type' => 'library',
             'type' => 'library',
             'install_path' => __DIR__ . '/../symfony/translation',
             'install_path' => __DIR__ . '/../symfony/translation',
             'aliases' => array(),
             'aliases' => array(),

+ 34 - 10
vendor/fidry/cpu-core-counter/README.md

@@ -16,6 +16,10 @@ use Fidry\CpuCoreCounter\Finder\DummyCpuCoreFinder;
 
 
 $counter = new CpuCoreCounter();
 $counter = new CpuCoreCounter();
 
 
+// For knowing the number of cores you can use for launching parallel processes:
+$counter->getAvailableForParallelisation()->availableCpus;
+
+// Get the number of CPU cores (by default it will use the logical cores count):
 try {
 try {
     $counter->getCount();   // e.g. 8
     $counter->getCount();   // e.g. 8
 } catch (NumberOfCpuCoreNotFound) {
 } catch (NumberOfCpuCoreNotFound) {
@@ -29,6 +33,10 @@ $counter = new CpuCoreCounter([
     new DummyCpuCoreFinder(1),  // Fallback value
     new DummyCpuCoreFinder(1),  // Fallback value
 ]);
 ]);
 
 
+// A type-safe alternative form:
+$counter->getCountWithFallback(1);
+
+// Note that the result is memoized.
 $counter->getCount();   // e.g. 8
 $counter->getCount();   // e.g. 8
 
 
 ```
 ```
@@ -68,30 +76,46 @@ $cores = (new CpuCoreCounter($finders))->getCount();
 `FinderRegistry` provides two helpful entries:
 `FinderRegistry` provides two helpful entries:
 
 
 - `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
 - `::getDefaultLogicalFinders()`: gives an ordered list of finders that will
-  look for the _logical_ CPU cores count
+  look for the _logical_ CPU cores count.
 - `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
 - `::getDefaultPhysicalFinders()`: gives an ordered list of finders that will
-  look for the _physical_ CPU cores count
+  look for the _physical_ CPU cores count.
 
 
-By default when using `CpuCoreCounter`, it will use the logical finders since
+By default, when using `CpuCoreCounter`, it will use the logical finders since
 it is more likely what you are looking for and is what is used by PHP source to
 it is more likely what you are looking for and is what is used by PHP source to
 build the PHP binary.
 build the PHP binary.
 
 
 
 
 ### Checks what finders find what on your system
 ### Checks what finders find what on your system
 
 
-You have two commands available that provides insight about what the finders
+You have three scrips available that provides insight about what the finders
 can find:
 can find:
 
 
-```
-$ make diagnose                                     # From this repository
-$ ./vendor/fidry/cpu-core-counter/bin/diagnose.php  # From the library
+```shell
+# Checks what each given finder will find on your system with details about the
+# information it had.
+make diagnose                                     # From this repository
+./vendor/fidry/cpu-core-counter/bin/diagnose.php  # From the library
 ```
 ```
 
 
 And:
 And:
+```shell
+# Execute all finders and display the result they found.
+make execute                                     # From this repository
+./vendor/fidry/cpu-core-counter/bin/execute.php  # From the library
 ```
 ```
-$ make execute                                     # From this repository
-$ ./vendor/fidry/cpu-core-counter/bin/execute.php  # From the library
-```
+
+
+### Debug the results found
+
+You have 3 methods available to help you find out what happened:
+
+1. If you are using the default configuration of finder registries, you can check
+   the previous section which will provide plenty of information.
+2. If what you are interested in is how many CPU cores were found, you can use
+   the `CpuCoreCounter::trace()` method.
+3. If what you are interested in is how the calculation of CPU cores available
+   for parallelisation was done, you can inspect the values of `ParallelisationResult`
+   returned by `CpuCoreCounter::getAvailableForParallelisation()`.
 
 
 
 
 ## Backward Compatibility Promise (BCP)
 ## Backward Compatibility Promise (BCP)

+ 179 - 0
vendor/fidry/cpu-core-counter/src/CpuCoreCounter.php

@@ -14,7 +14,14 @@ declare(strict_types=1);
 namespace Fidry\CpuCoreCounter;
 namespace Fidry\CpuCoreCounter;
 
 
 use Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
 use Fidry\CpuCoreCounter\Finder\CpuCoreFinder;
+use Fidry\CpuCoreCounter\Finder\EnvVariableFinder;
 use Fidry\CpuCoreCounter\Finder\FinderRegistry;
 use Fidry\CpuCoreCounter\Finder\FinderRegistry;
+use InvalidArgumentException;
+use function implode;
+use function max;
+use function sprintf;
+use function sys_getloadavg;
+use const PHP_EOL;
 
 
 final class CpuCoreCounter
 final class CpuCoreCounter
 {
 {
@@ -36,6 +43,89 @@ final class CpuCoreCounter
         $this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders();
         $this->finders = $finders ?? FinderRegistry::getDefaultLogicalFinders();
     }
     }
 
 
+    /**
+     * @param positive-int|0    $reservedCpus      Number of CPUs to reserve. This is useful when you want
+     *                                             to reserve some CPUs for other processes. If the main
+     *                                             process is going to be busy still, you may want to set
+     *                                             this value to 1.
+     * @param non-zero-int|null $countLimit        The maximum number of CPUs to return. If not provided, it
+     *                                             may look for a limit in the environment variables, e.g.
+     *                                             KUBERNETES_CPU_LIMIT. If negative, the limit will be
+     *                                             the total number of cores found minus the absolute value.
+     *                                             For instance if the system has 10 cores and countLimit=-2,
+     *                                             then the effective limit considered will be 8.
+     * @param float|null        $loadLimit         Element of [0., 1.]. Percentage representing the
+     *                                             amount of cores that should be used among the available
+     *                                             resources. For instance, if set to 0.7, it will use 70%
+     *                                             of the available cores, i.e. if 1 core is reserved, 11
+     *                                             cores are available and 5 are busy, it will use 70%
+     *                                             of (11-1-5)=5 cores, so 3 cores. Set this parameter to null
+     *                                             to skip this check. Beware that 1 does not mean "no limit",
+     *                                             but 100% of the _available_ resources, i.e. with the
+     *                                             previous example, it will return 5 cores. How busy is
+     *                                             the system is determined by the system load average
+     *                                             (see $systemLoadAverage).
+     * @param float|null        $systemLoadAverage The system load average. If passed, it will use
+     *                                             this information to limit the available cores based
+     *                                             on the _available_ resources. For instance, if there
+     *                                             is 10 cores but 3 are busy, then only 7 cores will
+     *                                             be considered for further calculation. If set to
+     *                                             `null`, it will use `sys_getloadavg()` to check the
+     *                                             load of the system in the past minute. You can
+     *                                             otherwise pass an arbitrary value. Should be a
+     *                                             positive float.
+     *
+     * @see https://php.net/manual/en/function.sys-getloadavg.php
+     */
+    public function getAvailableForParallelisation(
+        int $reservedCpus = 0,
+        ?int $countLimit = null,
+        ?float $loadLimit = null,
+        ?float $systemLoadAverage = 0.
+    ): ParallelisationResult {
+        self::checkCountLimit($countLimit);
+        self::checkLoadLimit($loadLimit);
+        self::checkSystemLoadAverage($systemLoadAverage);
+
+        $totalCoreCount = $this->getCountWithFallback(1);
+        $availableCores = max(1, $totalCoreCount - $reservedCpus);
+
+        // Adjust available CPUs based on current load
+        if (null !== $loadLimit) {
+            $correctedSystemLoadAverage = null === $systemLoadAverage
+                ? sys_getloadavg()[0] ?? 0.
+                : $systemLoadAverage;
+
+            $availableCores = max(
+                1,
+                $loadLimit * ($availableCores - $correctedSystemLoadAverage)
+            );
+        }
+
+        if (null === $countLimit) {
+            $correctedCountLimit = self::getKubernetesLimit();
+        } else {
+            $correctedCountLimit = $countLimit > 0
+                ? $countLimit
+                : max(1, $totalCoreCount + $countLimit);
+        }
+
+        if (null !== $correctedCountLimit && $availableCores > $correctedCountLimit) {
+            $availableCores = $correctedCountLimit;
+        }
+
+        return new ParallelisationResult(
+            $reservedCpus,
+            $countLimit,
+            $loadLimit,
+            $systemLoadAverage,
+            $correctedCountLimit,
+            $correctedSystemLoadAverage ?? $systemLoadAverage,
+            $totalCoreCount,
+            (int) $availableCores
+        );
+    }
+
     /**
     /**
      * @throws NumberOfCpuCoreNotFound
      * @throws NumberOfCpuCoreNotFound
      *
      *
@@ -51,6 +141,48 @@ final class CpuCoreCounter
         return $this->count;
         return $this->count;
     }
     }
 
 
+    /**
+     * @param positive-int $fallback
+     *
+     * @return positive-int
+     */
+    public function getCountWithFallback(int $fallback): int
+    {
+        try {
+            return $this->getCount();
+        } catch (NumberOfCpuCoreNotFound $exception) {
+            return $fallback;
+        }
+    }
+
+    /**
+     * This method is mostly for debugging purposes.
+     */
+    public function trace(): string
+    {
+        $output = [];
+
+        foreach ($this->finders as $finder) {
+            $output[] = sprintf(
+                'Executing the finder "%s":',
+                $finder->toString()
+            );
+            $output[] = $finder->diagnose();
+
+            $cores = $finder->find();
+
+            if (null !== $cores) {
+                $output[] = 'Result found: '.$cores;
+
+                break;
+            }
+
+            $output[] = '–––';
+        }
+
+        return implode(PHP_EOL, $output);
+    }
+
     /**
     /**
      * @throws NumberOfCpuCoreNotFound
      * @throws NumberOfCpuCoreNotFound
      *
      *
@@ -86,4 +218,51 @@ final class CpuCoreCounter
 
 
         throw NumberOfCpuCoreNotFound::create();
         throw NumberOfCpuCoreNotFound::create();
     }
     }
+
+    /**
+     * @return positive-int|null
+     */
+    public static function getKubernetesLimit(): ?int
+    {
+        $finder = new EnvVariableFinder('KUBERNETES_CPU_LIMIT');
+
+        return $finder->find();
+    }
+
+    private static function checkCountLimit(?int $countLimit): void
+    {
+        if (0 === $countLimit) {
+            throw new InvalidArgumentException(
+                'The count limit must be a non zero integer. Got "0".'
+            );
+        }
+    }
+
+    private static function checkLoadLimit(?float $loadLimit): void
+    {
+        if (null === $loadLimit) {
+            return;
+        }
+
+        if ($loadLimit < 0. || $loadLimit > 1.) {
+            throw new InvalidArgumentException(
+                sprintf(
+                    'The load limit must be in the range [0., 1.], got "%s".',
+                    $loadLimit
+                )
+            );
+        }
+    }
+
+    private static function checkSystemLoadAverage(?float $systemLoadAverage): void
+    {
+        if (null !== $systemLoadAverage && $systemLoadAverage < 0.) {
+            throw new InvalidArgumentException(
+                sprintf(
+                    'The system load average must be a positive float, got "%s".',
+                    $systemLoadAverage
+                )
+            );
+        }
+    }
 }
 }

+ 4 - 2
vendor/fidry/cpu-core-counter/src/Finder/CpuInfoFinder.php

@@ -49,10 +49,12 @@ final class CpuInfoFinder implements CpuCoreFinder
         }
         }
 
 
         return sprintf(
         return sprintf(
-            'Found the file "%s" with the content:%s%s',
+            'Found the file "%s" with the content:%s%s%sWill return "%s".',
             self::CPU_INFO_PATH,
             self::CPU_INFO_PATH,
             PHP_EOL,
             PHP_EOL,
-            $cpuInfo
+            $cpuInfo,
+            PHP_EOL,
+            self::countCpuCores($cpuInfo)
         );
         );
     }
     }
 
 

+ 5 - 2
vendor/fidry/cpu-core-counter/src/Finder/NProcFinder.php

@@ -30,10 +30,13 @@ final class NProcFinder extends ProcOpenBasedFinder
     private $all;
     private $all;
 
 
     /**
     /**
-     * @param bool $all If disabled will give the number of cores available for the current process only.
+     * @param bool $all If disabled will give the number of cores available for the current process
+     *                  only. This is disabled by default as it is known to be "buggy" on virtual
+     *                  environments as the virtualization tool, e.g. VMWare, might over-commit
+     *                  resources by default.
      */
      */
     public function __construct(
     public function __construct(
-        bool $all = true,
+        bool $all = false,
         ?ProcessExecutor $executor = null
         ?ProcessExecutor $executor = null
     ) {
     ) {
         parent::__construct($executor);
         parent::__construct($executor);

+ 7 - 4
vendor/fidry/cpu-core-counter/src/Finder/ProcOpenBasedFinder.php

@@ -56,16 +56,19 @@ abstract class ProcOpenBasedFinder implements CpuCoreFinder
 
 
         return $failed
         return $failed
             ? sprintf(
             ? sprintf(
-                'Executed the command "%s" which wrote the following output to the STDERR:%s%s',
+                'Executed the command "%s" which wrote the following output to the STDERR:%s%s%sWill return "null".',
                 $command,
                 $command,
                 PHP_EOL,
                 PHP_EOL,
-                $stderr
+                $stderr,
+                PHP_EOL
             )
             )
             : sprintf(
             : sprintf(
-                'Executed the command "%s" and got the following (STDOUT) output:%s%s',
+                'Executed the command "%s" and got the following (STDOUT) output:%s%s%sWill return "%s".',
                 $command,
                 $command,
                 PHP_EOL,
                 PHP_EOL,
-                $stdout
+                $stdout,
+                PHP_EOL,
+                $this->countCpuCores($stdout) ?? 'null'
             );
             );
     }
     }
 
 

+ 321 - 0
vendor/friendsofphp/php-cs-fixer/CHANGELOG.md

@@ -3,6 +3,327 @@ CHANGELOG for PHP CS Fixer
 
 
 This file contains changelogs for stable releases only.
 This file contains changelogs for stable releases only.
 
 
+Changelog for v3.75.0
+---------------------
+
+* feat: `ClassAttributesSeparationFixer` - add support for asymmetric visibility (#8518)
+* fix: `NativeFunctionInvocationFixer` - fix for property hooks (#8540)
+* chore: add return types for data providers for fixers (#8542)
+* chore: add return types for data providers for non-fixers (#8543)
+* chore: add return types for remaining data providers (#8544)
+* chore: make data providers key type `int` if all the keys are strings (#8550)
+* chore: make data providers key type `string` if all the keys are strings (#8545)
+* chore: SwitchContinueToBreakFixerTest - improve test case descriptions/typehint (#8546)
+* chore: `FunctionsAnalyzerTest` cleanup (#8539)
+* deps: bump the phpstan group in /dev-tools with 2 updates (#8537)
+* test: ProjectCodeTest::testDataProvidersDeclaredReturnType - allow for int as iterable keys (#8548)
+
+Changelog for v3.74.0
+---------------------
+
+* feat: add `--format=@auto` (#8513)
+* fix: `BracesPositionFixer` - do not create two consecutive whitespace tokens (#8496)
+* fix: `MbStrFunctionsFixer` - fix imports with leading backslash (#8507)
+* fix: `NoUnreachableDefaultArgumentValueFixer` - do not crash on property hook (#8512)
+* fix: `OrderedImportsFixer` - do not take the braces part in grouped imports into account (#8459)
+* fix: `OrderedImportsFixer` - fix syntax error with grouped use statement and multiple use with comma (#8483)
+* fix: `PhpUnitAttributesFixer` - handle parentheses after data provider method name (#8510)
+* fix: `PhpUnitMethodCasingFixer` - do not touch anonymous class (#8463)
+* chore: make options that have default and allowed sets the same size the same array (#8529)
+* chore: update return type of `FixerOptionInterface::getAllowedValues` (#8530)
+* chore: `Preg` - improve types (#8527)
+* CI: fix code coverage job (#8520)
+* CI: try MacOS job without ParaUnit (#8528)
+* deps: update PHPStan (#8531)
+* deps: upgrade `PHPStan/*` (#8524)
+
+Changelog for v3.73.1
+---------------------
+
+* fix: `OrderedClassElementsFixer` - do not crash on property hook (#8517)
+
+Changelog for v3.73.0
+---------------------
+
+* feat: add support for asymmetric visibility to Doctrine's fixers (#8415)
+* fix: `GeneralPhpdocTagRenameFixer` - do not rename keys in array shape definition (#8477)
+* fix: `MethodArgumentSpaceFixer` - handle when nested in HTML (#8503)
+* chore: update `checkbashisms` to 2.25.5 (#8519)
+* DX: cleanup `NoExtraBlankLinesFixerTest` (#8505)
+* DX: for duplicated test methods check methods without parameters (#8508)
+* DX: remove more duplicated test methods (#8506)
+* refactor: `Tokenizer` hash metode using `xxHash` (#8491)
+* refactor: `TokensAnalyzerTest` - better test `isArray` and `isArrayMultiLine` (#8504)
+* test: run code coverage on PHP 8.4 (#8448)
+
+Changelog for v3.72.0
+---------------------
+
+* feat: `StatementIndentationFixer` - handle property hooks (#8492)
+* fix: `MbStrFunctionsFixer` - fix imports (#8474)
+* fix: `TrailingCommaInMultilineFixer` - handle empty match body (#8480)
+* fix: `VisibilityRequiredFixer` - handle property hooks (#8495)
+* deps: upgrade few dev-deps (#8490)
+* deps: Upgrade PHPStan to 2.1.8 (#8489)
+* DX: add trailing comma to multiline auto-generated types (#8499)
+* refactor: generalize CodeHasher into Hasher (#8500)
+* refactor: Runner - unify paths used when using parallel runner (#8488)
+* refactor: use Hasher instead of md5 directly (#8501)
+
+Changelog for v3.71.0
+---------------------
+
+* feat: OrderedImportsFixer - deprecate length sorting algorithm (#8473)
+* fix: `BinaryOperatorSpacesFixer` - do not break alignment of UTF-8 array keys (#8484)
+* fix: `PhpdocAlignFixer` - align correctly type with UTF8 characters (#8486)
+* fix: `SingleSpaceAroundConstructFixer` - handle alternative syntax (#8317)
+* fix: `StatementIndentationFixer` - return in braceless if (#8479)
+* chore: update type in `SingleSpaceAroundConstructFixerTest::provideFixWithElseIfCases` (#8481)
+* chore: update type in `SingleSpaceAroundConstructFixerTest::provideFixWithIfCases` (#8482)
+* deps: bump phpstan/phpstan from 2.1.6 to 2.1.7 in /dev-tools in the phpstan group (#8485)
+* DX: cleanup `PhpdocNoAliasTagFixerTest` (#8476)
+* refactor: add `FullyQualifiedNameAnalyzer` (#8048)
+* refactor: codeHash - update when it's (re-)generated (#8470)
+* refactor: `SwitchAnalyzer` - improve performance (#8407)
+* test: NameQualifiedTransformerTest - correct test case (#8471)
+
+Changelog for v3.70.2
+---------------------
+
+* deps: upgrade deep dev-tools deps (#8472)
+* fix: `MbStrFunctionsFixer` must run before `NativeFunctionInvocationFixer` (#8466)
+* fix: `MethodArgumentSpaceFixer` - fix nested calls for `ensure_fully_multiline` option (#8469)
+
+Changelog for v3.70.1
+---------------------
+
+* fix: `PhpUnitSizeClassFixer` must run before `PhpUnitAttributesFixer` (#8457)
+* DX: cleanup `OrderedImportsFixerTest` (#8458)
+
+Changelog for v3.70.0
+---------------------
+
+* feat: Add `PhpUnitDataProviderMethodOrderFixer` fixer (#8225)
+* feat: `HeaderCommentFixer` - allow validators (#8452)
+* feat: `PhpCsFixer` ruleset: use `operator_linebreak` rule for all operators (#8417)
+* feat: `PhpUnitMethodCasingFixer` to support PHPUnit's `Test` attribute (#8451)
+* feat: `TypeDeclarationSpacesFixer` - Fix whitespace between const type and const name (#8442)
+* chore: extend bug report template (#8447)
+* chore: extend bug report template - more installation options (#8450)
+* CI: phpstan-symfony - add entry point for console (#8292)
+* deps: bump alpine from 3.21.2 to 3.21.3 (#8454)
+* deps: bump phpstan/phpstan from 2.1.5 to 2.1.6 in /dev-tools in the phpstan group (#8453)
+* fix: `CommentsAnalyzer` - allow other forms of assignment as valid structural elements for PHPDocs (#8371)
+* fix: `PhpUnitTestClassRequiresCoversFixer` must run before `PhpUnitAttributesFixer` (#8444)
+* test: fix `CheckCommandTest::testDryRunModeIsUnavailable` to correctly check that option `--dry-run` is unavailable (#8438)
+
+Changelog for v3.69.1
+---------------------
+
+* fix: `PhpUnitAttributesFixer` - convert correctly version constraint (#8439)
+* test: `PhpUnitAttributesFixer` must run before `NoEmptyPhpdocFixer` (#8443)
+
+Changelog for v3.69.0
+---------------------
+
+* feat: Add unsealed array shape phpdoc support (#8299)
+* fix: `OrderedClassElementsFixer` - sort correctly typed constants (#8408)
+* chore: do not use test class as test data (#8430)
+* chore: update `checkbashisms` to 2.25.2 (#8427)
+* chore: use constants instead of literal strings (#8422)
+* CI: no need to unlock deps on master (#8426)
+* CI: run tests using PHPUnit 12 (#8431)
+* deps: bump kubawerlos/composer-smaller-lock from 1.0.1 to 1.1.0 in /dev-tools (#8414)
+* deps: bump maglnet/composer-require-checker from 4.14.0 to 4.15.0 in /dev-tools (#8406)
+* deps: bump phpstan/phpstan from 2.1.3 to 2.1.5 in /dev-tools in the phpstan group (#8437)
+* deps: bump the phpstan (#8423)
+* deps: upgrade dev requirements (#8424)
+
+Changelog for v3.68.5
+---------------------
+
+* fix: `NativeTypeDeclarationCasingFixer` - do not touch constants named as native types (#8404)
+
+Changelog for v3.68.4
+---------------------
+
+* chore: run SCA on PHP 8.4 (#8396)
+* fix: NativeTypeDeclarationCasingFixer should not touch property names (#8400)
+
+Changelog for v3.68.3
+---------------------
+
+* fix: `NativeTypeDeclarationCasingFixer` - fix for enum with "Mixed" case (#8395)
+
+Changelog for v3.68.2
+---------------------
+
+* fix: `NativeTypeDeclarationCasingFixer` - fix for promoted properties, enums, `false` and `mixed` (#8386)
+* chore: ensure that `dev-tools` dependencies are bumped (#8389)
+* chore: experiment to see if we can auto-shrink the lock after dependabot (#8383)
+* chore: experiment to see if we can auto-shrink the lock after dependabot /part (#8384)
+* chore: Get rid of Docker warnings during build (#8379)
+* chore: remove redundant check (#8391)
+* chore: update types (#8390)
+* CI: stale - update close msg to emphasize contribution over demand (#8385)
+* deps: bump phpcompatibility/phpcompatibility-symfony from 1.2.1 to 1.2.2 in /dev-tools (#8378)
+* deps: bump the phpstan group in /dev-tools with 4 updates (#8387)
+* refactor: Use native `Yaml::parseFile()` instead of custom method (#8380)
+
+Changelog for v3.68.1
+---------------------
+
+* chore: `AutoReview/CiConfigurationTest` - handle failure of reading files (#8375)
+* CI: `Docker` - check all `compose` services (#8370)
+* deps: bump alpine from 3.18 to 3.21 (#8377)
+* deps: bump alpine from 3.18.4 to 3.21.2 (#8362)
+* refactor: Tokens::clearEmptyTokens - optimize cache handling (#8335)
+
+Changelog for v3.68.0
+---------------------
+
+* feat: `ModernizeStrposFixer` - support `stripos` (#8019)
+* chore: `FullyQualifiedStrictTypesFixer` - reduce conditions count (#8368)
+* test: `PhpUnitSetUpTearDownVisibilityFixer` - extend test for anonymous classes (#8369)
+
+Changelog for v3.67.1
+---------------------
+
+* fix: `FullyQualifiedStrictTypesFixer` - fix return types (#8367)
+* fix: `PhpUnitSetUpTearDownVisibilityFixer` - do not touch anonymous classes (#8366)
+* chore: allow for class-string in doc types of rule options (#8358)
+* chore: CS: Move data provider methods after their test method (#8302)
+* chore: dependabot integration (#8357)
+* chore: `PHPStan` - upgrade to 2.1 (#8355)
+* CI: Introduce PHP compatibility check (#7844)
+* deps: bump docker/build-push-action from 5 to 6 (#8361)
+* docs: update installation instructions (#8356)
+
+Changelog for v3.67.0
+---------------------
+
+* chore: simplify loops using `end`/`prev` functions (#8352)
+* feat: Introduce `general_attribute_remove` fixer (#8339)
+
+Changelog for v3.66.2
+---------------------
+
+* chore: do not use bitwise "or" assignment operator (#8346)
+* chore: remove extra check, never happening (#8348)
+* chore: remove impossible `@throws` annotation (#8353)
+* chore: Tokens - cleanup (#8350)
+* chore: Tokens - minor performance and types optimizations (#8349)
+
+Changelog for v3.66.1
+---------------------
+
+* chore: fix CI for Windows (#8326)
+* chore: `NoMultipleStatementsPerLineFixer` - be aware of PHP 8.4 property hooks (#8344)
+* chore: `TernaryToElvisOperatorFixer` - improvements based on PHPStan detections (#8345)
+* chore: `PhpUnitTestCaseStaticMethodCallsFixer` - fix type of `methods` option in documemtation and add example with it (#8338)
+* chore: update legacy deps (#8342)
+* deps: update box (#8336)
+
+Changelog for v3.66.0
+---------------------
+
+* feat: `Tokenizer` - initial support for PHP 8.4 property hooks (#8312)
+* feat: `PhpUnitTestCaseStaticMethodCallsFixer` - cover PHPUnit v11.5 methods (#8314)
+* feat: `PhpUnitTestCaseStaticMethodCallsFixer` - make sure all static protected methods are handled (#8327)
+* feat: `PhpUnitTestCaseStaticMethodCallsFixer` - support createStub (#8319)
+* feat: `UseArrowFunctionsFixer` - support multiline statements (#8311)
+* fix: `NullableTypeDeclarationFixer` - do not break multi-line declaration (#8331)
+* test: `CiConfigurationTest` - drop not needed condition, logic is checked in upcoming assertion (#8303)
+* chore: add more typehints (#8325)
+* chore: `DotsOutput` - more const, better typing (#8318)
+* chore: mark classes as readonly (#8275)
+* chore: more const, better typing (#8320)
+* chore: temporarily prevent symfony/process 7.2+ (#8322)
+* chore: `Tokens` - simplify (un)registerFoundToken types (#8328)
+* chore: upgrade PHPStan (#8321)
+* chore: `BraceTransformer` - don't touch curly index braces since 8.4, as it's not a valid syntax anymore (#8313)
+* CI: enable phpdoc_to_property_type on php-lowest (#8324)
+* Create SECURITY.md
+* docs: `Tokens` - fix docs (#8332)
+
+Changelog for v3.65.0
+---------------------
+
+* feat: Ability to set upper limit when using CPU auto-detection (#8280)
+* feat: create `@PHP82Migration:risky` ruleset (#8277)
+* feat: Impl. TypeExpression::mapTypes() (#8077)
+* feat: Parse array/generic/nullable type into inner expression (#8106)
+* feat: phpdoc_to_property_type - handle virtual types and null initialization, enable in php-highest CI job (#8283)
+* feat: Store PHPDoc offset in `DataProviderAnalysis` (#8226)
+* feat: Support for complex PHPDoc types in `fully_qualified_strict_types` (#8085)
+* fix: check for priority tests correctly (#8221)
+* fix: Do not mark with `@coversNothing` if `CoversMethod`/`CoversFunction` attribute is used (#8268)
+* fix: enum-case mistaken for const invocation (#8190)
+* fix: fix typing of few properties wrongly typed as non-nullable (#8285)
+* fix: fix typing property wrongly typed as non-nullable (#8290)
+* fix: MethodChainingIndentationFixer does not fix indentation of last chained property (#8080)
+* fix: NoSuperfluousPhpdocTagsFixer - Remove superfluous phpdoc of parameter with attribute (#8237)
+* fix: parsing mixed `&` and `|` in `TypeExpression` (#8210)
+* fix: proper base class used for AbstractDoctrineAnnotationFixer templates generation (#8291)
+* fix: Properly recognise constants in foreach loops (#8203)
+* fix: Tokens::overrideRange() block cache pruning (#8240)
+* fix: `BlankLineAfterOpeningTagFixer` - add blank line in file starting with multi-line comment (#8256)
+* fix: `MultilineWhitespaceBeforeSemicolonsFixer` - do not produce syntax error when there is a meaningful token after semicolon (#8230)
+* fix: `NullableTypeDeclarationFixer` - do not break syntax when there is no space before `?` (#8224)
+* fix: `PhpUnitDataProvider(.+)Fixer` - do not omit when there is an attribute between PHPDoc and test method (#8185)
+* fix: `PhpUnitDataProviderNameFixer` - for an attribute between PHPDoc and test method (#8217)
+* chore: add todo for PHP v8 (#8274)
+* chore: auto-fallback to sequential runner if single CPU would handle it (#8154)
+* chore: block changing tokens collection size using `PhpCsFixer\Tokenizer\Tokens::setSize` (#8257)
+* chore: bump dev-tools (#8286)
+* chore: bump PHPStan (#8245)
+* chore: Cheaper file check first (#8252)
+* chore: ConfigInterface - better types (#8244)
+* chore: do not call `Tokens::setSize` in `GroupImportFixer` (#8253)
+* chore: do not use `Reflection*::setAccessible` (#8264)
+* chore: fix priority tests (#8223)
+* chore: Fix typos in AbstractFixerTestCase (#8247)
+* chore: GithubClient - make URL injectable (#8272)
+* chore: Implement PHPStan `Preg::match()` extensions (#8103)
+* chore: mark remaining Analysis as `@internal` (#8284)
+* chore: PHPStan - upgrade to v2 (#8288)
+* chore: reduce amount of class mutable properties (#8281)
+* chore: remove from priority tests exceptions tests that are not actually exceptions (#8222)
+* chore: remove incorrect priority tests (#8231)
+* chore: remove not needed PHP version requirements in descriptions (#8265)
+* chore: remove unnecessary methods (#8200)
+* chore: tests/Tokenizer/Transformer - better typehinting (#8243)
+* chore: Token - remove 'changed' property (#8273)
+* chore: Token::getContent() phpdoc return type (#8236)
+* chore: update dev dependencies in root (#8289)
+* chore: update PHPStan to 1.12.9 (#8271)
+* chore: update `checkbashisms` to 2.24.1 (#8258)
+* chore: use null coalescing assignment operator where possible (#8219)
+* CI: allow macos to fail (#8194)
+* CI: build phar on PHP 8.3 (#8195)
+* CI: drop matrix for single-matrix-entry jobs of SCA and Deployment checks (#8193)
+* CI: Ensure php-cs-fixer PHP compatibility /part (#8241)
+* CI: Ensure `php-cs-fixer` PHP compatibility (#8235)
+* CI: generate and execute code in `assert` (#8207)
+* CI: update PHPStan to 1.12.2 (#8198)
+* CI: update PHPStan to 1.12.3 (#8204)
+* CI: use phpstan-symfony (#8287)
+* depr: ConfigInterface::getPhpExecutable() and ConfigInterface::setPhpExecutable() (#8192)
+* deps: add `composer-smaller-lock` (#8263)
+* deps: Update PHPStan to 1.12.4 (#8215)
+* deps: Update PHPStan to 1.12.5 (#8218)
+* deps: update PHPStan to 1.12.7 (#8255)
+* docs: fix unconsistency in config doc (#8269)
+* docs: mention github action example instead of travis-ci (#8250)
+* DX: Cover `php-cs-fixer` file with static analysis (#8229)
+* DX: Make `TypeExpression` API more explicit about composite types (#8214)
+* refactor: change `_AttributeItems` to `non-empty-list<_AttributeItem>` to allow using single attribute item (#8199)
+* refactor: Rename newly introduced option (#8293)
+* refactor: Runner - Enhance eventing system (#8276)
+* refactor: Runner - make 4.0 TODOs easier to understand (#8196)
+* refactor: use arrow functions in more places (#8294)
+* test: `@PHP82Migration:risky` - add integration tests (#8278)
+
 Changelog for v3.64.0
 Changelog for v3.64.0
 ---------------------
 ---------------------
 
 

+ 5 - 26
vendor/friendsofphp/php-cs-fixer/README.md

@@ -38,45 +38,24 @@ projects. This tool does not only detect them, but also fixes them for you.
 
 
 ### Installation
 ### Installation
 
 
-The recommended way to install PHP CS Fixer is to use [Composer](https://getcomposer.org/download/)
-in a dedicated `composer.json` file in your project, for example in the
-`tools/php-cs-fixer` directory:
-
-```console
-mkdir -p tools/php-cs-fixer
-composer require --working-dir=tools/php-cs-fixer friendsofphp/php-cs-fixer
-```
-
-Or using the main `composer.json`:
+The recommended way to install PHP CS Fixer is to use [Composer](https://getcomposer.org/download/):
 
 
 ```console
 ```console
 composer require --dev friendsofphp/php-cs-fixer
 composer require --dev friendsofphp/php-cs-fixer
+## or when facing conflicts in dependencies:
+composer require --dev php-cs-fixer/shim
 ```
 ```
 
 
-For more details and other installation methods, see
+For more details and other installation methods (also with Docker or behind CI), see
 [installation instructions](./doc/installation.rst).
 [installation instructions](./doc/installation.rst).
 
 
-### Run with Docker
-
-You can use pre-built Docker images to run ``php-cs-fixer``.
-
-```console
-docker run -it --rm -v $(pwd):/code ghcr.io/php-cs-fixer/php-cs-fixer:${FIXER_VERSION:-3-php8.3} fix src
-```
-
-`$FIXER_VERSION` used in example above is an identifier of a release you want to use, which is based on Fixer and PHP versions combined. There are different tags for each Fixer's SemVer level and PHP version with syntax `<php-cs-fixer-version>-php<php-version>`. For example:
-
-* `3.57.0-php7.4`
-* `3.57-php8.0`
-* `3-php8.3`
-
 ### Usage
 ### Usage
 
 
 Assuming you installed PHP CS Fixer as instructed above, you can run the
 Assuming you installed PHP CS Fixer as instructed above, you can run the
 following command to fix the PHP files in the `src` directory:
 following command to fix the PHP files in the `src` directory:
 
 
 ```console
 ```console
-tools/php-cs-fixer/vendor/bin/php-cs-fixer fix src
+./vendor/bin/php-cs-fixer fix src
 ```
 ```
 
 
 See [usage](./doc/usage.rst), list of [built-in rules](./doc/rules/index.rst), list of [rule sets](./doc/ruleSets/index.rst)
 See [usage](./doc/usage.rst), list of [built-in rules](./doc/rules/index.rst), list of [rule sets](./doc/ruleSets/index.rst)

+ 31 - 22
vendor/friendsofphp/php-cs-fixer/composer.json

@@ -22,42 +22,43 @@
     "require": {
     "require": {
         "php": "^7.4 || ^8.0",
         "php": "^7.4 || ^8.0",
         "ext-filter": "*",
         "ext-filter": "*",
+        "ext-hash": "*",
         "ext-json": "*",
         "ext-json": "*",
         "ext-tokenizer": "*",
         "ext-tokenizer": "*",
         "clue/ndjson-react": "^1.0",
         "clue/ndjson-react": "^1.0",
         "composer/semver": "^3.4",
         "composer/semver": "^3.4",
         "composer/xdebug-handler": "^3.0.3",
         "composer/xdebug-handler": "^3.0.3",
-        "fidry/cpu-core-counter": "^1.0",
+        "fidry/cpu-core-counter": "^1.2",
         "react/child-process": "^0.6.5",
         "react/child-process": "^0.6.5",
         "react/event-loop": "^1.0",
         "react/event-loop": "^1.0",
         "react/promise": "^2.0 || ^3.0",
         "react/promise": "^2.0 || ^3.0",
         "react/socket": "^1.0",
         "react/socket": "^1.0",
         "react/stream": "^1.0",
         "react/stream": "^1.0",
-        "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
-        "symfony/console": "^5.4 || ^6.0 || ^7.0",
-        "symfony/event-dispatcher": "^5.4 || ^6.0 || ^7.0",
-        "symfony/filesystem": "^5.4 || ^6.0 || ^7.0",
-        "symfony/finder": "^5.4 || ^6.0 || ^7.0",
-        "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0",
-        "symfony/polyfill-mbstring": "^1.28",
-        "symfony/polyfill-php80": "^1.28",
-        "symfony/polyfill-php81": "^1.28",
-        "symfony/process": "^5.4 || ^6.0 || ^7.0",
-        "symfony/stopwatch": "^5.4 || ^6.0 || ^7.0"
+        "sebastian/diff": "^4.0 || ^5.1 || ^6.0 || ^7.0",
+        "symfony/console": "^5.4 || ^6.4 || ^7.0",
+        "symfony/event-dispatcher": "^5.4 || ^6.4 || ^7.0",
+        "symfony/filesystem": "^5.4 || ^6.4 || ^7.0",
+        "symfony/finder": "^5.4 || ^6.4 || ^7.0",
+        "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0",
+        "symfony/polyfill-mbstring": "^1.31",
+        "symfony/polyfill-php80": "^1.31",
+        "symfony/polyfill-php81": "^1.31",
+        "symfony/process": "^5.4 || ^6.4 || ^7.2",
+        "symfony/stopwatch": "^5.4 || ^6.4 || ^7.0"
     },
     },
     "require-dev": {
     "require-dev": {
-        "facile-it/paraunit": "^1.3 || ^2.3",
-        "infection/infection": "^0.29.5",
-        "justinrainbow/json-schema": "^5.2",
+        "facile-it/paraunit": "^1.3.1 || ^2.6",
+        "infection/infection": "^0.29.14",
+        "justinrainbow/json-schema": "^5.3 || ^6.2",
         "keradus/cli-executor": "^2.1",
         "keradus/cli-executor": "^2.1",
-        "mikey179/vfsstream": "^1.6.11",
+        "mikey179/vfsstream": "^1.6.12",
         "php-coveralls/php-coveralls": "^2.7",
         "php-coveralls/php-coveralls": "^2.7",
         "php-cs-fixer/accessible-object": "^1.1",
         "php-cs-fixer/accessible-object": "^1.1",
-        "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.5",
-        "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.5",
-        "phpunit/phpunit": "^9.6.19 || ^10.5.21 || ^11.2",
-        "symfony/var-dumper": "^5.4 || ^6.0 || ^7.0",
-        "symfony/yaml": "^5.4 || ^6.0 || ^7.0"
+        "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6",
+        "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6",
+        "phpunit/phpunit": "^9.6.22 || ^10.5.45 || ^11.5.12",
+        "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.3",
+        "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.3"
     },
     },
     "suggest": {
     "suggest": {
         "ext-dom": "For handling output formats in XML",
         "ext-dom": "For handling output formats in XML",
@@ -73,6 +74,7 @@
     },
     },
     "autoload-dev": {
     "autoload-dev": {
         "psr-4": {
         "psr-4": {
+            "PhpCsFixer\\PHPStan\\": "dev-tools/phpstan/src/",
             "PhpCsFixer\\Tests\\": "tests/"
             "PhpCsFixer\\Tests\\": "tests/"
         },
         },
         "exclude-from-classmap": [
         "exclude-from-classmap": [
@@ -112,6 +114,11 @@
             "@composer normalize --working-dir=dev-tools --dry-run ../composer.json",
             "@composer normalize --working-dir=dev-tools --dry-run ../composer.json",
             "@composer normalize --working-dir=dev-tools --dry-run composer.json"
             "@composer normalize --working-dir=dev-tools --dry-run composer.json"
         ],
         ],
+        "normalize:fix": [
+            "@composer normalize --working-dir=dev-tools ../composer.json",
+            "@composer normalize --working-dir=dev-tools composer.json"
+        ],
+        "php-compatibility": "@php dev-tools/vendor/bin/phpcs -p --standard=dev-tools/php-compatibility/phpcs-php-compatibility.xml",
         "phpstan": "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse",
         "phpstan": "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse",
         "phpstan:baseline": "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse --generate-baseline=./dev-tools/phpstan/baseline.php",
         "phpstan:baseline": "@php -d memory_limit=512M dev-tools/vendor/bin/phpstan analyse --generate-baseline=./dev-tools/phpstan/baseline.php",
         "qa": "@quality-assurance",
         "qa": "@quality-assurance",
@@ -178,7 +185,9 @@
         "infection": "Alias for 'test:mutation'",
         "infection": "Alias for 'test:mutation'",
         "install-tools": "Install DEV tools",
         "install-tools": "Install DEV tools",
         "mess-detector": "Analyse code with Mess Detector",
         "mess-detector": "Analyse code with Mess Detector",
-        "normalize": "Run normalization for composer.json files",
+        "normalize": "Check normalization for composer.json files",
+        "normalize:fix": "Run normalization for composer.json files",
+        "php-compatibility": "Check compatibility with all supported PHP versions",
         "phpstan": "Run PHPStan analysis",
         "phpstan": "Run PHPStan analysis",
         "phpstan:baseline": "Dump PHPStan baseline file - use only for updating, do not add new errors when possible",
         "phpstan:baseline": "Dump PHPStan baseline file - use only for updating, do not add new errors when possible",
         "post-autoload-dump": "Run additional tasks after installing/updating main dependencies",
         "post-autoload-dump": "Run additional tasks after installing/updating main dependencies",

+ 17 - 11
vendor/friendsofphp/php-cs-fixer/php-cs-fixer

@@ -1,6 +1,8 @@
 #!/usr/bin/env php
 #!/usr/bin/env php
 <?php
 <?php
 
 
+declare(strict_types=1);
+
 /*
 /*
  * This file is part of PHP CS Fixer.
  * This file is part of PHP CS Fixer.
  *
  *
@@ -11,28 +13,33 @@
  * with this source code in the file LICENSE.
  * with this source code in the file LICENSE.
  */
  */
 
 
+use Composer\XdebugHandler\XdebugHandler;
+use PhpCsFixer\Console\Application;
+
 error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED);
 error_reporting(E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED);
 
 
-set_error_handler(static function ($severity, $message, $file, $line) {
-    if ($severity & error_reporting()) {
+set_error_handler(static function (int $severity, string $message, string $file, int $line): bool {
+    if (0 !== ($severity & error_reporting())) {
         throw new ErrorException($message, 0, $severity, $file, $line);
         throw new ErrorException($message, 0, $severity, $file, $line);
     }
     }
+
+    return true;
 });
 });
 
 
 // check environment requirements
 // check environment requirements
-(function () {
-    if (\PHP_VERSION_ID === 80000) {
+(static function (): void {
+    if (\PHP_VERSION_ID === (int) '80000') { // TODO use 8_00_00 once only PHP 7.4+ is supported by this entry file
         fwrite(STDERR, "PHP CS Fixer is not able run on PHP 8.0.0 due to bug in PHP tokenizer (https://bugs.php.net/bug.php?id=80462).\n");
         fwrite(STDERR, "PHP CS Fixer is not able run on PHP 8.0.0 due to bug in PHP tokenizer (https://bugs.php.net/bug.php?id=80462).\n");
         fwrite(STDERR, "Update PHP version to unblock execution.\n");
         fwrite(STDERR, "Update PHP version to unblock execution.\n");
 
 
         exit(1);
         exit(1);
     }
     }
 
 
-    if (\PHP_VERSION_ID < 70400 || \PHP_VERSION_ID >= 80400) {
+    if (\PHP_VERSION_ID < (int) '70400' || \PHP_VERSION_ID >= (int) '80400') {
         fwrite(STDERR, "PHP needs to be a minimum version of PHP 7.4.0 and maximum version of PHP 8.3.*.\n");
         fwrite(STDERR, "PHP needs to be a minimum version of PHP 7.4.0 and maximum version of PHP 8.3.*.\n");
         fwrite(STDERR, 'Current PHP version: '.PHP_VERSION.".\n");
         fwrite(STDERR, 'Current PHP version: '.PHP_VERSION.".\n");
 
 
-        if (getenv('PHP_CS_FIXER_IGNORE_ENV')) {
+        if (filter_var(getenv('PHP_CS_FIXER_IGNORE_ENV'), FILTER_VALIDATE_BOOLEAN)) {
             fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
             fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
         } else {
         } else {
             fwrite(STDERR, "To ignore this requirement please set `PHP_CS_FIXER_IGNORE_ENV`.\n");
             fwrite(STDERR, "To ignore this requirement please set `PHP_CS_FIXER_IGNORE_ENV`.\n");
@@ -47,7 +54,7 @@ set_error_handler(static function ($severity, $message, $file, $line) {
         if (!extension_loaded($extension)) {
         if (!extension_loaded($extension)) {
             fwrite(STDERR, sprintf("PHP extension ext-%s is missing from your system. Install or enable it.\n", $extension));
             fwrite(STDERR, sprintf("PHP extension ext-%s is missing from your system. Install or enable it.\n", $extension));
 
 
-            if (getenv('PHP_CS_FIXER_IGNORE_ENV')) {
+            if (filter_var(getenv('PHP_CS_FIXER_IGNORE_ENV'), FILTER_VALIDATE_BOOLEAN)) {
                 fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
                 fwrite(STDERR, "Ignoring environment requirements because `PHP_CS_FIXER_IGNORE_ENV` is set. Execution may be unstable.\n");
             } else {
             } else {
                 exit(1);
                 exit(1);
@@ -57,14 +64,16 @@ set_error_handler(static function ($severity, $message, $file, $line) {
 })();
 })();
 
 
 // load dependencies
 // load dependencies
-(function () {
+(static function (): void {
     $require = true;
     $require = true;
     if (class_exists('Phar')) {
     if (class_exists('Phar')) {
         // Maybe this file is used as phar-stub? Let's try!
         // Maybe this file is used as phar-stub? Let's try!
         try {
         try {
             Phar::mapPhar('php-cs-fixer.phar');
             Phar::mapPhar('php-cs-fixer.phar');
 
 
+            /** @phpstan-ignore requireOnce.fileNotFound */
             require_once 'phar://php-cs-fixer.phar/vendor/autoload.php';
             require_once 'phar://php-cs-fixer.phar/vendor/autoload.php';
+
             $require = false;
             $require = false;
         } catch (PharException $e) {
         } catch (PharException $e) {
         }
         }
@@ -90,9 +99,6 @@ set_error_handler(static function ($severity, $message, $file, $line) {
     }
     }
 })();
 })();
 
 
-use Composer\XdebugHandler\XdebugHandler;
-use PhpCsFixer\Console\Application;
-
 // Restart if xdebug is loaded, unless the environment variable PHP_CS_FIXER_ALLOW_XDEBUG is set.
 // Restart if xdebug is loaded, unless the environment variable PHP_CS_FIXER_ALLOW_XDEBUG is set.
 $xdebug = new XdebugHandler('PHP_CS_FIXER');
 $xdebug = new XdebugHandler('PHP_CS_FIXER');
 $xdebug->check();
 $xdebug->check();

+ 8 - 4
vendor/friendsofphp/php-cs-fixer/src/AbstractDoctrineAnnotationFixer.php

@@ -28,12 +28,10 @@ use PhpCsFixer\Tokenizer\TokensAnalyzer;
  * @internal
  * @internal
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  scalar_types?: bool,
- *  union_types?: bool
+ *  ignored_tags?: list<string>,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  scalar_types: bool,
- *  union_types: bool
+ *  ignored_tags: list<string>,
  * }
  * }
  *
  *
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
@@ -224,6 +222,12 @@ abstract class AbstractDoctrineAnnotationFixer extends AbstractFixer implements
             $modifierKinds[] = T_READONLY;
             $modifierKinds[] = T_READONLY;
         }
         }
 
 
+        if (\defined('T_PRIVATE_SET')) { // @TODO: drop condition when PHP 8.4+ is required
+            $modifierKinds[] = T_PRIVATE_SET;
+            $modifierKinds[] = T_PROTECTED_SET;
+            $modifierKinds[] = T_PUBLIC_SET;
+        }
+
         while ($tokens[$index]->isGivenKind($modifierKinds)) {
         while ($tokens[$index]->isGivenKind($modifierKinds)) {
             $index = $tokens->getNextMeaningfulToken($index);
             $index = $tokens->getNextMeaningfulToken($index);
         }
         }

+ 1 - 4
vendor/friendsofphp/php-cs-fixer/src/AbstractFixer.php

@@ -27,10 +27,7 @@ use PhpCsFixer\Tokenizer\Tokens;
  */
  */
 abstract class AbstractFixer implements FixerInterface
 abstract class AbstractFixer implements FixerInterface
 {
 {
-    /**
-     * @var WhitespacesFixerConfig
-     */
-    protected $whitespacesConfig;
+    protected WhitespacesFixerConfig $whitespacesConfig;
 
 
     public function __construct()
     public function __construct()
     {
     {

+ 1 - 4
vendor/friendsofphp/php-cs-fixer/src/AbstractFunctionReferenceFixer.php

@@ -24,10 +24,7 @@ use PhpCsFixer\Tokenizer\Tokens;
  */
  */
 abstract class AbstractFunctionReferenceFixer extends AbstractFixer
 abstract class AbstractFunctionReferenceFixer extends AbstractFixer
 {
 {
-    /**
-     * @var null|FunctionsAnalyzer
-     */
-    private $functionsAnalyzer;
+    private ?FunctionsAnalyzer $functionsAnalyzer = null;
 
 
     public function isCandidate(Tokens $tokens): bool
     public function isCandidate(Tokens $tokens): bool
     {
     {

+ 13 - 3
vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocToTypeDeclarationFixer.php

@@ -34,11 +34,13 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @phpstan-type _CommonTypeInfo array{commonType: string, isNullable: bool}
  * @phpstan-type _CommonTypeInfo array{commonType: string, isNullable: bool}
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
  *  scalar_types?: bool,
  *  scalar_types?: bool,
- *  union_types?: bool
+ *  types_map?: array<string, string>,
+ *  union_types?: bool,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  scalar_types: bool,
  *  scalar_types: bool,
- *  union_types: bool
+ *  types_map: array<string, string>,
+ *  union_types: bool,
  * }
  * }
  *
  *
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
@@ -95,6 +97,10 @@ abstract class AbstractPhpdocToTypeDeclarationFixer extends AbstractFixer implem
                 ->setAllowedTypes(['bool'])
                 ->setAllowedTypes(['bool'])
                 ->setDefault(\PHP_VERSION_ID >= 8_00_00)
                 ->setDefault(\PHP_VERSION_ID >= 8_00_00)
                 ->getOption(),
                 ->getOption(),
+            (new FixerOptionBuilder('types_map', 'Map of custom types, e.g. template types from PHPStan.'))
+                ->setAllowedTypes(['array<string, string>'])
+                ->setDefault([])
+                ->getOption(),
         ]);
         ]);
     }
     }
 
 
@@ -213,6 +219,10 @@ abstract class AbstractPhpdocToTypeDeclarationFixer extends AbstractFixer implem
             return null;
             return null;
         }
         }
 
 
+        if (\array_key_exists($commonType, $this->configuration['types_map'])) {
+            $commonType = $this->configuration['types_map'][$commonType];
+        }
+
         if (isset($this->scalarTypes[$commonType])) {
         if (isset($this->scalarTypes[$commonType])) {
             if (false === $this->configuration['scalar_types']) {
             if (false === $this->configuration['scalar_types']) {
                 return null;
                 return null;
@@ -230,7 +240,7 @@ abstract class AbstractPhpdocToTypeDeclarationFixer extends AbstractFixer implem
             return null;
             return null;
         }
         }
 
 
-        if (!$typesExpression->isUnionType() || '|' !== $typesExpression->getTypesGlue()) {
+        if (!$typesExpression->isUnionType()) {
             return null;
             return null;
         }
         }
 
 

+ 17 - 35
vendor/friendsofphp/php-cs-fixer/src/AbstractPhpdocTypesFixer.php

@@ -63,7 +63,7 @@ abstract class AbstractPhpdocTypesFixer extends AbstractFixer
             }
             }
 
 
             foreach ($annotations as $annotation) {
             foreach ($annotations as $annotation) {
-                $this->fixTypes($annotation);
+                $this->fixType($annotation);
             }
             }
 
 
             $tokens[$index] = new Token([T_DOC_COMMENT, $doc->getContent()]);
             $tokens[$index] = new Token([T_DOC_COMMENT, $doc->getContent()]);
@@ -76,48 +76,30 @@ abstract class AbstractPhpdocTypesFixer extends AbstractFixer
     abstract protected function normalize(string $type): string;
     abstract protected function normalize(string $type): string;
 
 
     /**
     /**
-     * Fix the types at the given line.
+     * Fix the type at the given line.
      *
      *
      * We must be super careful not to modify parts of words.
      * We must be super careful not to modify parts of words.
      *
      *
      * This will be nicely handled behind the scenes for us by the annotation class.
      * This will be nicely handled behind the scenes for us by the annotation class.
      */
      */
-    private function fixTypes(Annotation $annotation): void
+    private function fixType(Annotation $annotation): void
     {
     {
-        $types = $annotation->getTypes();
+        $typeExpression = $annotation->getTypeExpression();
 
 
-        $new = $this->normalizeTypes($types);
-
-        if ($types !== $new) {
-            $annotation->setTypes($new);
+        if (null === $typeExpression) {
+            return;
         }
         }
-    }
 
 
-    /**
-     * @param list<string> $types
-     *
-     * @return list<string>
-     */
-    private function normalizeTypes(array $types): array
-    {
-        return array_map(
-            function (string $type): string {
-                $typeExpression = new TypeExpression($type, null, []);
-
-                $typeExpression->walkTypes(function (TypeExpression $type): void {
-                    if (!$type->isUnionType()) {
-                        $value = $this->normalize($type->toString());
-
-                        // TODO TypeExpression should be immutable and walkTypes method should be changed to mapTypes method
-                        \Closure::bind(static function () use ($type, $value): void {
-                            $type->value = $value;
-                        }, null, TypeExpression::class)();
-                    }
-                });
-
-                return $typeExpression->toString();
-            },
-            $types
-        );
+        $newTypeExpression = $typeExpression->mapTypes(function (TypeExpression $type) {
+            if (!$type->isCompositeType()) {
+                $value = $this->normalize($type->toString());
+
+                return new TypeExpression($value, null, []);
+            }
+
+            return $type;
+        });
+
+        $annotation->setTypes([$newTypeExpression->toString()]);
     }
     }
 }
 }

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Cache/Directory.php

@@ -17,6 +17,8 @@ namespace PhpCsFixer\Cache;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class Directory implements DirectoryInterface
 final class Directory implements DirectoryInterface

+ 3 - 6
vendor/friendsofphp/php-cs-fixer/src/Cache/FileCacheManager.php

@@ -14,7 +14,7 @@ declare(strict_types=1);
 
 
 namespace PhpCsFixer\Cache;
 namespace PhpCsFixer\Cache;
 
 
-use PhpCsFixer\Tokenizer\CodeHasher;
+use PhpCsFixer\Hasher;
 
 
 /**
 /**
  * Class supports caching information about state of fixing files.
  * Class supports caching information about state of fixing files.
@@ -48,10 +48,7 @@ final class FileCacheManager implements CacheManagerInterface
 
 
     private bool $signatureWasUpdated = false;
     private bool $signatureWasUpdated = false;
 
 
-    /**
-     * @var CacheInterface
-     */
-    private $cache;
+    private CacheInterface $cache;
 
 
     public function __construct(
     public function __construct(
         FileHandlerInterface $handler,
         FileHandlerInterface $handler,
@@ -141,6 +138,6 @@ final class FileCacheManager implements CacheManagerInterface
 
 
     private function calcHash(string $content): string
     private function calcHash(string $content): string
     {
     {
-        return CodeHasher::calculateCodeHash($content);
+        return Hasher::calculate($content);
     }
     }
 }
 }

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Cache/Signature.php

@@ -17,6 +17,8 @@ namespace PhpCsFixer\Cache;
 /**
 /**
  * @author Andreas Möller <am@localheinz.com>
  * @author Andreas Möller <am@localheinz.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class Signature implements SignatureInterface
 final class Signature implements SignatureInterface

+ 25 - 5
vendor/friendsofphp/php-cs-fixer/src/Config.php

@@ -25,6 +25,9 @@ use PhpCsFixer\Runner\Parallel\ParallelConfigFactory;
  */
  */
 class Config implements ConfigInterface, ParallelAwareConfigInterface
 class Config implements ConfigInterface, ParallelAwareConfigInterface
 {
 {
+    /**
+     * @var non-empty-string
+     */
     private string $cacheFile = '.php-cs-fixer.cache';
     private string $cacheFile = '.php-cs-fixer.cache';
 
 
     /**
     /**
@@ -37,24 +40,27 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
      */
      */
     private ?iterable $finder = null;
     private ?iterable $finder = null;
 
 
-    private string $format = 'txt';
+    private string $format;
 
 
     private bool $hideProgress = false;
     private bool $hideProgress = false;
 
 
+    /**
+     * @var non-empty-string
+     */
     private string $indent = '    ';
     private string $indent = '    ';
 
 
     private bool $isRiskyAllowed = false;
     private bool $isRiskyAllowed = false;
 
 
+    /**
+     * @var non-empty-string
+     */
     private string $lineEnding = "\n";
     private string $lineEnding = "\n";
 
 
     private string $name;
     private string $name;
 
 
     private ParallelConfig $parallelConfig;
     private ParallelConfig $parallelConfig;
 
 
-    /**
-     * @var null|string
-     */
-    private $phpExecutable;
+    private ?string $phpExecutable = null;
 
 
     /**
     /**
      * @TODO: 4.0 - update to @PER
      * @TODO: 4.0 - update to @PER
@@ -71,9 +77,11 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
         if (Utils::isFutureModeEnabled()) {
         if (Utils::isFutureModeEnabled()) {
             $this->name = $name.' (future mode)';
             $this->name = $name.' (future mode)';
             $this->rules = ['@PER-CS' => true];
             $this->rules = ['@PER-CS' => true];
+            $this->format = '@auto';
         } else {
         } else {
             $this->name = $name;
             $this->name = $name;
             $this->rules = ['@PSR12' => true];
             $this->rules = ['@PSR12' => true];
+            $this->format = 'txt';
         }
         }
 
 
         // @TODO 4.0 cleanup
         // @TODO 4.0 cleanup
@@ -84,6 +92,9 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
         }
         }
     }
     }
 
 
+    /**
+     * @return non-empty-string
+     */
     public function getCacheFile(): string
     public function getCacheFile(): string
     {
     {
         return $this->cacheFile;
         return $this->cacheFile;
@@ -163,6 +174,9 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
         return $this;
         return $this;
     }
     }
 
 
+    /**
+     * @param non-empty-string $cacheFile
+     */
     public function setCacheFile(string $cacheFile): ConfigInterface
     public function setCacheFile(string $cacheFile): ConfigInterface
     {
     {
         $this->cacheFile = $cacheFile;
         $this->cacheFile = $cacheFile;
@@ -191,6 +205,9 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
         return $this;
         return $this;
     }
     }
 
 
+    /**
+     * @param non-empty-string $indent
+     */
     public function setIndent(string $indent): ConfigInterface
     public function setIndent(string $indent): ConfigInterface
     {
     {
         $this->indent = $indent;
         $this->indent = $indent;
@@ -198,6 +215,9 @@ class Config implements ConfigInterface, ParallelAwareConfigInterface
         return $this;
         return $this;
     }
     }
 
 
+    /**
+     * @param non-empty-string $lineEnding
+     */
     public function setLineEnding(string $lineEnding): ConfigInterface
     public function setLineEnding(string $lineEnding): ConfigInterface
     {
     {
         $this->lineEnding = $lineEnding;
         $this->lineEnding = $lineEnding;

+ 23 - 1
vendor/friendsofphp/php-cs-fixer/src/ConfigInterface.php

@@ -25,7 +25,7 @@ interface ConfigInterface
     /**
     /**
      * Returns the path to the cache file.
      * Returns the path to the cache file.
      *
      *
-     * @return null|string Returns null if not using cache
+     * @return null|non-empty-string Returns null if not using cache
      */
      */
     public function getCacheFile(): ?string;
     public function getCacheFile(): ?string;
 
 
@@ -50,8 +50,14 @@ interface ConfigInterface
      */
      */
     public function getHideProgress(): bool;
     public function getHideProgress(): bool;
 
 
+    /**
+     * @return non-empty-string
+     */
     public function getIndent(): string;
     public function getIndent(): string;
 
 
+    /**
+     * @return non-empty-string
+     */
     public function getLineEnding(): string;
     public function getLineEnding(): string;
 
 
     /**
     /**
@@ -65,6 +71,10 @@ interface ConfigInterface
 
 
     /**
     /**
      * Get configured PHP executable, if any.
      * Get configured PHP executable, if any.
+     *
+     * @deprecated
+     *
+     * @TODO 4.0 remove me
      */
      */
     public function getPhpExecutable(): ?string;
     public function getPhpExecutable(): ?string;
 
 
@@ -98,6 +108,8 @@ interface ConfigInterface
 
 
     /**
     /**
      * Sets the path to the cache file.
      * Sets the path to the cache file.
+     *
+     * @param non-empty-string $cacheFile
      */
      */
     public function setCacheFile(string $cacheFile): self;
     public function setCacheFile(string $cacheFile): self;
 
 
@@ -110,12 +122,22 @@ interface ConfigInterface
 
 
     public function setHideProgress(bool $hideProgress): self;
     public function setHideProgress(bool $hideProgress): self;
 
 
+    /**
+     * @param non-empty-string $indent
+     */
     public function setIndent(string $indent): self;
     public function setIndent(string $indent): self;
 
 
+    /**
+     * @param non-empty-string $lineEnding
+     */
     public function setLineEnding(string $lineEnding): self;
     public function setLineEnding(string $lineEnding): self;
 
 
     /**
     /**
      * Set PHP executable.
      * Set PHP executable.
+     *
+     * @deprecated
+     *
+     * @TODO 4.0 remove me
      */
      */
     public function setPhpExecutable(?string $phpExecutable): self;
     public function setPhpExecutable(?string $phpExecutable): self;
 
 

+ 5 - 2
vendor/friendsofphp/php-cs-fixer/src/Console/Application.php

@@ -44,9 +44,12 @@ use Symfony\Component\Console\Output\OutputInterface;
 final class Application extends BaseApplication
 final class Application extends BaseApplication
 {
 {
     public const NAME = 'PHP CS Fixer';
     public const NAME = 'PHP CS Fixer';
-    public const VERSION = '3.64.0';
-    public const VERSION_CODENAME = 'Space Sets';
+    public const VERSION = '3.75.0';
+    public const VERSION_CODENAME = 'Persian Successor';
 
 
+    /**
+     * @readonly
+     */
     private ToolInfo $toolInfo;
     private ToolInfo $toolInfo;
     private ?Command $executedCommand = null;
     private ?Command $executedCommand = null;
 
 

+ 0 - 2
vendor/friendsofphp/php-cs-fixer/src/Console/Command/CheckCommand.php

@@ -27,10 +27,8 @@ use Symfony\Component\Console\Input\InputOption;
 #[AsCommand(name: 'check', description: 'Checks if configured files/directories comply with configured rules.')]
 #[AsCommand(name: 'check', description: 'Checks if configured files/directories comply with configured rules.')]
 final class CheckCommand extends FixCommand
 final class CheckCommand extends FixCommand
 {
 {
-    /** @var string */
     protected static $defaultName = 'check';
     protected static $defaultName = 'check';
 
 
-    /** @var string */
     protected static $defaultDescription = 'Checks if configured files/directories comply with configured rules.';
     protected static $defaultDescription = 'Checks if configured files/directories comply with configured rules.';
 
 
     public function __construct(ToolInfoInterface $toolInfo)
     public function __construct(ToolInfoInterface $toolInfo)

+ 3 - 4
vendor/friendsofphp/php-cs-fixer/src/Console/Command/DescribeCommand.php

@@ -56,20 +56,19 @@ use Symfony\Component\Console\Output\OutputInterface;
 #[AsCommand(name: 'describe')]
 #[AsCommand(name: 'describe')]
 final class DescribeCommand extends Command
 final class DescribeCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'describe';
     protected static $defaultName = 'describe';
 
 
     /**
     /**
      * @var ?list<string>
      * @var ?list<string>
      */
      */
-    private $setNames;
+    private ?array $setNames = null;
 
 
     private FixerFactory $fixerFactory;
     private FixerFactory $fixerFactory;
 
 
     /**
     /**
-     * @var array<string, FixerInterface>
+     * @var null|array<string, FixerInterface>
      */
      */
-    private $fixers;
+    private ?array $fixers = null;
 
 
     public function __construct(?FixerFactory $fixerFactory = null)
     public function __construct(?FixerFactory $fixerFactory = null)
     {
     {

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/Command/DocumentationCommand.php

@@ -33,7 +33,6 @@ use Symfony\Component\Finder\SplFileInfo;
 #[AsCommand(name: 'documentation')]
 #[AsCommand(name: 'documentation')]
 final class DocumentationCommand extends Command
 final class DocumentationCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'documentation';
     protected static $defaultName = 'documentation';
 
 
     private Filesystem $filesystem;
     private Filesystem $filesystem;

+ 9 - 7
vendor/friendsofphp/php-cs-fixer/src/Console/Command/FixCommand.php

@@ -25,7 +25,7 @@ use PhpCsFixer\Console\Output\Progress\ProgressOutputFactory;
 use PhpCsFixer\Console\Output\Progress\ProgressOutputType;
 use PhpCsFixer\Console\Output\Progress\ProgressOutputType;
 use PhpCsFixer\Console\Report\FixReport\ReportSummary;
 use PhpCsFixer\Console\Report\FixReport\ReportSummary;
 use PhpCsFixer\Error\ErrorsManager;
 use PhpCsFixer\Error\ErrorsManager;
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 use PhpCsFixer\Runner\Runner;
 use PhpCsFixer\Runner\Runner;
 use PhpCsFixer\ToolInfoInterface;
 use PhpCsFixer\ToolInfoInterface;
 use Symfony\Component\Console\Attribute\AsCommand;
 use Symfony\Component\Console\Attribute\AsCommand;
@@ -52,10 +52,8 @@ use Symfony\Component\Stopwatch\Stopwatch;
 #[AsCommand(name: 'fix', description: 'Fixes a directory or a file.')]
 #[AsCommand(name: 'fix', description: 'Fixes a directory or a file.')]
 /* final */ class FixCommand extends Command
 /* final */ class FixCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'fix';
     protected static $defaultName = 'fix';
 
 
-    /** @var string */
     protected static $defaultDescription = 'Fixes a directory or a file.';
     protected static $defaultDescription = 'Fixes a directory or a file.';
 
 
     private EventDispatcherInterface $eventDispatcher;
     private EventDispatcherInterface $eventDispatcher;
@@ -102,7 +100,11 @@ use Symfony\Component\Stopwatch\Stopwatch;
 
 
                 <info>$ php %command.full_name% --path-mode=intersection /path/to/dir</info>
                 <info>$ php %command.full_name% --path-mode=intersection /path/to/dir</info>
 
 
-            The <comment>--format</comment> option for the output format. Supported formats are `txt` (default one), `json`, `xml`, `checkstyle`, `junit` and `gitlab`.
+            The <comment>--format</comment> option for the output format. Supported formats are `@auto` (default one on v4+), `txt` (default one on v3), `json`, `xml`, `checkstyle`, `junit` and `gitlab`.
+
+            * `@auto` aims to auto-select best reporter for given CI or local execution (resolution into best format is outside of BC promise and is future-ready)
+              * `gitlab` for GitLab
+            * `@auto,{format}` takes `@auto` under CI, and {format} otherwise
 
 
             NOTE: the output for the following formats are generated in accordance with schemas
             NOTE: the output for the following formats are generated in accordance with schemas
 
 
@@ -333,11 +335,11 @@ use Symfony\Component\Stopwatch\Stopwatch;
             $resolver->getConfigFile()
             $resolver->getConfigFile()
         );
         );
 
 
-        $this->eventDispatcher->addListener(FixerFileProcessedEvent::NAME, [$progressOutput, 'onFixerFileProcessed']);
+        $this->eventDispatcher->addListener(FileProcessed::NAME, [$progressOutput, 'onFixerFileProcessed']);
         $this->stopwatch->start('fixFiles');
         $this->stopwatch->start('fixFiles');
         $changed = $runner->fix();
         $changed = $runner->fix();
         $this->stopwatch->stop('fixFiles');
         $this->stopwatch->stop('fixFiles');
-        $this->eventDispatcher->removeListener(FixerFileProcessedEvent::NAME, [$progressOutput, 'onFixerFileProcessed']);
+        $this->eventDispatcher->removeListener(FileProcessed::NAME, [$progressOutput, 'onFixerFileProcessed']);
 
 
         $progressOutput->printLegend();
         $progressOutput->printLegend();
 
 
@@ -390,6 +392,6 @@ use Symfony\Component\Stopwatch\Stopwatch;
 
 
     protected function isDryRun(InputInterface $input): bool
     protected function isDryRun(InputInterface $input): bool
     {
     {
-        return $input->getOption('dry-run');
+        return $input->getOption('dry-run'); // @phpstan-ignore symfonyConsole.optionNotFound (Because PHPStan doesn't recognise the method is overridden in the child class and this parameter is _not_ used in the child class.)
     }
     }
 }
 }

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/Command/HelpCommand.php

@@ -32,7 +32,6 @@ use Symfony\Component\Console\Output\OutputInterface;
 #[AsCommand(name: 'help')]
 #[AsCommand(name: 'help')]
 final class HelpCommand extends BaseHelpCommand
 final class HelpCommand extends BaseHelpCommand
 {
 {
-    /** @var string */
     protected static $defaultName = 'help';
     protected static $defaultName = 'help';
 
 
     /**
     /**

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListFilesCommand.php

@@ -33,7 +33,6 @@ use Symfony\Component\Filesystem\Path;
 #[AsCommand(name: 'list-files')]
 #[AsCommand(name: 'list-files')]
 final class ListFilesCommand extends Command
 final class ListFilesCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'list-files';
     protected static $defaultName = 'list-files';
 
 
     private ConfigInterface $defaultConfig;
     private ConfigInterface $defaultConfig;

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/Command/ListSetsCommand.php

@@ -36,7 +36,6 @@ use Symfony\Component\Console\Output\OutputInterface;
 #[AsCommand(name: 'list-sets')]
 #[AsCommand(name: 'list-sets')]
 final class ListSetsCommand extends Command
 final class ListSetsCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'list-sets';
     protected static $defaultName = 'list-sets';
 
 
     protected function configure(): void
     protected function configure(): void

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/Command/SelfUpdateCommand.php

@@ -37,7 +37,6 @@ use Symfony\Component\Console\Output\OutputInterface;
 #[AsCommand(name: 'self-update')]
 #[AsCommand(name: 'self-update')]
 final class SelfUpdateCommand extends Command
 final class SelfUpdateCommand extends Command
 {
 {
-    /** @var string */
     protected static $defaultName = 'self-update';
     protected static $defaultName = 'self-update';
 
 
     private NewVersionCheckerInterface $versionChecker;
     private NewVersionCheckerInterface $versionChecker;

+ 7 - 9
vendor/friendsofphp/php-cs-fixer/src/Console/Command/WorkerCommand.php

@@ -20,7 +20,7 @@ use PhpCsFixer\Cache\NullCacheManager;
 use PhpCsFixer\Config;
 use PhpCsFixer\Config;
 use PhpCsFixer\Console\ConfigurationResolver;
 use PhpCsFixer\Console\ConfigurationResolver;
 use PhpCsFixer\Error\ErrorsManager;
 use PhpCsFixer\Error\ErrorsManager;
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 use PhpCsFixer\Runner\Parallel\ParallelAction;
 use PhpCsFixer\Runner\Parallel\ParallelAction;
 use PhpCsFixer\Runner\Parallel\ParallelConfigFactory;
 use PhpCsFixer\Runner\Parallel\ParallelConfigFactory;
 use PhpCsFixer\Runner\Parallel\ParallelisationException;
 use PhpCsFixer\Runner\Parallel\ParallelisationException;
@@ -49,10 +49,8 @@ final class WorkerCommand extends Command
     /** @var string Prefix used before JSON-encoded error printed in the worker's process */
     /** @var string Prefix used before JSON-encoded error printed in the worker's process */
     public const ERROR_PREFIX = 'WORKER_ERROR::';
     public const ERROR_PREFIX = 'WORKER_ERROR::';
 
 
-    /** @var string */
     protected static $defaultName = 'worker';
     protected static $defaultName = 'worker';
 
 
-    /** @var string */
     protected static $defaultDescription = 'Internal command for running fixers in parallel';
     protected static $defaultDescription = 'Internal command for running fixers in parallel';
 
 
     private ToolInfoInterface $toolInfo;
     private ToolInfoInterface $toolInfo;
@@ -60,7 +58,7 @@ final class WorkerCommand extends Command
     private ErrorsManager $errorsManager;
     private ErrorsManager $errorsManager;
     private EventDispatcherInterface $eventDispatcher;
     private EventDispatcherInterface $eventDispatcher;
 
 
-    /** @var list<FixerFileProcessedEvent> */
+    /** @var list<FileProcessed> */
     private array $events;
     private array $events;
 
 
     public function __construct(ToolInfoInterface $toolInfo)
     public function __construct(ToolInfoInterface $toolInfo)
@@ -154,10 +152,10 @@ final class WorkerCommand extends Command
                         /** @var iterable<int, string> $files */
                         /** @var iterable<int, string> $files */
                         $files = $json['files'];
                         $files = $json['files'];
 
 
-                        foreach ($files as $absolutePath) {
+                        foreach ($files as $path) {
                             // Reset events because we want to collect only those coming from analysed files chunk
                             // Reset events because we want to collect only those coming from analysed files chunk
                             $this->events = [];
                             $this->events = [];
-                            $runner->setFileIterator(new \ArrayIterator([new \SplFileInfo($absolutePath)]));
+                            $runner->setFileIterator(new \ArrayIterator([new \SplFileInfo($path)]));
                             $analysisResult = $runner->fix();
                             $analysisResult = $runner->fix();
 
 
                             if (1 !== \count($this->events)) {
                             if (1 !== \count($this->events)) {
@@ -170,11 +168,11 @@ final class WorkerCommand extends Command
 
 
                             $out->write([
                             $out->write([
                                 'action' => ParallelAction::WORKER_RESULT,
                                 'action' => ParallelAction::WORKER_RESULT,
-                                'file' => $absolutePath,
+                                'file' => $path,
                                 'fileHash' => $this->events[0]->getFileHash(),
                                 'fileHash' => $this->events[0]->getFileHash(),
                                 'status' => $this->events[0]->getStatus(),
                                 'status' => $this->events[0]->getStatus(),
                                 'fixInfo' => array_pop($analysisResult),
                                 'fixInfo' => array_pop($analysisResult),
-                                'errors' => $this->errorsManager->forPath($absolutePath),
+                                'errors' => $this->errorsManager->forPath($path),
                             ]);
                             ]);
                         }
                         }
 
 
@@ -204,7 +202,7 @@ final class WorkerCommand extends Command
         }
         }
 
 
         // There's no one single source of truth when it comes to fixing single file, we need to collect statuses from events.
         // There's no one single source of truth when it comes to fixing single file, we need to collect statuses from events.
-        $this->eventDispatcher->addListener(FixerFileProcessedEvent::NAME, function (FixerFileProcessedEvent $event): void {
+        $this->eventDispatcher->addListener(FileProcessed::NAME, function (FileProcessed $event): void {
             $this->events[] = $event;
             $this->events[] = $event;
         });
         });
 
 

+ 60 - 72
vendor/friendsofphp/php-cs-fixer/src/Console/ConfigurationResolver.php

@@ -56,60 +56,56 @@ use Symfony\Component\Finder\Finder as SymfonyFinder;
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
  * @internal
  * @internal
+ *
+ * @phpstan-type _Options array{
+ *      allow-risky: null|string,
+ *      cache-file: null|string,
+ *      config: null|string,
+ *      diff: null|string,
+ *      dry-run: null|bool,
+ *      format: null|string,
+ *      path: list<string>,
+ *      path-mode: self::PATH_MODE_*,
+ *      rules: null|string,
+ *      sequential: null|string,
+ *      show-progress: null|string,
+ *      stop-on-violation: null|bool,
+ *      using-cache: null|string,
+ *      verbosity: null|string,
+ *  }
  */
  */
 final class ConfigurationResolver
 final class ConfigurationResolver
 {
 {
     public const PATH_MODE_OVERRIDE = 'override';
     public const PATH_MODE_OVERRIDE = 'override';
     public const PATH_MODE_INTERSECTION = 'intersection';
     public const PATH_MODE_INTERSECTION = 'intersection';
 
 
-    /**
-     * @var null|bool
-     */
-    private $allowRisky;
+    private ?bool $allowRisky = null;
 
 
-    /**
-     * @var null|ConfigInterface
-     */
-    private $config;
+    private ?ConfigInterface $config = null;
 
 
-    /**
-     * @var null|string
-     */
-    private $configFile;
+    private ?string $configFile = null;
 
 
     private string $cwd;
     private string $cwd;
 
 
     private ConfigInterface $defaultConfig;
     private ConfigInterface $defaultConfig;
 
 
-    /**
-     * @var null|ReporterInterface
-     */
-    private $reporter;
+    private ?ReporterInterface $reporter = null;
 
 
-    /**
-     * @var null|bool
-     */
-    private $isStdIn;
+    private ?bool $isStdIn = null;
 
 
-    /**
-     * @var null|bool
-     */
-    private $isDryRun;
+    private ?bool $isDryRun = null;
 
 
     /**
     /**
      * @var null|list<FixerInterface>
      * @var null|list<FixerInterface>
      */
      */
-    private $fixers;
+    private ?array $fixers = null;
 
 
-    /**
-     * @var null|bool
-     */
-    private $configFinderIsOverridden;
+    private ?bool $configFinderIsOverridden = null;
 
 
     private ToolInfoInterface $toolInfo;
     private ToolInfoInterface $toolInfo;
 
 
     /**
     /**
-     * @var array<string, mixed>
+     * @var _Options
      */
      */
     private array $options = [
     private array $options = [
         'allow-risky' => null,
         'allow-risky' => null,
@@ -128,25 +124,13 @@ final class ConfigurationResolver
         'verbosity' => null,
         'verbosity' => null,
     ];
     ];
 
 
-    /**
-     * @var null|string
-     */
-    private $cacheFile;
+    private ?string $cacheFile = null;
 
 
-    /**
-     * @var null|CacheManagerInterface
-     */
-    private $cacheManager;
+    private ?CacheManagerInterface $cacheManager = null;
 
 
-    /**
-     * @var null|DifferInterface
-     */
-    private $differ;
+    private ?DifferInterface $differ = null;
 
 
-    /**
-     * @var null|Directory
-     */
-    private $directory;
+    private ?Directory $directory = null;
 
 
     /**
     /**
      * @var null|iterable<\SplFileInfo>
      * @var null|iterable<\SplFileInfo>
@@ -155,10 +139,7 @@ final class ConfigurationResolver
 
 
     private ?string $format = null;
     private ?string $format = null;
 
 
-    /**
-     * @var null|Linter
-     */
-    private $linter;
+    private ?Linter $linter = null;
 
 
     /**
     /**
      * @var null|list<string>
      * @var null|list<string>
@@ -166,24 +147,15 @@ final class ConfigurationResolver
     private ?array $path = null;
     private ?array $path = null;
 
 
     /**
     /**
-     * @var null|string
+     * @var null|ProgressOutputType::*
      */
      */
     private $progress;
     private $progress;
 
 
-    /**
-     * @var null|RuleSet
-     */
-    private $ruleSet;
+    private ?RuleSet $ruleSet = null;
 
 
-    /**
-     * @var null|bool
-     */
-    private $usingCache;
+    private ?bool $usingCache = null;
 
 
-    /**
-     * @var FixerFactory
-     */
-    private $fixerFactory;
+    private ?FixerFactory $fixerFactory = null;
 
 
     /**
     /**
      * @param array<string, mixed> $options
      * @param array<string, mixed> $options
@@ -409,12 +381,14 @@ final class ConfigurationResolver
     }
     }
 
 
     /**
     /**
+     * @return ProgressOutputType::*
+     *
      * @throws InvalidConfigurationException
      * @throws InvalidConfigurationException
      */
      */
     public function getProgressType(): string
     public function getProgressType(): string
     {
     {
         if (null === $this->progress) {
         if (null === $this->progress) {
-            if ('txt' === $this->getFormat()) {
+            if ('txt' === $this->resolveFormat()) {
                 $progressType = $this->options['show-progress'];
                 $progressType = $this->options['show-progress'];
 
 
                 if (null === $progressType) {
                 if (null === $progressType) {
@@ -444,7 +418,7 @@ final class ConfigurationResolver
             $reporterFactory = new ReporterFactory();
             $reporterFactory = new ReporterFactory();
             $reporterFactory->registerBuiltInReporters();
             $reporterFactory->registerBuiltInReporters();
 
 
-            $format = $this->getFormat();
+            $format = $this->resolveFormat();
 
 
             try {
             try {
                 $this->reporter = $reporterFactory->getReporter($format);
                 $this->reporter = $reporterFactory->getReporter($format);
@@ -600,10 +574,25 @@ final class ConfigurationResolver
         return $this->fixerFactory;
         return $this->fixerFactory;
     }
     }
 
 
-    private function getFormat(): string
+    private function resolveFormat(): string
     {
     {
         if (null === $this->format) {
         if (null === $this->format) {
-            $this->format = $this->options['format'] ?? $this->getConfig()->getFormat();
+            $formatCandidate = $this->options['format'] ?? $this->getConfig()->getFormat();
+            $parts = explode(',', $formatCandidate);
+
+            if (\count($parts) > 2) {
+                throw new InvalidConfigurationException(\sprintf('The format "%s" is invalid.', $formatCandidate));
+            }
+
+            $this->format = $parts[0];
+
+            if ('@auto' === $this->format) {
+                $this->format = $parts[1] ?? 'txt';
+
+                if (filter_var(getenv('GITLAB_CI'), FILTER_VALIDATE_BOOL)) {
+                    $this->format = 'gitlab';
+                }
+            }
         }
         }
 
 
         return $this->format;
         return $this->format;
@@ -932,14 +921,13 @@ final class ConfigurationResolver
         $this->options[$name] = $value;
         $this->options[$name] = $value;
     }
     }
 
 
+    /**
+     * @param key-of<_Options> $optionName
+     */
     private function resolveOptionBooleanValue(string $optionName): bool
     private function resolveOptionBooleanValue(string $optionName): bool
     {
     {
         $value = $this->options[$optionName];
         $value = $this->options[$optionName];
 
 
-        if (!\is_string($value)) {
-            throw new InvalidConfigurationException(\sprintf('Expected boolean or string value for option "%s".', $optionName));
-        }
-
         if ('yes' === $value) {
         if ('yes' === $value) {
             return true;
             return true;
         }
         }
@@ -948,7 +936,7 @@ final class ConfigurationResolver
             return false;
             return false;
         }
         }
 
 
-        throw new InvalidConfigurationException(\sprintf('Expected "yes" or "no" for option "%s", got "%s".', $optionName, $value));
+        throw new InvalidConfigurationException(\sprintf('Expected "yes" or "no" for option "%s", got "%s".', $optionName, \is_object($value) ? \get_class($value) : (\is_scalar($value) ? $value : \gettype($value))));
     }
     }
 
 
     private static function separatedContextLessInclude(string $path): ConfigInterface
     private static function separatedContextLessInclude(string $path): ConfigInterface

+ 3 - 4
vendor/friendsofphp/php-cs-fixer/src/Console/Output/ErrorOutput.php

@@ -22,16 +22,15 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class ErrorOutput
 final class ErrorOutput
 {
 {
     private OutputInterface $output;
     private OutputInterface $output;
 
 
-    /**
-     * @var bool
-     */
-    private $isDecorated;
+    private bool $isDecorated;
 
 
     public function __construct(OutputInterface $output)
     public function __construct(OutputInterface $output)
     {
     {

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Output/OutputContext.php

@@ -17,6 +17,8 @@ namespace PhpCsFixer\Console\Output;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class OutputContext
 final class OutputContext

+ 14 - 17
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/DotsOutput.php

@@ -15,7 +15,7 @@ declare(strict_types=1);
 namespace PhpCsFixer\Console\Output\Progress;
 namespace PhpCsFixer\Console\Output\Progress;
 
 
 use PhpCsFixer\Console\Output\OutputContext;
 use PhpCsFixer\Console\Output\OutputContext;
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Output\OutputInterface;
 
 
 /**
 /**
@@ -28,15 +28,15 @@ final class DotsOutput implements ProgressOutputInterface
     /**
     /**
      * File statuses map.
      * File statuses map.
      *
      *
-     * @var array<FixerFileProcessedEvent::STATUS_*, array{symbol: string, format: string, description: string}>
+     * @var array<FileProcessed::STATUS_*, array{symbol: string, format: string, description: string}>
      */
      */
-    private static array $eventStatusMap = [
-        FixerFileProcessedEvent::STATUS_NO_CHANGES => ['symbol' => '.', 'format' => '%s', 'description' => 'no changes'],
-        FixerFileProcessedEvent::STATUS_FIXED => ['symbol' => 'F', 'format' => '<fg=green>%s</fg=green>', 'description' => 'fixed'],
-        FixerFileProcessedEvent::STATUS_SKIPPED => ['symbol' => 'S', 'format' => '<fg=cyan>%s</fg=cyan>', 'description' => 'skipped (cached or empty file)'],
-        FixerFileProcessedEvent::STATUS_INVALID => ['symbol' => 'I', 'format' => '<bg=red>%s</bg=red>', 'description' => 'invalid file syntax (file ignored)'],
-        FixerFileProcessedEvent::STATUS_EXCEPTION => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
-        FixerFileProcessedEvent::STATUS_LINT => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
+    private const EVENT_STATUS_MAP = [
+        FileProcessed::STATUS_NO_CHANGES => ['symbol' => '.', 'format' => '%s', 'description' => 'no changes'],
+        FileProcessed::STATUS_FIXED => ['symbol' => 'F', 'format' => '<fg=green>%s</fg=green>', 'description' => 'fixed'],
+        FileProcessed::STATUS_SKIPPED => ['symbol' => 'S', 'format' => '<fg=cyan>%s</fg=cyan>', 'description' => 'skipped (cached or empty file)'],
+        FileProcessed::STATUS_INVALID => ['symbol' => 'I', 'format' => '<bg=red>%s</bg=red>', 'description' => 'invalid file syntax (file ignored)'],
+        FileProcessed::STATUS_EXCEPTION => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
+        FileProcessed::STATUS_LINT => ['symbol' => 'E', 'format' => '<bg=red>%s</bg=red>', 'description' => 'error'],
     ];
     ];
 
 
     /** @readonly */
     /** @readonly */
@@ -44,10 +44,7 @@ final class DotsOutput implements ProgressOutputInterface
 
 
     private int $processedFiles = 0;
     private int $processedFiles = 0;
 
 
-    /**
-     * @var int
-     */
-    private $symbolsPerLine;
+    private int $symbolsPerLine;
 
 
     public function __construct(OutputContext $context)
     public function __construct(OutputContext $context)
     {
     {
@@ -79,9 +76,9 @@ final class DotsOutput implements ProgressOutputInterface
         throw new \BadMethodCallException('Cannot unserialize '.self::class);
         throw new \BadMethodCallException('Cannot unserialize '.self::class);
     }
     }
 
 
-    public function onFixerFileProcessed(FixerFileProcessedEvent $event): void
+    public function onFixerFileProcessed(FileProcessed $event): void
     {
     {
-        $status = self::$eventStatusMap[$event->getStatus()];
+        $status = self::EVENT_STATUS_MAP[$event->getStatus()];
         $this->getOutput()->write($this->getOutput()->isDecorated() ? \sprintf($status['format'], $status['symbol']) : $status['symbol']);
         $this->getOutput()->write($this->getOutput()->isDecorated() ? \sprintf($status['format'], $status['symbol']) : $status['symbol']);
 
 
         ++$this->processedFiles;
         ++$this->processedFiles;
@@ -108,9 +105,9 @@ final class DotsOutput implements ProgressOutputInterface
     {
     {
         $symbols = [];
         $symbols = [];
 
 
-        foreach (self::$eventStatusMap as $status) {
+        foreach (self::EVENT_STATUS_MAP as $status) {
             $symbol = $status['symbol'];
             $symbol = $status['symbol'];
-            if ('' === $symbol || isset($symbols[$symbol])) {
+            if (isset($symbols[$symbol])) {
                 continue;
                 continue;
             }
             }
 
 

+ 4 - 2
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/NullOutput.php

@@ -14,14 +14,16 @@ declare(strict_types=1);
 
 
 namespace PhpCsFixer\Console\Output\Progress;
 namespace PhpCsFixer\Console\Output\Progress;
 
 
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class NullOutput implements ProgressOutputInterface
 final class NullOutput implements ProgressOutputInterface
 {
 {
     public function printLegend(): void {}
     public function printLegend(): void {}
 
 
-    public function onFixerFileProcessed(FixerFileProcessedEvent $event): void {}
+    public function onFixerFileProcessed(FileProcessed $event): void {}
 }
 }

+ 4 - 2
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/PercentageBarOutput.php

@@ -15,12 +15,14 @@ declare(strict_types=1);
 namespace PhpCsFixer\Console\Output\Progress;
 namespace PhpCsFixer\Console\Output\Progress;
 
 
 use PhpCsFixer\Console\Output\OutputContext;
 use PhpCsFixer\Console\Output\OutputContext;
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 use Symfony\Component\Console\Helper\ProgressBar;
 use Symfony\Component\Console\Helper\ProgressBar;
 
 
 /**
 /**
  * Output writer to show the progress of a FixCommand using progress bar (percentage).
  * Output writer to show the progress of a FixCommand using progress bar (percentage).
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class PercentageBarOutput implements ProgressOutputInterface
 final class PercentageBarOutput implements ProgressOutputInterface
@@ -63,7 +65,7 @@ final class PercentageBarOutput implements ProgressOutputInterface
         throw new \BadMethodCallException('Cannot unserialize '.self::class);
         throw new \BadMethodCallException('Cannot unserialize '.self::class);
     }
     }
 
 
-    public function onFixerFileProcessed(FixerFileProcessedEvent $event): void
+    public function onFixerFileProcessed(FileProcessed $event): void
     {
     {
         $this->progressBar->advance(1);
         $this->progressBar->advance(1);
 
 

+ 11 - 3
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputFactory.php

@@ -17,19 +17,24 @@ namespace PhpCsFixer\Console\Output\Progress;
 use PhpCsFixer\Console\Output\OutputContext;
 use PhpCsFixer\Console\Output\OutputContext;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class ProgressOutputFactory
 final class ProgressOutputFactory
 {
 {
     /**
     /**
-     * @var array<string, class-string<ProgressOutputInterface>>
+     * @var array<ProgressOutputType::*, class-string<ProgressOutputInterface>>
      */
      */
-    private static array $outputTypeMap = [
+    private const OUTPUT_TYPE_MAP = [
         ProgressOutputType::NONE => NullOutput::class,
         ProgressOutputType::NONE => NullOutput::class,
         ProgressOutputType::DOTS => DotsOutput::class,
         ProgressOutputType::DOTS => DotsOutput::class,
         ProgressOutputType::BAR => PercentageBarOutput::class,
         ProgressOutputType::BAR => PercentageBarOutput::class,
     ];
     ];
 
 
+    /**
+     * @param ProgressOutputType::* $outputType
+     */
     public function create(string $outputType, OutputContext $context): ProgressOutputInterface
     public function create(string $outputType, OutputContext $context): ProgressOutputInterface
     {
     {
         if (null === $context->getOutput()) {
         if (null === $context->getOutput()) {
@@ -45,7 +50,10 @@ final class ProgressOutputFactory
             );
             );
         }
         }
 
 
-        return new self::$outputTypeMap[$outputType]($context);
+        $outputClass = self::OUTPUT_TYPE_MAP[$outputType];
+
+        // @phpstan-ignore-next-line new.noConstructor
+        return new $outputClass($context);
     }
     }
 
 
     private function isBuiltInType(string $outputType): bool
     private function isBuiltInType(string $outputType): bool

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Console/Output/Progress/ProgressOutputInterface.php

@@ -14,7 +14,7 @@ declare(strict_types=1);
 
 
 namespace PhpCsFixer\Console\Output\Progress;
 namespace PhpCsFixer\Console\Output\Progress;
 
 
-use PhpCsFixer\FixerFileProcessedEvent;
+use PhpCsFixer\Runner\Event\FileProcessed;
 
 
 /**
 /**
  * @internal
  * @internal
@@ -23,5 +23,5 @@ interface ProgressOutputInterface
 {
 {
     public function printLegend(): void;
     public function printLegend(): void;
 
 
-    public function onFixerFileProcessed(FixerFileProcessedEvent $event): void;
+    public function onFixerFileProcessed(FileProcessed $event): void;
 }
 }

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/CheckstyleReporter.php

@@ -20,6 +20,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 /**
 /**
  * @author Kévin Gomez <contact@kevingomez.fr>
  * @author Kévin Gomez <contact@kevingomez.fr>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class CheckstyleReporter implements ReporterInterface
 final class CheckstyleReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/GitlabReporter.php

@@ -27,6 +27,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
  *
  *
  * @author Hans-Christian Otto <c.otto@suora.com>
  * @author Hans-Christian Otto <c.otto@suora.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class GitlabReporter implements ReporterInterface
 final class GitlabReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JsonReporter.php

@@ -20,6 +20,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 /**
 /**
  * @author Boris Gorbylev <ekho@ekho.name>
  * @author Boris Gorbylev <ekho@ekho.name>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class JsonReporter implements ReporterInterface
 final class JsonReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/JunitReporter.php

@@ -21,6 +21,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 /**
 /**
  * @author Boris Gorbylev <ekho@ekho.name>
  * @author Boris Gorbylev <ekho@ekho.name>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class JunitReporter implements ReporterInterface
 final class JunitReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/ReportSummary.php

@@ -17,6 +17,8 @@ namespace PhpCsFixer\Console\Report\FixReport;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class ReportSummary
 final class ReportSummary

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/TextReporter.php

@@ -19,6 +19,8 @@ use PhpCsFixer\Differ\DiffConsoleFormatter;
 /**
 /**
  * @author Boris Gorbylev <ekho@ekho.name>
  * @author Boris Gorbylev <ekho@ekho.name>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class TextReporter implements ReporterInterface
 final class TextReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/FixReport/XmlReporter.php

@@ -20,6 +20,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 /**
 /**
  * @author Boris Gorbylev <ekho@ekho.name>
  * @author Boris Gorbylev <ekho@ekho.name>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class XmlReporter implements ReporterInterface
 final class XmlReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/JsonReporter.php

@@ -19,6 +19,8 @@ use PhpCsFixer\RuleSet\RuleSetDescriptionInterface;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class JsonReporter implements ReporterInterface
 final class JsonReporter implements ReporterInterface

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/ReportSummary.php

@@ -19,6 +19,8 @@ use PhpCsFixer\RuleSet\RuleSetDescriptionInterface;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class ReportSummary
 final class ReportSummary

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Console/Report/ListSetsReport/TextReporter.php

@@ -19,6 +19,8 @@ use PhpCsFixer\RuleSet\RuleSetDescriptionInterface;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class TextReporter implements ReporterInterface
 final class TextReporter implements ReporterInterface

+ 8 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/GithubClient.php

@@ -15,11 +15,18 @@ declare(strict_types=1);
 namespace PhpCsFixer\Console\SelfUpdate;
 namespace PhpCsFixer\Console\SelfUpdate;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class GithubClient implements GithubClientInterface
 final class GithubClient implements GithubClientInterface
 {
 {
-    private string $url = 'https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/tags';
+    private string $url;
+
+    public function __construct(string $url = 'https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/tags')
+    {
+        $this->url = $url;
+    }
 
 
     public function getTags(): array
     public function getTags(): array
     {
     {

+ 1 - 1
vendor/friendsofphp/php-cs-fixer/src/Console/SelfUpdate/NewVersionChecker.php

@@ -30,7 +30,7 @@ final class NewVersionChecker implements NewVersionCheckerInterface
     /**
     /**
      * @var null|list<string>
      * @var null|list<string>
      */
      */
-    private $availableVersions;
+    private ?array $availableVersions = null;
 
 
     public function __construct(GithubClientInterface $githubClient)
     public function __construct(GithubClientInterface $githubClient)
     {
     {

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Differ/DiffConsoleFormatter.php

@@ -20,6 +20,8 @@ use Symfony\Component\Console\Formatter\OutputFormatter;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class DiffConsoleFormatter
 final class DiffConsoleFormatter

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Differ/FullDiffer.php

@@ -20,6 +20,8 @@ use SebastianBergmann\Diff\Output\StrictUnifiedDiffOutputBuilder;
 /**
 /**
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  * @author Dariusz Rumiński <dariusz.ruminski@gmail.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class FullDiffer implements DifferInterface
 final class FullDiffer implements DifferInterface

+ 32 - 25
vendor/friendsofphp/php-cs-fixer/src/DocBlock/Annotation.php

@@ -31,7 +31,7 @@ final class Annotation
      *
      *
      * @var list<string>
      * @var list<string>
      */
      */
-    private static array $tags = [
+    private const TAGS = [
         'method',
         'method',
         'param',
         'param',
         'property',
         'property',
@@ -52,43 +52,32 @@ final class Annotation
 
 
     /**
     /**
      * The position of the first line of the annotation in the docblock.
      * The position of the first line of the annotation in the docblock.
-     *
-     * @var int
      */
      */
-    private $start;
+    private int $start;
 
 
     /**
     /**
      * The position of the last line of the annotation in the docblock.
      * The position of the last line of the annotation in the docblock.
-     *
-     * @var int
      */
      */
-    private $end;
+    private int $end;
 
 
     /**
     /**
      * The associated tag.
      * The associated tag.
-     *
-     * @var null|Tag
      */
      */
-    private $tag;
+    private ?Tag $tag = null;
 
 
     /**
     /**
      * Lazy loaded, cached types content.
      * Lazy loaded, cached types content.
-     *
-     * @var null|string
      */
      */
-    private $typesContent;
+    private ?string $typesContent = null;
 
 
     /**
     /**
      * The cached types.
      * The cached types.
      *
      *
      * @var null|list<string>
      * @var null|list<string>
      */
      */
-    private $types;
+    private ?array $types = null;
 
 
-    /**
-     * @var null|NamespaceAnalysis
-     */
-    private $namespace;
+    private ?NamespaceAnalysis $namespace = null;
 
 
     /**
     /**
      * @var list<NamespaceUseAnalysis>
      * @var list<NamespaceUseAnalysis>
@@ -127,7 +116,7 @@ final class Annotation
      */
      */
     public static function getTagsWithTypes(): array
     public static function getTagsWithTypes(): array
     {
     {
-        return self::$tags;
+        return self::TAGS;
     }
     }
 
 
     /**
     /**
@@ -214,9 +203,21 @@ final class Annotation
      */
      */
     public function setTypes(array $types): void
     public function setTypes(array $types): void
     {
     {
-        $pattern = '/'.preg_quote($this->getTypesContent(), '/').'/';
+        $origTypesContent = $this->getTypesContent();
+        $newTypesContent = implode(
+            // Fallback to union type is provided for backward compatibility (previously glue was set to `|` by default even when type was not composite)
+            // @TODO Better handling for cases where type is fixed (original type is not composite, but was made composite during fix)
+            $this->getTypeExpression()->getTypesGlue() ?? '|',
+            $types
+        );
+
+        if ($origTypesContent === $newTypesContent) {
+            return;
+        }
 
 
-        $this->lines[0]->setContent(Preg::replace($pattern, implode($this->getTypeExpression()->getTypesGlue(), $types), $this->lines[0]->getContent(), 1));
+        $pattern = '/'.preg_quote($origTypesContent, '/').'/';
+
+        $this->lines[0]->setContent(Preg::replace($pattern, $newTypesContent, $this->lines[0]->getContent(), 1));
 
 
         $this->clearCache();
         $this->clearCache();
     }
     }
@@ -228,11 +229,17 @@ final class Annotation
      */
      */
     public function getNormalizedTypes(): array
     public function getNormalizedTypes(): array
     {
     {
-        $normalized = array_map(static fn (string $type): string => strtolower($type), $this->getTypes());
+        $typeExpression = $this->getTypeExpression();
+        if (null === $typeExpression) {
+            return [];
+        }
 
 
-        sort($normalized);
+        $normalizedTypeExpression = $typeExpression
+            ->mapTypes(static fn (TypeExpression $v) => new TypeExpression(strtolower($v->toString()), null, []))
+            ->sortTypes(static fn (TypeExpression $a, TypeExpression $b) => $a->toString() <=> $b->toString())
+        ;
 
 
-        return $normalized;
+        return $normalizedTypeExpression->getTypes();
     }
     }
 
 
     /**
     /**
@@ -273,7 +280,7 @@ final class Annotation
 
 
     public function supportTypes(): bool
     public function supportTypes(): bool
     {
     {
-        return \in_array($this->getTag()->getName(), self::$tags, true);
+        return \in_array($this->getTag()->getName(), self::TAGS, true);
     }
     }
 
 
     /**
     /**

+ 1 - 1
vendor/friendsofphp/php-cs-fixer/src/DocBlock/DocBlock.php

@@ -209,7 +209,7 @@ final class DocBlock
     {
     {
         $index = $start;
         $index = $start;
 
 
-        while ($line = $this->getLine(++$index)) {
+        while (($line = $this->getLine(++$index)) !== null) {
             if ($line->containsATag()) {
             if ($line->containsATag()) {
                 // we've 100% reached the end of the description if we get here
                 // we've 100% reached the end of the description if we get here
                 break;
                 break;

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/DocBlock/ShortDescription.php

@@ -17,6 +17,8 @@ namespace PhpCsFixer\DocBlock;
 /**
 /**
  * This class represents a short description (aka summary) of a docblock.
  * This class represents a short description (aka summary) of a docblock.
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class ShortDescription
 final class ShortDescription

+ 205 - 60
vendor/friendsofphp/php-cs-fixer/src/DocBlock/TypeExpression.php

@@ -55,7 +55,8 @@ final class TypeExpression
             (?<nullable>\??\h*)
             (?<nullable>\??\h*)
             (?:
             (?:
                 (?<array_shape>
                 (?<array_shape>
-                    (?<array_shape_start>(?i)(?:array|list|object)(?-i)\h*\{\h*)
+                    (?<array_shape_name>(?i)(?:array|list|object)(?-i))
+                    (?<array_shape_start>\h*\{\h*)
                     (?<array_shape_inners>
                     (?<array_shape_inners>
                         (?<array_shape_inner>
                         (?<array_shape_inner>
                             (?<array_shape_inner_key>(?:(?&constant)|(?&identifier)|(?&name))\h*\??\h*:\h*|)
                             (?<array_shape_inner_key>(?:(?&constant)|(?&identifier)|(?&name))\h*\??\h*:\h*|)
@@ -65,7 +66,19 @@ final class TypeExpression
                             \h*,\h*
                             \h*,\h*
                             (?&array_shape_inner)
                             (?&array_shape_inner)
                         )*+
                         )*+
-                        (?:\h*,\h*)?
+                        (?:\h*,|(?!(?&array_shape_unsealed_variadic)))
+                    |)
+                    (?<array_shape_unsealed> # unsealed array shape, e.g. `...`. `...<string>`
+                        (?<array_shape_unsealed_variadic>\h*\.\.\.)
+                        (?<array_shape_unsealed_type>
+                            (?<array_shape_unsealed_type_start>\h*<\h*)
+                            (?<array_shape_unsealed_type_a>(?&types_inner))
+                            (?:
+                                (?<array_shape_unsealed_type_comma>\h*,\h*)
+                                (?<array_shape_unsealed_type_b>(?&array_shape_unsealed_type_a))
+                            |)
+                            \h*>
+                        |)
                     |)
                     |)
                     \h*\}
                     \h*\}
                 )
                 )
@@ -109,7 +122,7 @@ final class TypeExpression
                             \h*,\h*
                             \h*,\h*
                             (?&callable_argument)
                             (?&callable_argument)
                         )*+
                         )*+
-                        (?:\h*,\h*)?
+                        (?:\h*,)?
                     |)
                     |)
                     \h*\)
                     \h*\)
                     (?:
                     (?:
@@ -119,20 +132,22 @@ final class TypeExpression
                 )
                 )
                 |
                 |
                 (?<generic> # generic syntax, e.g.: `array<int, \Foo\Bar>`
                 (?<generic> # generic syntax, e.g.: `array<int, \Foo\Bar>`
-                    (?<generic_start>(?&name)\h*<\h*)
+                    (?<generic_name>(?&name))
+                    (?<generic_start>\h*<\h*)
                     (?<generic_types>
                     (?<generic_types>
                         (?&types_inner)
                         (?&types_inner)
                         (?:
                         (?:
                             \h*,\h*
                             \h*,\h*
                             (?&types_inner)
                             (?&types_inner)
                         )*+
                         )*+
-                        (?:\h*,\h*)?
+                        (?:\h*,)?
                     )
                     )
                     \h*>
                     \h*>
                 )
                 )
                 |
                 |
                 (?<class_constant> # class constants with optional wildcard, e.g.: `Foo::*`, `Foo::CONST_A`, `FOO::CONST_*`
                 (?<class_constant> # class constants with optional wildcard, e.g.: `Foo::*`, `Foo::CONST_A`, `FOO::CONST_*`
-                    (?&name)::\*?(?:(?&identifier)\*?)*
+                    (?<class_constant_name>(?&name))
+                    ::\*?(?:(?&identifier)\*?)*
                 )
                 )
                 |
                 |
                 (?<constant> # single constant value (case insensitive), e.g.: 1, -1.8E+6, `\'a\'`
                 (?<constant> # single constant value (case insensitive), e.g.: 1, -1.8E+6, `\'a\'`
@@ -208,20 +223,17 @@ final class TypeExpression
 
 
     private string $value;
     private string $value;
 
 
-    private bool $isUnionType = false;
+    private bool $isCompositeType;
 
 
-    private string $typesGlue = '|';
+    /** @var null|'&'|'|' */
+    private ?string $typesGlue = null;
 
 
-    /**
-     * @var list<array{start_index: int, expression: self}>
-     */
+    /** @var list<array{start_index: int, expression: self}> */
     private array $innerTypeExpressions = [];
     private array $innerTypeExpressions = [];
 
 
     private ?NamespaceAnalysis $namespace;
     private ?NamespaceAnalysis $namespace;
 
 
-    /**
-     * @var list<NamespaceUseAnalysis>
-     */
+    /** @var list<NamespaceUseAnalysis> */
     private array $namespaceUses;
     private array $namespaceUses;
 
 
     /**
     /**
@@ -246,7 +258,7 @@ final class TypeExpression
      */
      */
     public function getTypes(): array
     public function getTypes(): array
     {
     {
-        if ($this->isUnionType) {
+        if ($this->isCompositeType) {
             return array_map(
             return array_map(
                 static fn (array $type) => $type['expression']->toString(),
                 static fn (array $type) => $type['expression']->toString(),
                 $this->innerTypeExpressions,
                 $this->innerTypeExpressions,
@@ -256,69 +268,105 @@ final class TypeExpression
         return [$this->value];
         return [$this->value];
     }
     }
 
 
+    /**
+     * Determines if type expression is a composite type (union or intersection).
+     */
+    public function isCompositeType(): bool
+    {
+        return $this->isCompositeType;
+    }
+
     public function isUnionType(): bool
     public function isUnionType(): bool
     {
     {
-        return $this->isUnionType;
+        return $this->isCompositeType && '|' === $this->typesGlue;
     }
     }
 
 
-    public function getTypesGlue(): string
+    public function isIntersectionType(): bool
     {
     {
-        return $this->typesGlue;
+        return $this->isCompositeType && '&' === $this->typesGlue;
     }
     }
 
 
     /**
     /**
-     * @param \Closure(self): void $callback
+     * @return null|'&'|'|'
      */
      */
-    public function walkTypes(\Closure $callback): void
+    public function getTypesGlue(): ?string
     {
     {
-        $innerValueOrig = $this->value;
+        return $this->typesGlue;
+    }
 
 
+    /**
+     * @param \Closure(self): self $callback
+     */
+    public function mapTypes(\Closure $callback): self
+    {
+        $value = $this->value;
         $startIndexOffset = 0;
         $startIndexOffset = 0;
 
 
         foreach ($this->innerTypeExpressions as [
         foreach ($this->innerTypeExpressions as [
             'start_index' => $startIndexOrig,
             'start_index' => $startIndexOrig,
             'expression' => $inner,
             'expression' => $inner,
         ]) {
         ]) {
-            $innerLengthOrig = \strlen($inner->toString());
+            $innerValueOrig = $inner->value;
 
 
-            $inner->walkTypes($callback);
+            $inner = $inner->mapTypes($callback);
 
 
-            $this->value = substr_replace(
-                $this->value,
-                $inner->toString(),
-                $startIndexOrig + $startIndexOffset,
-                $innerLengthOrig
-            );
+            if ($inner->value !== $innerValueOrig) {
+                $value = substr_replace(
+                    $value,
+                    $inner->value,
+                    $startIndexOrig + $startIndexOffset,
+                    \strlen($innerValueOrig)
+                );
 
 
-            $startIndexOffset += \strlen($inner->toString()) - $innerLengthOrig;
+                $startIndexOffset += \strlen($inner->value) - \strlen($innerValueOrig);
+            }
         }
         }
 
 
-        $callback($this);
+        $type = $value === $this->value
+            ? $this
+            : $this->inner($value);
 
 
-        if ($this->value !== $innerValueOrig) {
-            $this->isUnionType = false;
-            $this->typesGlue = '|';
-            $this->innerTypeExpressions = [];
+        return $callback($type);
+    }
 
 
-            $this->parse();
-        }
+    /**
+     * @param \Closure(self): void $callback
+     */
+    public function walkTypes(\Closure $callback): void
+    {
+        $this->mapTypes(static function (self $type) use ($callback) {
+            $valueOrig = $type->value;
+            $callback($type);
+            \assert($type->value === $valueOrig);
+
+            return $type;
+        });
     }
     }
 
 
     /**
     /**
      * @param \Closure(self, self): (-1|0|1) $compareCallback
      * @param \Closure(self, self): (-1|0|1) $compareCallback
      */
      */
-    public function sortTypes(\Closure $compareCallback): void
+    public function sortTypes(\Closure $compareCallback): self
     {
     {
-        $this->walkTypes(static function (self $type) use ($compareCallback): void {
-            if ($type->isUnionType) {
-                $type->innerTypeExpressions = Utils::stableSort(
+        return $this->mapTypes(function (self $type) use ($compareCallback): self {
+            if ($type->isCompositeType) {
+                $innerTypeExpressions = Utils::stableSort(
                     $type->innerTypeExpressions,
                     $type->innerTypeExpressions,
-                    static fn (array $type): self => $type['expression'],
+                    static fn (array $v): self => $v['expression'],
                     $compareCallback,
                     $compareCallback,
                 );
                 );
 
 
-                $type->value = implode($type->getTypesGlue(), $type->getTypes());
+                if ($innerTypeExpressions !== $type->innerTypeExpressions) {
+                    $value = implode(
+                        $type->getTypesGlue(),
+                        array_map(static fn (array $v): string => $v['expression']->toString(), $innerTypeExpressions)
+                    );
+
+                    return $this->inner($value);
+                }
             }
             }
+
+            return $type;
         });
         });
     }
     }
 
 
@@ -376,10 +424,13 @@ final class TypeExpression
 
 
     private function parse(): void
     private function parse(): void
     {
     {
+        $seenGlues = null;
+        $innerValues = [];
+
         $index = 0;
         $index = 0;
         while (true) {
         while (true) {
             Preg::match(
             Preg::match(
-                '{\G'.self::REGEX_TYPE.'(?:\h*(?<glue>[|&])\h*|$)}',
+                '{\G'.self::REGEX_TYPE.'(?<glue_raw>\h*(?<glue>[|&])\h*(?!$)|$)}',
                 $this->value,
                 $this->value,
                 $matches,
                 $matches,
                 PREG_OFFSET_CAPTURE,
                 PREG_OFFSET_CAPTURE,
@@ -390,18 +441,24 @@ final class TypeExpression
                 throw new \Exception('Unable to parse phpdoc type '.var_export($this->value, true));
                 throw new \Exception('Unable to parse phpdoc type '.var_export($this->value, true));
             }
             }
 
 
-            if (!$this->isUnionType) {
+            if (null === $seenGlues) {
                 if (($matches['glue'][0] ?? '') === '') {
                 if (($matches['glue'][0] ?? '') === '') {
                     break;
                     break;
                 }
                 }
 
 
-                $this->isUnionType = true;
-                $this->typesGlue = $matches['glue'][0];
+                $seenGlues = ['|' => false, '&' => false];
             }
             }
 
 
-            $this->innerTypeExpressions[] = [
+            if (($matches['glue'][0] ?? '') !== '') {
+                \assert(isset($seenGlues[$matches['glue'][0]]));
+                $seenGlues[$matches['glue'][0]] = true;
+            }
+
+            $innerValues[] = [
                 'start_index' => $index,
                 'start_index' => $index,
-                'expression' => $this->inner($matches['type'][0]),
+                'value' => $matches['type'][0],
+                'next_glue' => $matches['glue'][0] ?? null,
+                'next_glue_raw' => $matches['glue_raw'][0] ?? null,
             ];
             ];
 
 
             $consumedValueLength = \strlen($matches[0][0]);
             $consumedValueLength = \strlen($matches[0][0]);
@@ -410,27 +467,82 @@ final class TypeExpression
             if (\strlen($this->value) <= $index) {
             if (\strlen($this->value) <= $index) {
                 \assert(\strlen($this->value) === $index);
                 \assert(\strlen($this->value) === $index);
 
 
+                $seenGlues = array_filter($seenGlues);
+                \assert([] !== $seenGlues);
+
+                $this->isCompositeType = true;
+                $this->typesGlue = array_key_first($seenGlues);
+
+                if (1 === \count($seenGlues)) {
+                    foreach ($innerValues as $innerValue) {
+                        $this->innerTypeExpressions[] = [
+                            'start_index' => $innerValue['start_index'],
+                            'expression' => $this->inner($innerValue['value']),
+                        ];
+                    }
+                } else {
+                    for ($i = 0; $i < \count($innerValues); ++$i) {
+                        $innerStartIndex = $innerValues[$i]['start_index'];
+                        $innerValue = '';
+                        while (true) {
+                            $innerValue .= $innerValues[$i]['value'];
+
+                            if (($innerValues[$i]['next_glue'] ?? $this->typesGlue) === $this->typesGlue) {
+                                break;
+                            }
+
+                            $innerValue .= $innerValues[$i]['next_glue_raw'];
+
+                            ++$i;
+                        }
+
+                        $this->innerTypeExpressions[] = [
+                            'start_index' => $innerStartIndex,
+                            'expression' => $this->inner($innerValue),
+                        ];
+                    }
+                }
+
                 return;
                 return;
             }
             }
         }
         }
 
 
-        $nullableLength = \strlen($matches['nullable'][0]);
-        $index = $nullableLength;
+        $this->isCompositeType = false;
+
+        if ('' !== $matches['nullable'][0]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => \strlen($matches['nullable'][0]),
+                'expression' => $this->inner(substr($matches['type'][0], \strlen($matches['nullable'][0]))),
+            ];
+        } elseif ('' !== $matches['array'][0]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => 0,
+                'expression' => $this->inner(substr($matches['type'][0], 0, -\strlen($matches['array'][0]))),
+            ];
+        } elseif ('' !== ($matches['generic'][0] ?? '') && 0 === $matches['generic'][1]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => 0,
+                'expression' => $this->inner($matches['generic_name'][0]),
+            ];
 
 
-        if ('' !== ($matches['generic'][0] ?? '') && $matches['generic'][1] === $nullableLength) {
             $this->parseCommaSeparatedInnerTypes(
             $this->parseCommaSeparatedInnerTypes(
-                $index + \strlen($matches['generic_start'][0]),
+                \strlen($matches['generic_name'][0]) + \strlen($matches['generic_start'][0]),
                 $matches['generic_types'][0]
                 $matches['generic_types'][0]
             );
             );
-        } elseif ('' !== ($matches['callable'][0] ?? '') && $matches['callable'][1] === $nullableLength) {
+        } elseif ('' !== ($matches['callable'][0] ?? '') && 0 === $matches['callable'][1]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => 0,
+                'expression' => $this->inner($matches['callable_name'][0]),
+            ];
+
             $this->parseCallableTemplateInnerTypes(
             $this->parseCallableTemplateInnerTypes(
-                $index + \strlen($matches['callable_name'][0])
+                \strlen($matches['callable_name'][0])
                     + \strlen($matches['callable_template_start'][0]),
                     + \strlen($matches['callable_template_start'][0]),
                 $matches['callable_template_inners'][0]
                 $matches['callable_template_inners'][0]
             );
             );
 
 
             $this->parseCallableArgumentTypes(
             $this->parseCallableArgumentTypes(
-                $index + \strlen($matches['callable_name'][0])
+                \strlen($matches['callable_name'][0])
                     + \strlen($matches['callable_template'][0])
                     + \strlen($matches['callable_template'][0])
                     + \strlen($matches['callable_start'][0]),
                     + \strlen($matches['callable_start'][0]),
                 $matches['callable_arguments'][0]
                 $matches['callable_arguments'][0]
@@ -442,13 +554,41 @@ final class TypeExpression
                     'expression' => $this->inner($matches['callable_return'][0]),
                     'expression' => $this->inner($matches['callable_return'][0]),
                 ];
                 ];
             }
             }
-        } elseif ('' !== ($matches['array_shape'][0] ?? '') && $matches['array_shape'][1] === $nullableLength) {
+        } elseif ('' !== ($matches['array_shape'][0] ?? '') && 0 === $matches['array_shape'][1]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => 0,
+                'expression' => $this->inner($matches['array_shape_name'][0]),
+            ];
+
+            $nextIndex = \strlen($matches['array_shape_name'][0]) + \strlen($matches['array_shape_start'][0]);
+
             $this->parseArrayShapeInnerTypes(
             $this->parseArrayShapeInnerTypes(
-                $index + \strlen($matches['array_shape_start'][0]),
+                $nextIndex,
                 $matches['array_shape_inners'][0]
                 $matches['array_shape_inners'][0]
             );
             );
-        } elseif ('' !== ($matches['parenthesized'][0] ?? '') && $matches['parenthesized'][1] === $nullableLength) {
-            $index += \strlen($matches['parenthesized_start'][0]);
+
+            if ('' !== ($matches['array_shape_unsealed_type'][0] ?? '')) {
+                $nextIndex += \strlen($matches['array_shape_inners'][0])
+                    + \strlen($matches['array_shape_unsealed_variadic'][0])
+                    + \strlen($matches['array_shape_unsealed_type_start'][0]);
+
+                $this->innerTypeExpressions[] = [
+                    'start_index' => $nextIndex,
+                    'expression' => $this->inner($matches['array_shape_unsealed_type_a'][0]),
+                ];
+
+                if ('' !== ($matches['array_shape_unsealed_type_b'][0] ?? '')) {
+                    $nextIndex += \strlen($matches['array_shape_unsealed_type_a'][0])
+                        + \strlen($matches['array_shape_unsealed_type_comma'][0]);
+
+                    $this->innerTypeExpressions[] = [
+                        'start_index' => $nextIndex,
+                        'expression' => $this->inner($matches['array_shape_unsealed_type_b'][0]),
+                    ];
+                }
+            }
+        } elseif ('' !== ($matches['parenthesized'][0] ?? '') && 0 === $matches['parenthesized'][1]) {
+            $index = \strlen($matches['parenthesized_start'][0]);
 
 
             if ('' !== ($matches['conditional'][0] ?? '')) {
             if ('' !== ($matches['conditional'][0] ?? '')) {
                 if ('' !== ($matches['conditional_cond_left_types'][0] ?? '')) {
                 if ('' !== ($matches['conditional_cond_left_types'][0] ?? '')) {
@@ -484,6 +624,11 @@ final class TypeExpression
                     'expression' => $this->inner($matches['parenthesized_types'][0]),
                     'expression' => $this->inner($matches['parenthesized_types'][0]),
                 ];
                 ];
             }
             }
+        } elseif ('' !== $matches['class_constant'][0]) {
+            $this->innerTypeExpressions[] = [
+                'start_index' => 0,
+                'expression' => $this->inner($matches['class_constant_name'][0]),
+            ];
         }
         }
     }
     }
 
 

+ 6 - 8
vendor/friendsofphp/php-cs-fixer/src/Doctrine/Annotation/DocLexer.php

@@ -150,14 +150,12 @@ final class DocLexer
 
 
     private function scan(string $input): void
     private function scan(string $input): void
     {
     {
-        if (!isset($this->regex)) {
-            $this->regex = \sprintf(
-                '/(%s)|%s/%s',
-                implode(')|(', $this->getCatchablePatterns()),
-                implode('|', $this->getNonCatchablePatterns()),
-                'iu'
-            );
-        }
+        $this->regex ??= \sprintf(
+            '/(%s)|%s/%s',
+            implode(')|(', $this->getCatchablePatterns()),
+            implode('|', $this->getNonCatchablePatterns()),
+            'iu'
+        );
 
 
         $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE;
         $flags = PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_OFFSET_CAPTURE;
         $matches = Preg::split($this->regex, $input, -1, $flags);
         $matches = Preg::split($this->regex, $input, -1, $flags);

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Documentation/DocumentationLocator.php

@@ -19,6 +19,8 @@ use PhpCsFixer\Preg;
 use PhpCsFixer\Utils;
 use PhpCsFixer\Utils;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class DocumentationLocator
 final class DocumentationLocator

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Documentation/FixerDocumentGenerator.php

@@ -34,6 +34,8 @@ use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Utils;
 use PhpCsFixer\Utils;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class FixerDocumentGenerator
 final class FixerDocumentGenerator

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Documentation/RuleSetDocumentationGenerator.php

@@ -21,6 +21,8 @@ use PhpCsFixer\RuleSet\RuleSetDescriptionInterface;
 use PhpCsFixer\Utils;
 use PhpCsFixer\Utils;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class RuleSetDocumentationGenerator
 final class RuleSetDocumentationGenerator

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Error/Error.php

@@ -19,6 +19,8 @@ namespace PhpCsFixer\Error;
  *
  *
  * @author Andreas Möller <am@localheinz.com>
  * @author Andreas Möller <am@localheinz.com>
  *
  *
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class Error implements \JsonSerializable
 final class Error implements \JsonSerializable

+ 2 - 0
vendor/friendsofphp/php-cs-fixer/src/Error/SourceExceptionFactory.php

@@ -15,6 +15,8 @@ declare(strict_types=1);
 namespace PhpCsFixer\Error;
 namespace PhpCsFixer\Error;
 
 
 /**
 /**
+ * @readonly
+ *
  * @internal
  * @internal
  */
  */
 final class SourceExceptionFactory
 final class SourceExceptionFactory

+ 1 - 4
vendor/friendsofphp/php-cs-fixer/src/FileReader.php

@@ -25,10 +25,7 @@ namespace PhpCsFixer;
  */
  */
 final class FileReader
 final class FileReader
 {
 {
-    /**
-     * @var null|string
-     */
-    private $stdinContent;
+    private ?string $stdinContent = null;
 
 
     public static function createSingleton(): self
     public static function createSingleton(): self
     {
     {

+ 27 - 26
vendor/friendsofphp/php-cs-fixer/src/Fixer/AbstractPhpUnitFixer.php

@@ -18,9 +18,10 @@ use PhpCsFixer\AbstractFixer;
 use PhpCsFixer\DocBlock\DocBlock;
 use PhpCsFixer\DocBlock\DocBlock;
 use PhpCsFixer\DocBlock\Line;
 use PhpCsFixer\DocBlock\Line;
 use PhpCsFixer\Indicator\PhpUnitTestCaseIndicator;
 use PhpCsFixer\Indicator\PhpUnitTestCaseIndicator;
+use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis;
 use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer;
+use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
-use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\WhitespacesAnalyzer;
 use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Token;
@@ -145,6 +146,27 @@ abstract class AbstractPhpUnitFixer extends AbstractFixer
         }
         }
     }
     }
 
 
+    final protected function isTestAttributePresent(Tokens $tokens, int $index): bool
+    {
+        $attributeIndex = $tokens->getPrevTokenOfKind($index, ['{', [T_ATTRIBUTE]]);
+        if (!$tokens[$attributeIndex]->isGivenKind(T_ATTRIBUTE)) {
+            return false;
+        }
+
+        $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens);
+
+        foreach (AttributeAnalyzer::collect($tokens, $attributeIndex) as $attributeAnalysis) {
+            foreach ($attributeAnalysis->getAttributes() as $attribute) {
+                $attributeName = strtolower($fullyQualifiedNameAnalyzer->getFullyQualifiedName($attribute['name'], $attribute['start'], NamespaceUseAnalysis::TYPE_CLASS));
+                if ('phpunit\framework\attributes\test' === $attributeName) {
+                    return true;
+                }
+            }
+        }
+
+        return false;
+    }
+
     private function createDocBlock(Tokens $tokens, int $docBlockIndex, string $annotation): void
     private function createDocBlock(Tokens $tokens, int $docBlockIndex, string $annotation): void
     {
     {
         $lineEnd = $this->whitespacesConfig->getLineEnding();
         $lineEnd = $this->whitespacesConfig->getLineEnding();
@@ -189,6 +211,7 @@ abstract class AbstractPhpUnitFixer extends AbstractFixer
         $lines = $this->addInternalAnnotation($doc, $tokens, $docBlockIndex, $annotation);
         $lines = $this->addInternalAnnotation($doc, $tokens, $docBlockIndex, $annotation);
         $lines = implode('', $lines);
         $lines = implode('', $lines);
 
 
+        $tokens->getNamespaceDeclarations();
         $tokens[$docBlockIndex] = new Token([T_DOC_COMMENT, $lines]);
         $tokens[$docBlockIndex] = new Token([T_DOC_COMMENT, $lines]);
     }
     }
 
 
@@ -214,9 +237,11 @@ abstract class AbstractPhpUnitFixer extends AbstractFixer
         }
         }
         $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index);
         $index = $tokens->findBlockStart(Tokens::BLOCK_TYPE_ATTRIBUTE, $index);
 
 
+        $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens);
+
         foreach (AttributeAnalyzer::collect($tokens, $index) as $attributeAnalysis) {
         foreach (AttributeAnalyzer::collect($tokens, $index) as $attributeAnalysis) {
             foreach ($attributeAnalysis->getAttributes() as $attribute) {
             foreach ($attributeAnalysis->getAttributes() as $attribute) {
-                if (\in_array(ltrim(self::getFullyQualifiedName($tokens, $attribute['name']), '\\'), $preventingAttributes, true)) {
+                if (\in_array(strtolower($fullyQualifiedNameAnalyzer->getFullyQualifiedName($attribute['name'], $attribute['start'], NamespaceUseAnalysis::TYPE_CLASS)), $preventingAttributes, true)) {
                     return true;
                     return true;
                 }
                 }
             }
             }
@@ -225,30 +250,6 @@ abstract class AbstractPhpUnitFixer extends AbstractFixer
         return false;
         return false;
     }
     }
 
 
-    private static function getFullyQualifiedName(Tokens $tokens, string $name): string
-    {
-        $name = strtolower($name);
-
-        $names = [];
-        foreach ((new NamespaceUsesAnalyzer())->getDeclarationsFromTokens($tokens) as $namespaceUseAnalysis) {
-            $names[strtolower($namespaceUseAnalysis->getShortName())] = strtolower($namespaceUseAnalysis->getFullName());
-        }
-
-        foreach ($names as $shortName => $fullName) {
-            if ($name === $shortName) {
-                return $fullName;
-            }
-
-            if (!str_starts_with($name, $shortName.'\\')) {
-                continue;
-            }
-
-            return $fullName.substr($name, \strlen($shortName));
-        }
-
-        return $name;
-    }
-
     /**
     /**
      * @return list<Line>
      * @return list<Line>
      */
      */

+ 1 - 1
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/BacktickToShellExecFixer.php

@@ -53,7 +53,7 @@ final class BacktickToShellExecFixer extends AbstractFixer
     /**
     /**
      * {@inheritdoc}
      * {@inheritdoc}
      *
      *
-     * Must run before EscapeImplicitBackslashesFixer, ExplicitStringVariableFixer, NativeFunctionInvocationFixer, SingleQuoteFixer, StringImplicitBackslashesFixer.
+     * Must run before ExplicitStringVariableFixer, NativeFunctionInvocationFixer, SingleQuoteFixer.
      */
      */
     public function getPriority(): int
     public function getPriority(): int
     {
     {

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/EregToPregFixer.php

@@ -33,7 +33,7 @@ final class EregToPregFixer extends AbstractFixer
      * @var list<array<int, string>> the list of the ext/ereg function names, their preg equivalent and the preg modifier(s), if any
      * @var list<array<int, string>> the list of the ext/ereg function names, their preg equivalent and the preg modifier(s), if any
      *                               all condensed in an array of arrays
      *                               all condensed in an array of arrays
      */
      */
-    private static array $functions = [
+    private const FUNCTIONS = [
         ['ereg', 'preg_match', ''],
         ['ereg', 'preg_match', ''],
         ['eregi', 'preg_match', 'i'],
         ['eregi', 'preg_match', 'i'],
         ['ereg_replace', 'preg_replace', ''],
         ['ereg_replace', 'preg_replace', ''],
@@ -82,7 +82,7 @@ final class EregToPregFixer extends AbstractFixer
         $end = $tokens->count() - 1;
         $end = $tokens->count() - 1;
         $functionsAnalyzer = new FunctionsAnalyzer();
         $functionsAnalyzer = new FunctionsAnalyzer();
 
 
-        foreach (self::$functions as $map) {
+        foreach (self::FUNCTIONS as $map) {
             // the sequence is the function name, followed by "(" and a quoted string
             // the sequence is the function name, followed by "(" and a quoted string
             $seq = [[T_STRING, $map[0]], '(', [T_CONSTANT_ENCAPSED_STRING]];
             $seq = [[T_STRING, $map[0]], '(', [T_CONSTANT_ENCAPSED_STRING]];
             $currIndex = 0;
             $currIndex = 0;

+ 58 - 19
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/MbStrFunctionsFixer.php

@@ -14,18 +14,20 @@ declare(strict_types=1);
 
 
 namespace PhpCsFixer\Fixer\Alias;
 namespace PhpCsFixer\Fixer\Alias;
 
 
-use PhpCsFixer\AbstractFunctionReferenceFixer;
+use PhpCsFixer\AbstractFixer;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\ArgumentsAnalyzer;
+use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
+use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Tokenizer\Tokens;
 
 
 /**
 /**
  * @author Filippo Tessarotto <zoeslam@gmail.com>
  * @author Filippo Tessarotto <zoeslam@gmail.com>
  */
  */
-final class MbStrFunctionsFixer extends AbstractFunctionReferenceFixer
+final class MbStrFunctionsFixer extends AbstractFixer
 {
 {
     /**
     /**
      * list of the string-related function names and their mb_ equivalent.
      * list of the string-related function names and their mb_ equivalent.
@@ -85,6 +87,26 @@ final class MbStrFunctionsFixer extends AbstractFunctionReferenceFixer
         );
         );
     }
     }
 
 
+    public function isCandidate(Tokens $tokens): bool
+    {
+        return $tokens->isTokenKindFound(T_STRING);
+    }
+
+    public function isRisky(): bool
+    {
+        return true;
+    }
+
+    /**
+     * {@inheritdoc}
+     *
+     * Must run before NativeFunctionInvocationFixer.
+     */
+    public function getPriority(): int
+    {
+        return 2;
+    }
+
     public function getDefinition(): FixerDefinitionInterface
     public function getDefinition(): FixerDefinitionInterface
     {
     {
         return new FixerDefinition(
         return new FixerDefinition(
@@ -115,27 +137,44 @@ $a = substr_count($a, $b);
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     {
     {
         $argumentsAnalyzer = new ArgumentsAnalyzer();
         $argumentsAnalyzer = new ArgumentsAnalyzer();
-        foreach ($this->functions as $functionIdentity => $functionReplacement) {
-            $currIndex = 0;
-            do {
-                // try getting function reference and translate boundaries for humans
-                $boundaries = $this->find($functionIdentity, $tokens, $currIndex, $tokens->count() - 1);
-                if (null === $boundaries) {
-                    // next function search, as current one not found
-                    continue 2;
-                }
+        $functionsAnalyzer = new FunctionsAnalyzer();
+
+        for ($index = $tokens->count() - 1; $index > 0; --$index) {
+            if (!$tokens[$index]->isGivenKind(T_STRING)) {
+                continue;
+            }
+
+            $lowercasedContent = strtolower($tokens[$index]->getContent());
+            if (!isset($this->functions[$lowercasedContent])) {
+                continue;
+            }
 
 
-                [$functionName, $openParenthesis, $closeParenthesis] = $boundaries;
-                $count = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis);
-                if (!\in_array($count, $functionReplacement['argumentCount'], true)) {
-                    continue 2;
+            // is it a global function call?
+            if ($functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) {
+                $openParenthesis = $tokens->getNextMeaningfulToken($index);
+                $closeParenthesis = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $openParenthesis);
+                $numberOfArguments = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis);
+                if (!\in_array($numberOfArguments, $this->functions[$lowercasedContent]['argumentCount'], true)) {
+                    continue;
                 }
                 }
+                $tokens[$index] = new Token([T_STRING, $this->functions[$lowercasedContent]['alternativeName']]);
 
 
-                // analysing cursor shift, so nested calls could be processed
-                $currIndex = $openParenthesis;
+                continue;
+            }
 
 
-                $tokens[$functionName] = new Token([T_STRING, $functionReplacement['alternativeName']]);
-            } while (null !== $currIndex);
+            // is it a global function import?
+            $functionIndex = $tokens->getPrevMeaningfulToken($index);
+            if ($tokens[$functionIndex]->isGivenKind(T_NS_SEPARATOR)) {
+                $functionIndex = $tokens->getPrevMeaningfulToken($functionIndex);
+            }
+            if (!$tokens[$functionIndex]->isGivenKind(CT::T_FUNCTION_IMPORT)) {
+                continue;
+            }
+            $useIndex = $tokens->getPrevMeaningfulToken($functionIndex);
+            if (!$tokens[$useIndex]->isGivenKind(T_USE)) {
+                continue;
+            }
+            $tokens[$index] = new Token([T_STRING, $this->functions[$lowercasedContent]['alternativeName']]);
         }
         }
     }
     }
 }
 }

+ 112 - 7
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/ModernizeStrposFixer.php

@@ -15,6 +15,11 @@ declare(strict_types=1);
 namespace PhpCsFixer\Fixer\Alias;
 namespace PhpCsFixer\Fixer\Alias;
 
 
 use PhpCsFixer\AbstractFixer;
 use PhpCsFixer\AbstractFixer;
+use PhpCsFixer\Fixer\ConfigurableFixerInterface;
+use PhpCsFixer\Fixer\ConfigurableFixerTrait;
+use PhpCsFixer\FixerConfiguration\FixerConfigurationResolver;
+use PhpCsFixer\FixerConfiguration\FixerConfigurationResolverInterface;
+use PhpCsFixer\FixerConfiguration\FixerOptionBuilder;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
@@ -25,9 +30,21 @@ use PhpCsFixer\Tokenizer\Tokens;
 
 
 /**
 /**
  * @author Alexander M. Turek <me@derrabus.de>
  * @author Alexander M. Turek <me@derrabus.de>
+ *
+ * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
+ *
+ * @phpstan-type _AutogeneratedInputConfiguration array{
+ *  modernize_stripos?: bool,
+ * }
+ * @phpstan-type _AutogeneratedComputedConfiguration array{
+ *  modernize_stripos: bool,
+ * }
  */
  */
-final class ModernizeStrposFixer extends AbstractFixer
+final class ModernizeStrposFixer extends AbstractFixer implements ConfigurableFixerInterface
 {
 {
+    /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */
+    use ConfigurableFixerTrait;
+
     private const REPLACEMENTS = [
     private const REPLACEMENTS = [
         [
         [
             'operator' => [T_IS_IDENTICAL, '==='],
             'operator' => [T_IS_IDENTICAL, '==='],
@@ -55,10 +72,12 @@ final class ModernizeStrposFixer extends AbstractFixer
         ],
         ],
     ];
     ];
 
 
+    private bool $modernizeStripos = false;
+
     public function getDefinition(): FixerDefinitionInterface
     public function getDefinition(): FixerDefinitionInterface
     {
     {
         return new FixerDefinition(
         return new FixerDefinition(
-            'Replace `strpos()` calls with `str_starts_with()` or `str_contains()` if possible.',
+            'Replace `strpos()` and `stripos()` calls with `str_starts_with()` or `str_contains()` if possible.',
             [
             [
                 new CodeSample(
                 new CodeSample(
                     '<?php
                     '<?php
@@ -66,11 +85,24 @@ if (strpos($haystack, $needle) === 0) {}
 if (strpos($haystack, $needle) !== 0) {}
 if (strpos($haystack, $needle) !== 0) {}
 if (strpos($haystack, $needle) !== false) {}
 if (strpos($haystack, $needle) !== false) {}
 if (strpos($haystack, $needle) === false) {}
 if (strpos($haystack, $needle) === false) {}
-'
+',
+                ),
+                new CodeSample(
+                    '<?php
+if (strpos($haystack, $needle) === 0) {}
+if (strpos($haystack, $needle) !== 0) {}
+if (strpos($haystack, $needle) !== false) {}
+if (strpos($haystack, $needle) === false) {}
+if (stripos($haystack, $needle) === 0) {}
+if (stripos($haystack, $needle) !== 0) {}
+if (stripos($haystack, $needle) !== false) {}
+if (stripos($haystack, $needle) === false) {}
+',
+                    ['modernize_stripos' => true]
                 ),
                 ),
             ],
             ],
             null,
             null,
-            'Risky if `strpos`, `str_starts_with` or `str_contains` functions are overridden.'
+            'Risky if `strpos`, `stripos`, `str_starts_with`, `str_contains` or `strtolower` functions are overridden.'
         );
         );
     }
     }
 
 
@@ -95,14 +127,36 @@ if (strpos($haystack, $needle) === false) {}
         return true;
         return true;
     }
     }
 
 
+    protected function configurePostNormalisation(): void
+    {
+        if (isset($this->configuration['modernize_stripos']) && true === $this->configuration['modernize_stripos']) {
+            $this->modernizeStripos = true;
+        }
+    }
+
+    protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
+    {
+        return new FixerConfigurationResolver([
+            (new FixerOptionBuilder('modernize_stripos', 'Whether to modernize `stripos` calls as well.'))
+                ->setAllowedTypes(['bool'])
+                ->setDefault(false) // @TODO change to "true" on next major 4.0
+                ->getOption(),
+        ]);
+    }
+
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     {
     {
         $functionsAnalyzer = new FunctionsAnalyzer();
         $functionsAnalyzer = new FunctionsAnalyzer();
         $argumentsAnalyzer = new ArgumentsAnalyzer();
         $argumentsAnalyzer = new ArgumentsAnalyzer();
 
 
+        $modernizeCandidates = [[T_STRING, 'strpos']];
+        if ($this->modernizeStripos) {
+            $modernizeCandidates[] = [T_STRING, 'stripos'];
+        }
+
         for ($index = \count($tokens) - 1; $index > 0; --$index) {
         for ($index = \count($tokens) - 1; $index > 0; --$index) {
             // find candidate function call
             // find candidate function call
-            if (!$tokens[$index]->equals([T_STRING, 'strpos'], false) || !$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) {
+            if (!$tokens[$index]->equalsAny($modernizeCandidates, false) || !$functionsAnalyzer->isGlobalFunctionCall($tokens, $index)) {
                 continue;
                 continue;
             }
             }
 
 
@@ -123,7 +177,8 @@ if (strpos($haystack, $needle) === false) {}
             }
             }
 
 
             if (null !== $compareTokens) {
             if (null !== $compareTokens) {
-                $this->fixCall($tokens, $index, $compareTokens);
+                $isCaseInsensitive = $tokens[$index]->equals([T_STRING, 'stripos'], false);
+                $this->fixCall($tokens, $index, $compareTokens, $isCaseInsensitive);
             }
             }
         }
         }
     }
     }
@@ -131,7 +186,7 @@ if (strpos($haystack, $needle) === false) {}
     /**
     /**
      * @param array{operator_index: int, operand_index: int} $operatorIndices
      * @param array{operator_index: int, operand_index: int} $operatorIndices
      */
      */
-    private function fixCall(Tokens $tokens, int $functionIndex, array $operatorIndices): void
+    private function fixCall(Tokens $tokens, int $functionIndex, array $operatorIndices, bool $isCaseInsensitive): void
     {
     {
         foreach (self::REPLACEMENTS as $replacement) {
         foreach (self::REPLACEMENTS as $replacement) {
             if (!$tokens[$operatorIndices['operator_index']]->equals($replacement['operator'])) {
             if (!$tokens[$operatorIndices['operator_index']]->equals($replacement['operator'])) {
@@ -160,10 +215,60 @@ if (strpos($haystack, $needle) === false) {}
 
 
             $tokens->insertAt($functionIndex, new Token($replacement['replacement']));
             $tokens->insertAt($functionIndex, new Token($replacement['replacement']));
 
 
+            if ($isCaseInsensitive) {
+                $this->wrapArgumentsWithStrToLower($tokens, $functionIndex);
+            }
+
             break;
             break;
         }
         }
     }
     }
 
 
+    private function wrapArgumentsWithStrToLower(Tokens $tokens, int $functionIndex): void
+    {
+        $argumentsAnalyzer = new ArgumentsAnalyzer();
+        $shouldAddNamespace = $tokens[$functionIndex - 1]->isGivenKind(T_NS_SEPARATOR);
+
+        $openIndex = $tokens->getNextMeaningfulToken($functionIndex);
+        $closeIndex = $tokens->findBlockEnd(Tokens::BLOCK_TYPE_PARENTHESIS_BRACE, $openIndex);
+        $arguments = $argumentsAnalyzer->getArguments($tokens, $openIndex, $closeIndex);
+
+        $firstArgumentIndexStart = array_key_first($arguments);
+        if (!isset($arguments[$firstArgumentIndexStart])) {
+            return;
+        }
+        $firstArgumentIndexEnd = $arguments[$firstArgumentIndexStart] + 3 + ($shouldAddNamespace ? 1 : 0);
+
+        $isSecondArgumentTokenWhiteSpace = $tokens[array_key_last($arguments)]->isGivenKind(T_WHITESPACE);
+
+        if ($isSecondArgumentTokenWhiteSpace) {
+            $secondArgumentIndexStart = $tokens->getNextMeaningfulToken(array_key_last($arguments));
+        } else {
+            $secondArgumentIndexStart = array_key_last($arguments);
+        }
+
+        $secondArgumentIndexStart += 3 + ($shouldAddNamespace ? 1 : 0);
+        if (!isset($arguments[array_key_last($arguments)])) {
+            return;
+        }
+        $secondArgumentIndexEnd = $arguments[array_key_last($arguments)] + 6 + ($shouldAddNamespace ? 1 : 0) + ($isSecondArgumentTokenWhiteSpace ? 1 : 0);
+
+        if ($shouldAddNamespace) {
+            $tokens->insertAt($firstArgumentIndexStart, new Token([T_NS_SEPARATOR, '\\']));
+            ++$firstArgumentIndexStart;
+        }
+
+        $tokens->insertAt($firstArgumentIndexStart, [new Token([T_STRING, 'strtolower']), new Token('(')]);
+        $tokens->insertAt($firstArgumentIndexEnd, new Token(')'));
+
+        if ($shouldAddNamespace) {
+            $tokens->insertAt($secondArgumentIndexStart, new Token([T_NS_SEPARATOR, '\\']));
+            ++$secondArgumentIndexStart;
+        }
+
+        $tokens->insertAt($secondArgumentIndexStart, [new Token([T_STRING, 'strtolower']), new Token('(')]);
+        $tokens->insertAt($secondArgumentIndexEnd, new Token(')'));
+    }
+
     /**
     /**
      * @param -1|1 $direction
      * @param -1|1 $direction
      *
      *

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoAliasFunctionsFixer.php

@@ -36,10 +36,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  sets?: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>
+ *  sets?: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  sets: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>
+ *  sets: list<'@all'|'@exif'|'@ftp'|'@IMAP'|'@internal'|'@ldap'|'@mbreg'|'@mysqli'|'@oci'|'@odbc'|'@openssl'|'@pcntl'|'@pg'|'@posix'|'@snmp'|'@sodium'|'@time'>,
  * }
  * }
  */
  */
 final class NoAliasFunctionsFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NoAliasFunctionsFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/NoMixedEchoPrintFixer.php

@@ -33,10 +33,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  use?: 'echo'|'print'
+ *  use?: 'echo'|'print',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  use: 'echo'|'print'
+ *  use: 'echo'|'print',
  * }
  * }
  */
  */
 final class NoMixedEchoPrintFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NoMixedEchoPrintFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 7 - 5
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/RandomApiMigrationFixer.php

@@ -34,10 +34,10 @@ use Symfony\Component\OptionsResolver\Exception\InvalidOptionsException;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  replacements?: array<string, string>
+ *  replacements?: array<string, string>,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  replacements: array<string, string>
+ *  replacements: array<string, string>,
  * }
  * }
  */
  */
 final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer implements ConfigurableFixerInterface
 final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer implements ConfigurableFixerInterface
@@ -48,7 +48,7 @@ final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer imple
     /**
     /**
      * @var array<string, array<int, int>>
      * @var array<string, array<int, int>>
      */
      */
-    private static array $argumentCounts = [
+    private const ARGUMENT_COUNTS = [
         'getrandmax' => [0],
         'getrandmax' => [0],
         'mt_rand' => [1, 2],
         'mt_rand' => [1, 2],
         'rand' => [0, 2],
         'rand' => [0, 2],
@@ -99,7 +99,9 @@ final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer imple
                 [$functionName, $openParenthesis, $closeParenthesis] = $boundaries;
                 [$functionName, $openParenthesis, $closeParenthesis] = $boundaries;
                 $count = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis);
                 $count = $argumentsAnalyzer->countArguments($tokens, $openParenthesis, $closeParenthesis);
 
 
-                if (!\in_array($count, self::$argumentCounts[$functionIdentity], true)) {
+                \assert(isset(self::ARGUMENT_COUNTS[$functionIdentity])); // for PHPStan
+
+                if (!\in_array($count, self::ARGUMENT_COUNTS[$functionIdentity], true)) {
                     continue 2;
                     continue 2;
                 }
                 }
 
 
@@ -130,7 +132,7 @@ final class RandomApiMigrationFixer extends AbstractFunctionReferenceFixer imple
                 ->setAllowedTypes(['array<string, string>'])
                 ->setAllowedTypes(['array<string, string>'])
                 ->setAllowedValues([static function (array $value): bool {
                 ->setAllowedValues([static function (array $value): bool {
                     foreach ($value as $functionName => $replacement) {
                     foreach ($value as $functionName => $replacement) {
-                        if (!\array_key_exists($functionName, self::$argumentCounts)) {
+                        if (!\array_key_exists($functionName, self::ARGUMENT_COUNTS)) {
                             throw new InvalidOptionsException(\sprintf(
                             throw new InvalidOptionsException(\sprintf(
                                 'Function "%s" is not handled by the fixer.',
                                 'Function "%s" is not handled by the fixer.',
                                 $functionName
                                 $functionName

+ 0 - 1
vendor/friendsofphp/php-cs-fixer/src/Fixer/Alias/SetTypeToCastFixer.php

@@ -149,7 +149,6 @@ settype($bar, "null");
             if ('null' === $type) {
             if ('null' === $type) {
                 $this->fixSettypeNullCall($tokens, $functionNameIndex, $argumentToken);
                 $this->fixSettypeNullCall($tokens, $functionNameIndex, $argumentToken);
             } else {
             } else {
-                \assert(isset($map[$type]));
                 $this->fixSettypeCall($tokens, $functionNameIndex, $argumentToken, new Token($map[$type]));
                 $this->fixSettypeCall($tokens, $functionNameIndex, $argumentToken, new Token($map[$type]));
             }
             }
         }
         }

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/ArraySyntaxFixer.php

@@ -35,10 +35,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  syntax?: 'long'|'short'
+ *  syntax?: 'long'|'short',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  syntax: 'long'|'short'
+ *  syntax: 'long'|'short',
  * }
  * }
  */
  */
 final class ArraySyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class ArraySyntaxFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/NoWhitespaceBeforeCommaInArrayFixer.php

@@ -32,10 +32,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  after_heredoc?: bool
+ *  after_heredoc?: bool,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  after_heredoc: bool
+ *  after_heredoc: bool,
  * }
  * }
  */
  */
 final class NoWhitespaceBeforeCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NoWhitespaceBeforeCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/ArrayNotation/WhitespaceAfterCommaInArrayFixer.php

@@ -34,10 +34,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  ensure_single_space?: bool
+ *  ensure_single_space?: bool,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  ensure_single_space: bool
+ *  ensure_single_space: bool,
  * }
  * }
  */
  */
 final class WhitespaceAfterCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class WhitespaceAfterCommaInArrayFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/AttributeEmptyParenthesesFixer.php

@@ -33,10 +33,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  use_parentheses?: bool
+ *  use_parentheses?: bool,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  use_parentheses: bool
+ *  use_parentheses: bool,
  * }
  * }
  */
  */
 final class AttributeEmptyParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class AttributeEmptyParenthesesFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 20 - 71
vendor/friendsofphp/php-cs-fixer/src/Fixer/AttributeNotation/OrderedAttributesFixer.php

@@ -26,11 +26,9 @@ use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\VersionSpecification;
 use PhpCsFixer\FixerDefinition\VersionSpecification;
 use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
 use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
 use PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis;
 use PhpCsFixer\Tokenizer\Analyzer\Analysis\AttributeAnalysis;
-use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceAnalysis;
 use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis;
 use PhpCsFixer\Tokenizer\Analyzer\Analysis\NamespaceUseAnalysis;
 use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer;
 use PhpCsFixer\Tokenizer\Analyzer\AttributeAnalyzer;
-use PhpCsFixer\Tokenizer\Analyzer\NamespacesAnalyzer;
-use PhpCsFixer\Tokenizer\Analyzer\NamespaceUsesAnalyzer;
+use PhpCsFixer\Tokenizer\Analyzer\FullyQualifiedNameAnalyzer;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Tokenizer\Tokens;
 use Symfony\Component\OptionsResolver\Options;
 use Symfony\Component\OptionsResolver\Options;
@@ -44,11 +42,11 @@ use Symfony\Component\OptionsResolver\Options;
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
  *  order?: list<string>,
  *  order?: list<string>,
- *  sort_algorithm?: 'alpha'|'custom'
+ *  sort_algorithm?: 'alpha'|'custom',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  order: array<string, int>,
  *  order: array<string, int>,
- *  sort_algorithm: 'alpha'|'custom'
+ *  sort_algorithm: 'alpha'|'custom',
  * }
  * }
  */
  */
 final class OrderedAttributesFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class OrderedAttributesFixer extends AbstractFixer implements ConfigurableFixerInterface
@@ -164,17 +162,17 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
 
 
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     {
     {
+        $fullyQualifiedNameAnalyzer = new FullyQualifiedNameAnalyzer($tokens);
+
         $index = 0;
         $index = 0;
 
 
         while (null !== $index = $tokens->getNextTokenOfKind($index, [[T_ATTRIBUTE]])) {
         while (null !== $index = $tokens->getNextTokenOfKind($index, [[T_ATTRIBUTE]])) {
-            /** @var list<array{name: string, start: int, end: int}> $elements */
-            $elements = array_map(function (AttributeAnalysis $attributeAnalysis) use ($tokens): array {
-                return [
-                    'name' => $this->sortAttributes($tokens, $attributeAnalysis->getStartIndex(), $attributeAnalysis->getAttributes()),
-                    'start' => $attributeAnalysis->getStartIndex(),
-                    'end' => $attributeAnalysis->getEndIndex(),
-                ];
-            }, AttributeAnalyzer::collect($tokens, $index));
+            /** @var _AttributeItems $elements */
+            $elements = array_map(fn (AttributeAnalysis $attributeAnalysis): array => [
+                'name' => $this->sortAttributes($fullyQualifiedNameAnalyzer, $tokens, $attributeAnalysis->getStartIndex(), $attributeAnalysis->getAttributes()),
+                'start' => $attributeAnalysis->getStartIndex(),
+                'end' => $attributeAnalysis->getEndIndex(),
+            ], AttributeAnalyzer::collect($tokens, $index));
 
 
             $endIndex = end($elements)['end'];
             $endIndex = end($elements)['end'];
 
 
@@ -199,14 +197,14 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
     /**
     /**
      * @param _AttributeItems $attributes
      * @param _AttributeItems $attributes
      */
      */
-    private function sortAttributes(Tokens $tokens, int $index, array $attributes): string
+    private function sortAttributes(FullyQualifiedNameAnalyzer $fullyQualifiedNameAnalyzer, Tokens $tokens, int $index, array $attributes): string
     {
     {
         if (1 === \count($attributes)) {
         if (1 === \count($attributes)) {
-            return $this->getAttributeName($tokens, $attributes[0]['name'], $attributes[0]['start']);
+            return $this->getAttributeName($fullyQualifiedNameAnalyzer, $attributes[0]['name'], $attributes[0]['start']);
         }
         }
 
 
         foreach ($attributes as &$attribute) {
         foreach ($attributes as &$attribute) {
-            $attribute['name'] = $this->getAttributeName($tokens, $attribute['name'], $attribute['start']);
+            $attribute['name'] = $this->getAttributeName($fullyQualifiedNameAnalyzer, $attribute['name'], $attribute['start']);
         }
         }
 
 
         $sortedElements = $this->sortElements($attributes);
         $sortedElements = $this->sortElements($attributes);
@@ -220,47 +218,19 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
         return $sortedElements[0]['name'];
         return $sortedElements[0]['name'];
     }
     }
 
 
-    private function getAttributeName(Tokens $tokens, string $name, int $index): string
+    private function getAttributeName(FullyQualifiedNameAnalyzer $fullyQualifiedNameAnalyzer, string $name, int $index): string
     {
     {
         if (self::ORDER_CUSTOM === $this->configuration['sort_algorithm']) {
         if (self::ORDER_CUSTOM === $this->configuration['sort_algorithm']) {
-            $name = $this->determineAttributeFullyQualifiedName($tokens, $name, $index);
+            return $fullyQualifiedNameAnalyzer->getFullyQualifiedName($name, $index, NamespaceUseAnalysis::TYPE_CLASS);
         }
         }
 
 
         return ltrim($name, '\\');
         return ltrim($name, '\\');
     }
     }
 
 
-    private function determineAttributeFullyQualifiedName(Tokens $tokens, string $name, int $index): string
-    {
-        if ('\\' === $name[0]) {
-            return $name;
-        }
-
-        if (!$tokens[$index]->isGivenKind([T_STRING, T_NS_SEPARATOR])) {
-            $index = $tokens->getNextTokenOfKind($index, [[T_STRING], [T_NS_SEPARATOR]]);
-        }
-
-        [$namespaceAnalysis, $namespaceUseAnalyses] = $this->collectNamespaceAnalysis($tokens, $index);
-        $namespace = $namespaceAnalysis->getFullName();
-        $firstTokenOfName = $tokens[$index]->getContent();
-        $namespaceUseAnalysis = $namespaceUseAnalyses[$firstTokenOfName] ?? false;
-
-        if ($namespaceUseAnalysis instanceof NamespaceUseAnalysis) {
-            $namespace = $namespaceUseAnalysis->getFullName();
-
-            if ($name === $firstTokenOfName) {
-                return $namespace;
-            }
-
-            $name = substr(strstr($name, '\\'), 1);
-        }
-
-        return $namespace.'\\'.$name;
-    }
-
     /**
     /**
-     * @param list<array{name: string, start: int, end: int}> $elements
+     * @param _AttributeItems $elements
      *
      *
-     * @return list<array{name: string, start: int, end: int}>
+     * @return _AttributeItems
      */
      */
     private function sortElements(array $elements): array
     private function sortElements(array $elements): array
     {
     {
@@ -274,8 +244,7 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
             if (self::ORDER_CUSTOM === $sortAlgorithm) {
             if (self::ORDER_CUSTOM === $sortAlgorithm) {
                 return
                 return
                     ($this->configuration['order'][$a['name']] ?? PHP_INT_MAX)
                     ($this->configuration['order'][$a['name']] ?? PHP_INT_MAX)
-                    <=>
-                    ($this->configuration['order'][$b['name']] ?? PHP_INT_MAX);
+                    <=> ($this->configuration['order'][$b['name']] ?? PHP_INT_MAX);
             }
             }
 
 
             throw new \InvalidArgumentException(\sprintf('Invalid sort algorithm "%s" provided.', $sortAlgorithm));
             throw new \InvalidArgumentException(\sprintf('Invalid sort algorithm "%s" provided.', $sortAlgorithm));
@@ -285,7 +254,7 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
     }
     }
 
 
     /**
     /**
-     * @param list<array{name: string, start: int, end: int}> $elements
+     * @param _AttributeItems $elements
      */
      */
     private function sortTokens(Tokens $tokens, int $startIndex, int $endIndex, array $elements, ?Token $delimiter = null): void
     private function sortTokens(Tokens $tokens, int $startIndex, int $endIndex, array $elements, ?Token $delimiter = null): void
     {
     {
@@ -302,24 +271,4 @@ final class OrderedAttributesFixer extends AbstractFixer implements Configurable
 
 
         $tokens->overrideRange($startIndex, $endIndex, $replaceTokens);
         $tokens->overrideRange($startIndex, $endIndex, $replaceTokens);
     }
     }
-
-    /**
-     * @return array{NamespaceAnalysis, array<string, NamespaceUseAnalysis>}
-     */
-    private function collectNamespaceAnalysis(Tokens $tokens, int $startIndex): array
-    {
-        $namespaceAnalysis = (new NamespacesAnalyzer())->getNamespaceAt($tokens, $startIndex);
-        $namespaceUseAnalyses = (new NamespaceUsesAnalyzer())->getDeclarationsInNamespace($tokens, $namespaceAnalysis);
-
-        $uses = [];
-        foreach ($namespaceUseAnalyses as $use) {
-            if (!$use->isClass()) {
-                continue;
-            }
-
-            $uses[$use->getShortName()] = $use;
-        }
-
-        return [$namespaceAnalysis, $uses];
-    }
 }
 }

+ 4 - 10
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesFixer.php

@@ -46,14 +46,14 @@ use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
  *  allow_single_line_closure?: bool,
  *  allow_single_line_closure?: bool,
  *  position_after_anonymous_constructs?: 'next'|'same',
  *  position_after_anonymous_constructs?: 'next'|'same',
  *  position_after_control_structures?: 'next'|'same',
  *  position_after_control_structures?: 'next'|'same',
- *  position_after_functions_and_oop_constructs?: 'next'|'same'
+ *  position_after_functions_and_oop_constructs?: 'next'|'same',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  allow_single_line_anonymous_class_with_empty_body: bool,
  *  allow_single_line_anonymous_class_with_empty_body: bool,
  *  allow_single_line_closure: bool,
  *  allow_single_line_closure: bool,
  *  position_after_anonymous_constructs: 'next'|'same',
  *  position_after_anonymous_constructs: 'next'|'same',
  *  position_after_control_structures: 'next'|'same',
  *  position_after_control_structures: 'next'|'same',
- *  position_after_functions_and_oop_constructs: 'next'|'same'
+ *  position_after_functions_and_oop_constructs: 'next'|'same',
  * }
  * }
  */
  */
 final class BracesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface, DeprecatedFixerInterface
 final class BracesFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface, DeprecatedFixerInterface
@@ -71,15 +71,9 @@ final class BracesFixer extends AbstractProxyFixer implements ConfigurableFixerI
      */
      */
     public const LINE_SAME = 'same';
     public const LINE_SAME = 'same';
 
 
-    /**
-     * @var null|BracesPositionFixer
-     */
-    private $bracesPositionFixer;
+    private ?BracesPositionFixer $bracesPositionFixer = null;
 
 
-    /**
-     * @var null|ControlStructureContinuationPositionFixer
-     */
-    private $controlStructureContinuationPositionFixer;
+    private ?ControlStructureContinuationPositionFixer $controlStructureContinuationPositionFixer = null;
 
 
     public function getDefinition(): FixerDefinitionInterface
     public function getDefinition(): FixerDefinitionInterface
     {
     {

+ 19 - 7
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/BracesPositionFixer.php

@@ -41,7 +41,7 @@ use PhpCsFixer\Tokenizer\TokensAnalyzer;
  *  anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
- *  functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line'
+ *  functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  allow_single_line_anonymous_functions: bool,
  *  allow_single_line_anonymous_functions: bool,
@@ -50,7 +50,7 @@ use PhpCsFixer\Tokenizer\TokensAnalyzer;
  *  anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
- *  functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line'
+ *  functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  * }
  * }
  */
  */
 final class BracesPositionFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface
 final class BracesPositionFixer extends AbstractFixer implements ConfigurableFixerInterface, WhitespacesAwareFixerInterface
@@ -362,13 +362,21 @@ $bar = function () { $result = true;
                     }
                     }
                 }
                 }
 
 
-                for (; $openBraceIndex !== $moveBraceToIndex; $openBraceIndex += $delta) {
+                for ($i = $openBraceIndex; $i !== $moveBraceToIndex; $i += $delta) {
                     /** @var Token $siblingToken */
                     /** @var Token $siblingToken */
-                    $siblingToken = $tokens[$openBraceIndex + $delta];
-                    $tokens[$openBraceIndex] = $siblingToken;
+                    $siblingToken = $tokens[$i + $delta];
+                    $tokens[$i] = $siblingToken;
                 }
                 }
 
 
-                $tokens[$openBraceIndex] = $movedToken;
+                $tokens[$i] = $movedToken;
+
+                if ($tokens[$openBraceIndex]->isWhitespace() && $tokens[$openBraceIndex + 1]->isWhitespace()) {
+                    $tokens[$openBraceIndex] = new Token([
+                        T_WHITESPACE,
+                        $tokens[$openBraceIndex]->getContent().$tokens[$openBraceIndex + 1]->getContent(),
+                    ]);
+                    $tokens->clearAt($openBraceIndex + 1);
+                }
 
 
                 $openBraceIndex = $moveBraceToIndex;
                 $openBraceIndex = $moveBraceToIndex;
             }
             }
@@ -387,9 +395,13 @@ $bar = function () { $result = true;
                 continue;
                 continue;
             }
             }
 
 
-            for ($prevIndex = $closeBraceIndex - 1; $tokens->isEmptyAt($prevIndex); --$prevIndex);
+            $prevIndex = $closeBraceIndex - 1;
+            while ($tokens->isEmptyAt($prevIndex)) {
+                --$prevIndex;
+            }
 
 
             $prevToken = $tokens[$prevIndex];
             $prevToken = $tokens[$prevIndex];
+
             if ($prevToken->isWhitespace() && Preg::match('/\R/', $prevToken->getContent())) {
             if ($prevToken->isWhitespace() && Preg::match('/\R/', $prevToken->getContent())) {
                 continue;
                 continue;
             }
             }

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/CurlyBracesPositionFixer.php

@@ -36,7 +36,7 @@ use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
  *  anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  anonymous_functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
- *  functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line'
+ *  functions_opening_brace?: 'next_line_unless_newline_at_signature_end'|'same_line',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  allow_single_line_anonymous_functions: bool,
  *  allow_single_line_anonymous_functions: bool,
@@ -45,7 +45,7 @@ use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
  *  anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  anonymous_functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  classes_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  *  control_structures_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
- *  functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line'
+ *  functions_opening_brace: 'next_line_unless_newline_at_signature_end'|'same_line',
  * }
  * }
  */
  */
 final class CurlyBracesPositionFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface, WhitespacesAwareFixerInterface
 final class CurlyBracesPositionFixer extends AbstractProxyFixer implements ConfigurableFixerInterface, DeprecatedFixerInterface, WhitespacesAwareFixerInterface

+ 10 - 0
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoMultipleStatementsPerLineFixer.php

@@ -21,6 +21,7 @@ use PhpCsFixer\FixerDefinition\CodeSample;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\Preg;
 use PhpCsFixer\Preg;
+use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Tokenizer\Tokens;
 
 
 /**
 /**
@@ -66,6 +67,15 @@ final class NoMultipleStatementsPerLineFixer extends AbstractFixer implements Wh
                 continue;
                 continue;
             }
             }
 
 
+            if ($tokens[$index]->isGivenKind(CT::T_PROPERTY_HOOK_BRACE_OPEN)) {
+                $index = $tokens->findBlockEnd(
+                    Tokens::BLOCK_TYPE_PROPERTY_HOOK,
+                    $index
+                );
+
+                continue;
+            }
+
             if (!$tokens[$index]->equals(';')) {
             if (!$tokens[$index]->equals(';')) {
                 continue;
                 continue;
             }
             }

+ 3 - 3
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NoTrailingCommaInSinglelineFixer.php

@@ -32,10 +32,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  elements?: list<'arguments'|'array'|'array_destructuring'|'group_import'>
+ *  elements?: list<'arguments'|'array'|'array_destructuring'|'group_import'>,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  elements: list<'arguments'|'array'|'array_destructuring'|'group_import'>
+ *  elements: list<'arguments'|'array'|'array_destructuring'|'group_import'>,
  * }
  * }
  */
  */
 final class NoTrailingCommaInSinglelineFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NoTrailingCommaInSinglelineFixer extends AbstractFixer implements ConfigurableFixerInterface
@@ -63,7 +63,7 @@ final class NoTrailingCommaInSinglelineFixer extends AbstractFixer implements Co
 
 
     protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
     protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
     {
     {
-        $elements = ['arguments', 'array_destructuring', 'array', 'group_import'];
+        $elements = ['arguments', 'array', 'array_destructuring', 'group_import'];
 
 
         return new FixerConfigurationResolver([
         return new FixerConfigurationResolver([
             (new FixerOptionBuilder('elements', 'Which elements to fix.'))
             (new FixerOptionBuilder('elements', 'Which elements to fix.'))

+ 10 - 10
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NonPrintableCharacterFixer.php

@@ -35,10 +35,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  use_escape_sequences_in_strings?: bool
+ *  use_escape_sequences_in_strings?: bool,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  use_escape_sequences_in_strings: bool
+ *  use_escape_sequences_in_strings: bool,
  * }
  * }
  */
  */
 final class NonPrintableCharacterFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NonPrintableCharacterFixer extends AbstractFixer implements ConfigurableFixerInterface
@@ -46,15 +46,10 @@ final class NonPrintableCharacterFixer extends AbstractFixer implements Configur
     /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */
     /** @use ConfigurableFixerTrait<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration> */
     use ConfigurableFixerTrait;
     use ConfigurableFixerTrait;
 
 
-    /**
-     * @var array<string, array{string, string}>
-     */
-    private array $symbolsReplace;
-
     /**
     /**
      * @var list<int>
      * @var list<int>
      */
      */
-    private static array $tokens = [
+    private const TOKENS = [
         T_STRING_VARNAME,
         T_STRING_VARNAME,
         T_INLINE_HTML,
         T_INLINE_HTML,
         T_VARIABLE,
         T_VARIABLE,
@@ -64,6 +59,11 @@ final class NonPrintableCharacterFixer extends AbstractFixer implements Configur
         T_DOC_COMMENT,
         T_DOC_COMMENT,
     ];
     ];
 
 
+    /**
+     * @var array<string, array{string, string}>
+     */
+    private array $symbolsReplace;
+
     public function __construct()
     public function __construct()
     {
     {
         parent::__construct();
         parent::__construct();
@@ -102,7 +102,7 @@ final class NonPrintableCharacterFixer extends AbstractFixer implements Configur
 
 
     public function isCandidate(Tokens $tokens): bool
     public function isCandidate(Tokens $tokens): bool
     {
     {
-        return $tokens->isAnyTokenKindsFound(self::$tokens);
+        return $tokens->isAnyTokenKindsFound(self::TOKENS);
     }
     }
 
 
     protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
     protected function createConfigurationDefinition(): FixerConfigurationResolverInterface
@@ -171,7 +171,7 @@ final class NonPrintableCharacterFixer extends AbstractFixer implements Configur
                 continue;
                 continue;
             }
             }
 
 
-            if ($token->isGivenKind(self::$tokens)) {
+            if ($token->isGivenKind(self::TOKENS)) {
                 $newContent = strtr($content, $replacements);
                 $newContent = strtr($content, $replacements);
 
 
                 // variable name cannot contain space
                 // variable name cannot contain space

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/NumericLiteralSeparatorFixer.php

@@ -41,11 +41,11 @@ use PhpCsFixer\Tokenizer\Tokens;
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
  *  override_existing?: bool,
  *  override_existing?: bool,
- *  strategy?: 'no_separator'|'use_separator'
+ *  strategy?: 'no_separator'|'use_separator',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  *  override_existing: bool,
  *  override_existing: bool,
- *  strategy: 'no_separator'|'use_separator'
+ *  strategy: 'no_separator'|'use_separator',
  * }
  * }
  */
  */
 final class NumericLiteralSeparatorFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class NumericLiteralSeparatorFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Basic/PsrAutoloadingFixer.php

@@ -40,10 +40,10 @@ use PhpCsFixer\Tokenizer\TokensAnalyzer;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  dir?: null|string
+ *  dir?: null|string,
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  dir: null|string
+ *  dir: null|string,
  * }
  * }
  */
  */
 final class PsrAutoloadingFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class PsrAutoloadingFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 2 - 2
vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/ConstantCaseFixer.php

@@ -34,10 +34,10 @@ use PhpCsFixer\Tokenizer\Tokens;
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  * @implements ConfigurableFixerInterface<_AutogeneratedInputConfiguration, _AutogeneratedComputedConfiguration>
  *
  *
  * @phpstan-type _AutogeneratedInputConfiguration array{
  * @phpstan-type _AutogeneratedInputConfiguration array{
- *  case?: 'lower'|'upper'
+ *  case?: 'lower'|'upper',
  * }
  * }
  * @phpstan-type _AutogeneratedComputedConfiguration array{
  * @phpstan-type _AutogeneratedComputedConfiguration array{
- *  case: 'lower'|'upper'
+ *  case: 'lower'|'upper',
  * }
  * }
  */
  */
 final class ConstantCaseFixer extends AbstractFixer implements ConfigurableFixerInterface
 final class ConstantCaseFixer extends AbstractFixer implements ConfigurableFixerInterface

+ 1 - 6
vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/LowercaseKeywordsFixer.php

@@ -28,11 +28,6 @@ use PhpCsFixer\Tokenizer\Tokens;
  */
  */
 final class LowercaseKeywordsFixer extends AbstractFixer
 final class LowercaseKeywordsFixer extends AbstractFixer
 {
 {
-    /**
-     * @var list<int>
-     */
-    private static array $excludedTokens = [T_HALT_COMPILER];
-
     public function getDefinition(): FixerDefinitionInterface
     public function getDefinition(): FixerDefinitionInterface
     {
     {
         return new FixerDefinition(
         return new FixerDefinition(
@@ -64,7 +59,7 @@ final class LowercaseKeywordsFixer extends AbstractFixer
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     {
     {
         foreach ($tokens as $index => $token) {
         foreach ($tokens as $index => $token) {
-            if ($token->isKeyword() && !$token->isGivenKind(self::$excludedTokens)) {
+            if ($token->isKeyword() && !$token->isGivenKind([T_HALT_COMPILER])) {
                 $tokens[$index] = new Token([$token->getId(), strtolower($token->getContent())]);
                 $tokens[$index] = new Token([$token->getId(), strtolower($token->getContent())]);
             }
             }
         }
         }

+ 9 - 4
vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/MagicMethodCasingFixer.php

@@ -26,7 +26,7 @@ final class MagicMethodCasingFixer extends AbstractFixer
     /**
     /**
      * @var array<string, string>
      * @var array<string, string>
      */
      */
-    private static array $magicNames = [
+    private const MAGIC_NAMES = [
         '__call' => '__call',
         '__call' => '__call',
         '__callstatic' => '__callStatic',
         '__callstatic' => '__callStatic',
         '__clone' => '__clone',
         '__clone' => '__clone',
@@ -177,17 +177,22 @@ $foo->__INVOKE(1);
         return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('(');
         return $tokens[$tokens->getNextMeaningfulToken($index)]->equals('(');
     }
     }
 
 
+    /**
+     * @phpstan-assert-if-true key-of<self::MAGIC_NAMES> $name
+     */
     private function isMagicMethodName(string $name): bool
     private function isMagicMethodName(string $name): bool
     {
     {
-        return isset(self::$magicNames[$name]);
+        return isset(self::MAGIC_NAMES[$name]);
     }
     }
 
 
     /**
     /**
-     * @param string $name name of a magic method
+     * @param key-of<self::MAGIC_NAMES> $name name of a magic method
+     *
+     * @return value-of<self::MAGIC_NAMES>
      */
      */
     private function getMagicMethodNameInCorrectCasing(string $name): string
     private function getMagicMethodNameInCorrectCasing(string $name): string
     {
     {
-        return self::$magicNames[$name];
+        return self::MAGIC_NAMES[$name];
     }
     }
 
 
     private function setTokenToCorrectCasing(Tokens $tokens, int $index, string $nameInCorrectCasing): void
     private function setTokenToCorrectCasing(Tokens $tokens, int $index, string $nameInCorrectCasing): void

+ 26 - 235
vendor/friendsofphp/php-cs-fixer/src/Fixer/Casing/NativeTypeDeclarationCasingFixer.php

@@ -20,76 +20,12 @@ use PhpCsFixer\FixerDefinition\FixerDefinition;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\FixerDefinitionInterface;
 use PhpCsFixer\FixerDefinition\VersionSpecification;
 use PhpCsFixer\FixerDefinition\VersionSpecification;
 use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
 use PhpCsFixer\FixerDefinition\VersionSpecificCodeSample;
-use PhpCsFixer\Tokenizer\Analyzer\Analysis\TypeAnalysis;
-use PhpCsFixer\Tokenizer\Analyzer\FunctionsAnalyzer;
 use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\CT;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Token;
 use PhpCsFixer\Tokenizer\Tokens;
 use PhpCsFixer\Tokenizer\Tokens;
-use PhpCsFixer\Tokenizer\TokensAnalyzer;
 
 
 final class NativeTypeDeclarationCasingFixer extends AbstractFixer
 final class NativeTypeDeclarationCasingFixer extends AbstractFixer
 {
 {
-    /*
-     * https://wiki.php.net/rfc/typed_class_constants
-     * Supported types
-     * Class constant type declarations support all type declarations supported by PHP,
-     * except `void`, `callable`, `never`.
-     *
-     * array
-     * bool
-     * callable
-     * float
-     * int
-     * iterable
-     * object
-     * mixed
-     * parent
-     * self
-     * string
-     * any class or interface name -> not native, so not applicable for this Fixer
-     * ?type -> not native, `?` has no casing, so not applicable for this Fixer
-     *
-     * Not in the list referenced but supported:
-     * null
-     * static
-     */
-    private const CLASS_CONST_SUPPORTED_HINTS = [
-        'array' => true,
-        'bool' => true,
-        'float' => true,
-        'int' => true,
-        'iterable' => true,
-        'mixed' => true,
-        'null' => true,
-        'object' => true,
-        'parent' => true,
-        'self' => true,
-        'string' => true,
-        'static' => true,
-    ];
-
-    private const CLASS_PROPERTY_SUPPORTED_HINTS = [
-        'array' => true,
-        'bool' => true,
-        'float' => true,
-        'int' => true,
-        'iterable' => true,
-        'mixed' => true,
-        'null' => true,
-        'object' => true,
-        'parent' => true,
-        'self' => true,
-        'static' => true,
-        'string' => true,
-    ];
-
-    private const TYPE_SEPARATION_TYPES = [
-        CT::T_TYPE_ALTERNATION,
-        CT::T_TYPE_INTERSECTION,
-        CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN,
-        CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_CLOSE,
-    ];
-
     /**
     /**
      * https://secure.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.
      * https://secure.php.net/manual/en/functions.arguments.php#functions.arguments.type-declaration.
      *
      *
@@ -114,22 +50,13 @@ final class NativeTypeDeclarationCasingFixer extends AbstractFixer
      *
      *
      * @var array<string, true>
      * @var array<string, true>
      */
      */
-    private array $functionTypeHints;
-
-    private FunctionsAnalyzer $functionsAnalyzer;
-
-    /**
-     * @var list<array{int}|string>
-     */
-    private array $beforePropertyTypeTokens;
+    private array $types;
 
 
     public function __construct()
     public function __construct()
     {
     {
         parent::__construct();
         parent::__construct();
 
 
-        $this->beforePropertyTypeTokens = ['{', ';', [T_PRIVATE], [T_PROTECTED], [T_PUBLIC], [T_VAR]];
-
-        $this->functionTypeHints = [
+        $this->types = [
             'array' => true,
             'array' => true,
             'bool' => true,
             'bool' => true,
             'callable' => true,
             'callable' => true,
@@ -137,29 +64,26 @@ final class NativeTypeDeclarationCasingFixer extends AbstractFixer
             'int' => true,
             'int' => true,
             'iterable' => true,
             'iterable' => true,
             'object' => true,
             'object' => true,
+            'parent' => true,
             'self' => true,
             'self' => true,
+            'static' => true,
             'string' => true,
             'string' => true,
             'void' => true,
             'void' => true,
         ];
         ];
 
 
         if (\PHP_VERSION_ID >= 8_00_00) {
         if (\PHP_VERSION_ID >= 8_00_00) {
-            $this->functionTypeHints['false'] = true;
-            $this->functionTypeHints['mixed'] = true;
-            $this->functionTypeHints['null'] = true;
-            $this->functionTypeHints['static'] = true;
+            $this->types['false'] = true;
+            $this->types['mixed'] = true;
+            $this->types['null'] = true;
         }
         }
 
 
         if (\PHP_VERSION_ID >= 8_01_00) {
         if (\PHP_VERSION_ID >= 8_01_00) {
-            $this->functionTypeHints['never'] = true;
-
-            $this->beforePropertyTypeTokens[] = [T_READONLY];
+            $this->types['never'] = true;
         }
         }
 
 
         if (\PHP_VERSION_ID >= 8_02_00) {
         if (\PHP_VERSION_ID >= 8_02_00) {
-            $this->functionTypeHints['true'] = true;
+            $this->types['true'] = true;
         }
         }
-
-        $this->functionsAnalyzer = new FunctionsAnalyzer();
     }
     }
 
 
     public function getDefinition(): FixerDefinitionInterface
     public function getDefinition(): FixerDefinitionInterface
@@ -194,167 +118,34 @@ final class NativeTypeDeclarationCasingFixer extends AbstractFixer
 
 
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     protected function applyFix(\SplFileInfo $file, Tokens $tokens): void
     {
     {
-        $this->fixFunctions($tokens);
-        $this->fixClassConstantsAndProperties($tokens);
-    }
-
-    private function fixFunctions(Tokens $tokens): void
-    {
-        for ($index = $tokens->count() - 1; $index >= 0; --$index) {
-            if ($tokens[$index]->isGivenKind([T_FUNCTION, T_FN])) {
-                $this->fixFunctionReturnType($tokens, $index);
-                $this->fixFunctionArgumentTypes($tokens, $index);
-            }
-        }
-    }
-
-    private function fixFunctionArgumentTypes(Tokens $tokens, int $index): void
-    {
-        foreach ($this->functionsAnalyzer->getFunctionArguments($tokens, $index) as $argument) {
-            $this->fixArgumentType($tokens, $argument->getTypeAnalysis());
-        }
-    }
-
-    private function fixFunctionReturnType(Tokens $tokens, int $index): void
-    {
-        $this->fixArgumentType($tokens, $this->functionsAnalyzer->getFunctionReturnType($tokens, $index));
-    }
-
-    private function fixArgumentType(Tokens $tokens, ?TypeAnalysis $type = null): void
-    {
-        if (null === $type) {
-            return;
-        }
-
-        for ($index = $type->getStartIndex(); $index <= $type->getEndIndex(); ++$index) {
-            if ($tokens[$tokens->getNextMeaningfulToken($index)]->isGivenKind(T_NS_SEPARATOR)) {
+        foreach ($tokens as $index => $token) {
+            $content = $token->getContent();
+            $lowercaseContent = strtolower($content);
+            if ($content === $lowercaseContent) {
                 continue;
                 continue;
             }
             }
-
-            $this->fixCasing($this->functionTypeHints, $tokens, $index);
-        }
-    }
-
-    private function fixClassConstantsAndProperties(Tokens $tokens): void
-    {
-        $analyzer = new TokensAnalyzer($tokens);
-        $elements = array_reverse($analyzer->getClassyElements(), true);
-
-        foreach ($elements as $index => $element) {
-            if ('const' === $element['type']) {
-                if (\PHP_VERSION_ID >= 8_03_00 && !$this->isConstWithoutType($tokens, $index)) {
-                    foreach ($this->getNativeTypeHintCandidatesForConstant($tokens, $index) as $nativeTypeHintIndex) {
-                        $this->fixCasing($this::CLASS_CONST_SUPPORTED_HINTS, $tokens, $nativeTypeHintIndex);
-                    }
-                }
-
+            if (!isset($this->types[$lowercaseContent])) {
                 continue;
                 continue;
             }
             }
 
 
-            if ('property' === $element['type']) {
-                foreach ($this->getNativeTypeHintCandidatesForProperty($tokens, $index) as $nativeTypeHintIndex) {
-                    $this->fixCasing($this::CLASS_PROPERTY_SUPPORTED_HINTS, $tokens, $nativeTypeHintIndex);
-                }
+            $prevIndex = $tokens->getPrevMeaningfulToken($index);
+            if ($tokens[$prevIndex]->equals('=') || $tokens[$prevIndex]->isGivenKind([T_CASE, T_OBJECT_OPERATOR, T_DOUBLE_COLON, T_NS_SEPARATOR])) {
+                continue;
             }
             }
-        }
-    }
 
 
-    /** @return iterable<int> */
-    private function getNativeTypeHintCandidatesForConstant(Tokens $tokens, int $index): iterable
-    {
-        $constNameIndex = $this->getConstNameIndex($tokens, $index);
-        $index = $this->getFirstIndexOfType($tokens, $index);
-
-        do {
-            $typeEnd = $this->getTypeEnd($tokens, $index, $constNameIndex);
-
-            if ($typeEnd === $index) {
-                yield $index;
+            $nextIndex = $tokens->getNextMeaningfulToken($index);
+            if ($tokens[$nextIndex]->equals('=') || $tokens[$nextIndex]->isGivenKind(T_NS_SEPARATOR)) {
+                continue;
             }
             }
 
 
-            do {
-                $index = $tokens->getNextMeaningfulToken($index);
-            } while ($tokens[$index]->isGivenKind(self::TYPE_SEPARATION_TYPES));
-        } while ($index < $constNameIndex);
-    }
-
-    private function isConstWithoutType(Tokens $tokens, int $index): bool
-    {
-        $index = $tokens->getNextMeaningfulToken($index);
-
-        return $tokens[$index]->isGivenKind(T_STRING) && $tokens[$tokens->getNextMeaningfulToken($index)]->equals('=');
-    }
-
-    private function getConstNameIndex(Tokens $tokens, int $index): int
-    {
-        return $tokens->getPrevMeaningfulToken(
-            $tokens->getNextTokenOfKind($index, ['=']),
-        );
-    }
-
-    /** @return iterable<int> */
-    private function getNativeTypeHintCandidatesForProperty(Tokens $tokens, int $index): iterable
-    {
-        $propertyNameIndex = $index;
-        $index = $tokens->getPrevTokenOfKind($index, $this->beforePropertyTypeTokens);
-
-        $index = $this->getFirstIndexOfType($tokens, $index);
-
-        do {
-            $typeEnd = $this->getTypeEnd($tokens, $index, $propertyNameIndex);
-
-            if ($typeEnd === $index) {
-                yield $index;
+            if (
+                !$tokens[$prevIndex]->isGivenKind([T_CONST, CT::T_NULLABLE_TYPE, CT::T_TYPE_ALTERNATION, CT::T_TYPE_COLON])
+                && !$tokens[$nextIndex]->isGivenKind([T_VARIABLE, CT::T_TYPE_ALTERNATION])
+            ) {
+                continue;
             }
             }
 
 
-            do {
-                $index = $tokens->getNextMeaningfulToken($index);
-            } while ($tokens[$index]->isGivenKind(self::TYPE_SEPARATION_TYPES));
-        } while ($index < $propertyNameIndex);
-
-        return [];
-    }
-
-    private function getFirstIndexOfType(Tokens $tokens, int $index): int
-    {
-        $index = $tokens->getNextMeaningfulToken($index);
-
-        if ($tokens[$index]->isGivenKind(CT::T_NULLABLE_TYPE)) {
-            $index = $tokens->getNextMeaningfulToken($index);
-        }
-
-        if ($tokens[$index]->isGivenKind(CT::T_DISJUNCTIVE_NORMAL_FORM_TYPE_PARENTHESIS_OPEN)) {
-            $index = $tokens->getNextMeaningfulToken($index);
-        }
-
-        return $index;
-    }
-
-    private function getTypeEnd(Tokens $tokens, int $index, int $upperLimit): int
-    {
-        if (!$tokens[$index]->isGivenKind([T_STRING, T_NS_SEPARATOR])) {
-            return $index; // callable, array, self, static, etc.
-        }
-
-        $endIndex = $index;
-        while ($tokens[$index]->isGivenKind([T_STRING, T_NS_SEPARATOR]) && $index < $upperLimit) {
-            $endIndex = $index;
-            $index = $tokens->getNextMeaningfulToken($index);
-        }
-
-        return $endIndex;
-    }
-
-    /**
-     * @param array<string, true> $supportedTypeHints
-     */
-    private function fixCasing(array $supportedTypeHints, Tokens $tokens, int $index): void
-    {
-        $typeContent = $tokens[$index]->getContent();
-        $typeContentLower = strtolower($typeContent);
-
-        if (isset($supportedTypeHints[$typeContentLower]) && $typeContent !== $typeContentLower) {
-            $tokens[$index] = new Token([$tokens[$index]->getId(), $typeContentLower]);
+            $tokens[$index] = new Token([$token->getId(), $lowercaseContent]);
         }
         }
     }
     }
 }
 }

Vissa filer visades inte eftersom för många filer har ändrats