diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c1ca4e36..36312ad6 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,7 +16,7 @@ jobs: strategy: fail-fast: true matrix: - os: [ubuntu-22.04, windows-2019] + os: [ubuntu-22.04, windows-2022] php: [8.2, 8.3, 8.4] name: PHP ${{ matrix.php }} - ${{ matrix.os }} @@ -52,6 +52,9 @@ jobs: - name: Execute lint tests with Laravel preset run: ./pint --test + - name: Execute lint tests in parallel with Laravel preset + run: ./pint --parallel --test + - name: Execute static analysis run: vendor/bin/phpstan if: matrix.php == '8.4' diff --git a/.gitignore b/.gitignore index d4375311..5e276100 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ /vendor composer.lock .phpunit.result.cache +/tests/test-output +/.idea diff --git a/CHANGELOG.md b/CHANGELOG.md index 53c4f335..f886a52e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,40 @@ # Release Notes -## [Unreleased](https://github.com/laravel/pint/compare/v1.21.1...main) +## [Unreleased](https://github.com/laravel/pint/compare/v1.24.0...main) + +## [v1.24.0](https://github.com/laravel/pint/compare/v1.23.0...v1.24.0) - 2025-07-10 + +- PHP 8.4 support +- Adds `-p` as shortcut of `--parallel` +- Fixes parallel on Windows + +## [v1.23.0](https://github.com/laravel/pint/compare/v1.22.1...v1.23.0) - 2025-07-03 + +- Adds `--parallel` option. +- Allows extending from a base configuration file. + +## [v1.22.1](https://github.com/laravel/pint/compare/v1.22.0...v1.22.1) - 2025-05-08 + +- Fixes ` Argument #1 ($node) must be of type DOMNode` issue. + +## [v1.22.0](https://github.com/laravel/pint/compare/v1.21.2...v1.22.0) - 2025-04-08 + +### What's Changed + +* Writing summaries to file via option by [@Onekone](https://github.com/Onekone) in https://github.com/laravel/pint/pull/344 +* Update logo by [@iamdavidhill](https://github.com/iamdavidhill) in https://github.com/laravel/pint/pull/362 +* Update dependencies by [@crynobone](https://github.com/crynobone) in https://github.com/laravel/pint/pull/364 + +### New Contributors + +* [@Onekone](https://github.com/Onekone) made their first contribution in https://github.com/laravel/pint/pull/344 +* [@iamdavidhill](https://github.com/iamdavidhill) made their first contribution in https://github.com/laravel/pint/pull/362 + +**Full Changelog**: https://github.com/laravel/pint/compare/v1.21.2...v1.22.0 + +## [v1.21.2](https://github.com/laravel/pint/compare/v1.21.1...v1.21.2) - 2025-03-14 + +- Bumps dependencies ## [v1.21.1](https://github.com/laravel/pint/compare/v1.21.0...v1.21.1) - 2025-03-11 diff --git a/app/Actions/ElaborateSummary.php b/app/Actions/ElaborateSummary.php index 8c30103a..e7bfdd87 100644 --- a/app/Actions/ElaborateSummary.php +++ b/app/Actions/ElaborateSummary.php @@ -45,12 +45,16 @@ public function execute($totalFiles, $changes) $this->output->isDecorated() ); - if ($this->input->getOption('format')) { - $this->displayUsingFormatter($summary, $totalFiles); + if ($format = $this->input->getOption('format')) { + $this->displayUsingFormatter($summary, $format); } else { $this->summaryOutput->handle($summary, $totalFiles); } + if (($file = $this->input->getOption('output-to-file')) && (($outputFormat = $this->input->getOption('output-format')) || $format)) { + $this->displayUsingFormatter($summary, $outputFormat ?: $format, $file); + } + $failure = (($summary->isDryRun() || $this->input->getOption('repair')) && count($changes) > 0) || count($this->errors->getInvalidErrors()) > 0 || count($this->errors->getExceptionErrors()) > 0 @@ -63,12 +67,13 @@ public function execute($totalFiles, $changes) * Formats the given summary using the "selected" formatter. * * @param \PhpCsFixer\Console\Report\FixReport\ReportSummary $summary - * @param int $totalFiles * @return void + * + * @throws \JsonException */ - protected function displayUsingFormatter($summary, $totalFiles) + protected function displayUsingFormatter($summary, ?string $format = null, ?string $outputPath = null) { - $reporter = match ($format = $this->input->getOption('format')) { + $reporter = match ($format) { 'checkstyle' => new FixReport\CheckstyleReporter, 'gitlab' => new FixReport\GitlabReporter, 'json' => new FixReport\JsonReporter, @@ -78,6 +83,12 @@ protected function displayUsingFormatter($summary, $totalFiles) default => abort(1, sprintf('Format [%s] is not supported.', $format)), }; + if ($outputPath) { + file_put_contents($outputPath, $reporter->generate($summary)); + + return; + } + $this->output->write($reporter->generate($summary)); } } diff --git a/app/Actions/FixCode.php b/app/Actions/FixCode.php index 263b509f..7661ba73 100644 --- a/app/Actions/FixCode.php +++ b/app/Actions/FixCode.php @@ -4,7 +4,10 @@ use App\Factories\ConfigurationResolverFactory; use LaravelZero\Framework\Exceptions\ConsoleException; +use PhpCsFixer\Console\ConfigurationResolver; use PhpCsFixer\Runner\Runner; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Console\Input\InputOption; class FixCode { @@ -45,8 +48,10 @@ public function execute() $this->progress->subscribe(); } + $method = $this->input->getOption('parallel') ? 'fixParallel' : 'fixSequential'; + /** @var array, diff: string}> $changes */ - $changes = (new Runner( + $changes = (fn () => $this->{$method}())->call(new Runner( $resolver->getFinder(), $resolver->getFixers(), $resolver->getDiffer(), @@ -56,9 +61,34 @@ public function execute() $resolver->isDryRun(), $resolver->getCacheManager(), $resolver->getDirectory(), - $resolver->shouldStopOnViolation() - ))->fix(); + $resolver->shouldStopOnViolation(), + $resolver->getParallelConfig(), + $this->getInput($resolver), + )); return tap([$totalFiles, $changes], fn () => $this->progress->unsubscribe()); } + + /** + * Gets the input for the PHP CS Fixer Runner. + */ + private function getInput(ConfigurationResolver $resolver): InputInterface + { + // @phpstan-ignore-next-line + $definition = (fn () => $this->definition)->call($this->input); + + $definition->addOptions([ + new InputOption('stop-on-violation', null, InputOption::VALUE_REQUIRED, ''), + new InputOption('allow-risky', null, InputOption::VALUE_REQUIRED, ''), + new InputOption('rules', null, InputOption::VALUE_REQUIRED, ''), + new InputOption('using-cache', null, InputOption::VALUE_REQUIRED, ''), + ]); + + $this->input->setOption('stop-on-violation', $resolver->shouldStopOnViolation()); + $this->input->setOption('allow-risky', $resolver->getRiskyAllowed() ? 'yes' : 'no'); + $this->input->setOption('rules', json_encode($resolver->getRules())); + $this->input->setOption('using-cache', $resolver->getUsingCache() ? 'yes' : 'no'); + + return $this->input; + } } diff --git a/app/Commands/DefaultCommand.php b/app/Commands/DefaultCommand.php index e4736001..060672a2 100644 --- a/app/Commands/DefaultCommand.php +++ b/app/Commands/DefaultCommand.php @@ -44,8 +44,11 @@ protected function configure() new InputOption('diff', '', InputOption::VALUE_REQUIRED, 'Only fix files that have changed since branching off from the given branch', null, ['main', 'master', 'origin/main', 'origin/master']), new InputOption('dirty', '', InputOption::VALUE_NONE, 'Only fix files that have uncommitted changes'), new InputOption('format', '', InputOption::VALUE_REQUIRED, 'The output format that should be used'), + new InputOption('output-to-file', '', InputOption::VALUE_REQUIRED, 'Output the test results to a file at this path'), + new InputOption('output-format', '', InputOption::VALUE_REQUIRED, 'The format that should be used when outputting the test results to a file'), new InputOption('cache-file', '', InputArgument::OPTIONAL, 'The path to the cache file'), - ] + new InputOption('parallel', 'p', InputOption::VALUE_NONE, 'Runs the linter in parallel (Experimental)'), + ], ); } diff --git a/app/Factories/ConfigurationFactory.php b/app/Factories/ConfigurationFactory.php index e8992633..4c9b0ec9 100644 --- a/app/Factories/ConfigurationFactory.php +++ b/app/Factories/ConfigurationFactory.php @@ -42,12 +42,13 @@ class ConfigurationFactory */ public static function preset($rules) { - return (new Config) + return (new Config) // @phpstan-ignore-line ->setParallelConfig(ParallelConfigFactory::detect()) ->setFinder(self::finder()) ->setRules(array_merge($rules, resolve(ConfigurationJsonRepository::class)->rules())) ->setRiskyAllowed(true) - ->setUsingCache(true); + ->setUsingCache(true) + ->setUnsupportedPhpVersionAllowed(true); } /** diff --git a/app/Repositories/ConfigurationJsonRepository.php b/app/Repositories/ConfigurationJsonRepository.php index caca7d1a..c9924286 100644 --- a/app/Repositories/ConfigurationJsonRepository.php +++ b/app/Repositories/ConfigurationJsonRepository.php @@ -77,7 +77,13 @@ public function preset() protected function get() { if (! is_null($this->path) && $this->fileExists((string) $this->path)) { - return tap(json_decode(file_get_contents($this->path), true), function ($configuration) { + $baseConfig = json_decode(file_get_contents($this->path), true); + + if (isset($baseConfig['extend'])) { + $baseConfig = $this->resolveExtend($baseConfig); + } + + return tap($baseConfig, function ($configuration) { if (! is_array($configuration)) { abort(1, sprintf('The configuration file [%s] is not valid JSON.', $this->path)); } @@ -99,4 +105,23 @@ protected function fileExists(string $path) default => file_exists($path) }; } + + /** + * Resolve the file to extend. + * + * @param array|string> $configuration + * @return array|string> + */ + private function resolveExtend(array $configuration) + { + $path = realpath(dirname($this->path).DIRECTORY_SEPARATOR.$configuration['extend']); + + $extended = json_decode(file_get_contents($path), true); + + if (isset($extended['extend'])) { + throw new \LogicException('Pint configuration cannot extend from more than 1 file.'); + } + + return array_replace_recursive($extended, $configuration); + } } diff --git a/art/logo.svg b/art/logo.svg index 7655d7c8..5d97ebf3 100644 --- a/art/logo.svg +++ b/art/logo.svg @@ -1,18 +1,19 @@ - - Laravel Pint logo + - - - - - - - - - - - - + + + + + + + + + + + + + diff --git a/box.json b/box.json index 710fe943..e0522f04 100644 --- a/box.json +++ b/box.json @@ -4,6 +4,7 @@ "app", "bootstrap", "config", + "overrides", "resources", "vendor" ], diff --git a/builds/pint b/builds/pint index 84366a69..c92cc77c 100755 Binary files a/builds/pint and b/builds/pint differ diff --git a/composer.json b/composer.json index eec34054..5b77d081 100644 --- a/composer.json +++ b/composer.json @@ -23,12 +23,12 @@ "ext-xml": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.72.0", - "illuminate/view": "^11.44.2", - "larastan/larastan": "^3.2.0", - "laravel-zero/framework": "^11.36.1", + "friendsofphp/php-cs-fixer": "^3.82.2", + "illuminate/view": "^11.45.1", + "larastan/larastan": "^3.5.0", + "laravel-zero/framework": "^11.45.0", "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^2.3", + "nunomaduro/termwind": "^2.3.1", "pestphp/pest": "^2.36.0" }, "autoload": { @@ -36,7 +36,10 @@ "App\\": "app/", "Database\\Factories\\": "database/factories/", "Database\\Seeders\\": "database/seeders/" - } + }, + "files": [ + "overrides/Runner/Parallel/ProcessFactory.php" + ] }, "autoload-dev": { "psr-4": { diff --git a/composer.lock b/composer.lock index 469df065..987ae963 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "78b5dd7fca0ab9ed2723f55e23229897", + "content-hash": "0a3c344120957a842e61f5ba362fae88", "packages": [], "packages-dev": [ { @@ -521,26 +521,29 @@ }, { "name": "doctrine/deprecations", - "version": "1.1.4", + "version": "1.1.5", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", - "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", + "reference": "459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, + "conflict": { + "phpunit/phpunit": "<=7.5 || >=13" + }, "require-dev": { - "doctrine/coding-standard": "^9 || ^12", - "phpstan/phpstan": "1.4.10 || 2.0.3", + "doctrine/coding-standard": "^9 || ^12 || ^13", + "phpstan/phpstan": "1.4.10 || 2.1.11", "phpstan/phpstan-phpunit": "^1.0 || ^2", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12", "psr/log": "^1 || ^2 || ^3" }, "suggest": { @@ -560,9 +563,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + "source": "https://github.com/doctrine/deprecations/tree/1.1.5" }, - "time": "2024-12-07T21:18:45+00:00" + "time": "2025-04-07T20:06:18+00:00" }, { "name": "doctrine/inflector", @@ -830,16 +833,16 @@ }, { "name": "filp/whoops", - "version": "2.17.0", + "version": "2.18.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "075bc0c26631110584175de6523ab3f1652eb28e" + "reference": "59a123a3d459c5a23055802237cb317f609867e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/075bc0c26631110584175de6523ab3f1652eb28e", - "reference": "075bc0c26631110584175de6523ab3f1652eb28e", + "url": "https://api.github.com/repos/filp/whoops/zipball/59a123a3d459c5a23055802237cb317f609867e5", + "reference": "59a123a3d459c5a23055802237cb317f609867e5", "shasum": "" }, "require": { @@ -889,7 +892,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.17.0" + "source": "https://github.com/filp/whoops/tree/2.18.3" }, "funding": [ { @@ -897,61 +900,63 @@ "type": "github" } ], - "time": "2025-01-25T12:00:00+00:00" + "time": "2025-06-16T00:02:10+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v3.72.0", + "version": "v3.82.2", "source": { "type": "git", "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", - "reference": "900389362c43d116fee1ffc51f7878145fa61b57" + "reference": "684ed3ab41008a2a4848de8bde17eb168c596247" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/900389362c43d116fee1ffc51f7878145fa61b57", - "reference": "900389362c43d116fee1ffc51f7878145fa61b57", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/684ed3ab41008a2a4848de8bde17eb168c596247", + "reference": "684ed3ab41008a2a4848de8bde17eb168c596247", "shasum": "" }, "require": { "clue/ndjson-react": "^1.0", "composer/semver": "^3.4", - "composer/xdebug-handler": "^3.0.3", + "composer/xdebug-handler": "^3.0.5", "ext-filter": "*", + "ext-hash": "*", "ext-json": "*", "ext-tokenizer": "*", "fidry/cpu-core-counter": "^1.2", "php": "^7.4 || ^8.0", - "react/child-process": "^0.6.5", + "react/child-process": "^0.6.6", "react/event-loop": "^1.0", - "react/promise": "^2.0 || ^3.0", + "react/promise": "^2.11 || ^3.0", "react/socket": "^1.0", "react/stream": "^1.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" + "sebastian/diff": "^4.0.6 || ^5.1.1 || ^6.0.2 || ^7.0", + "symfony/console": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/event-dispatcher": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/filesystem": "^5.4.45 || ^6.4.13 || ^7.0", + "symfony/finder": "^5.4.45 || ^6.4.17 || ^7.0", + "symfony/options-resolver": "^5.4.45 || ^6.4.16 || ^7.0", + "symfony/polyfill-mbstring": "^1.32", + "symfony/polyfill-php80": "^1.32", + "symfony/polyfill-php81": "^1.32", + "symfony/process": "^5.4.47 || ^6.4.20 || ^7.2", + "symfony/stopwatch": "^5.4.45 || ^6.4.19 || ^7.0" }, "require-dev": { "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", + "justinrainbow/json-schema": "^5.3 || ^6.4", + "keradus/cli-executor": "^2.2", "mikey179/vfsstream": "^1.6.12", - "php-coveralls/php-coveralls": "^2.7", + "php-coveralls/php-coveralls": "^2.8", "php-cs-fixer/accessible-object": "^1.1", "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" + "phpunit/phpunit": "^9.6.23 || ^10.5.47 || ^11.5.25", + "symfony/polyfill-php84": "^1.32", + "symfony/var-dumper": "^5.4.48 || ^6.4.23 || ^7.3.1", + "symfony/yaml": "^5.4.45 || ^6.4.23 || ^7.3.1" }, "suggest": { "ext-dom": "For handling output formats in XML", @@ -992,7 +997,7 @@ ], "support": { "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", - "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.72.0" + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.82.2" }, "funding": [ { @@ -1000,7 +1005,7 @@ "type": "github" } ], - "time": "2025-03-13T11:25:37+00:00" + "time": "2025-07-08T21:13:15+00:00" }, { "name": "fruitcake/php-cors", @@ -1137,16 +1142,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.9.2", + "version": "7.9.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b" + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", - "reference": "d281ed313b989f213357e3be1a179f02196ac99b", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", "shasum": "" }, "require": { @@ -1243,7 +1248,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.9.2" + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" }, "funding": [ { @@ -1259,20 +1264,20 @@ "type": "tidelift" } ], - "time": "2024-07-24T11:22:20+00:00" + "time": "2025-03-27T13:37:11+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.4", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", - "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", "shasum": "" }, "require": { @@ -1326,7 +1331,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.4" + "source": "https://github.com/guzzle/promises/tree/2.2.0" }, "funding": [ { @@ -1342,20 +1347,20 @@ "type": "tidelift" } ], - "time": "2024-10-17T10:06:22+00:00" + "time": "2025-03-27T13:27:01+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.7.0", + "version": "2.7.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", - "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", "shasum": "" }, "require": { @@ -1442,7 +1447,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.7.0" + "source": "https://github.com/guzzle/psr7/tree/2.7.1" }, "funding": [ { @@ -1458,7 +1463,7 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:15:46+00:00" + "time": "2025-03-27T12:30:47+00:00" }, { "name": "guzzlehttp/uri-template", @@ -1548,20 +1553,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v2.0.1", + "version": "v2.1.1", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3" + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", - "reference": "8c3d0a3f6af734494ad8f6fbbee0ba92422859f3", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", "shasum": "" }, "require": { - "php": "^5.3|^7.0|^8.0" + "php": "^7.4|^8.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -1569,8 +1574,8 @@ "kodova/hamcrest-php": "*" }, "require-dev": { - "phpunit/php-file-iterator": "^1.4 || ^2.0", - "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0" + "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", + "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { @@ -1593,22 +1598,22 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.0.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" }, - "time": "2020-07-09T08:09:16+00:00" + "time": "2025-04-30T06:54:44+00:00" }, { "name": "iamcal/sql-parser", - "version": "v0.5", + "version": "v0.6", "source": { "type": "git", "url": "https://github.com/iamcal/SQLParser.git", - "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88" + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/644fd994de3b54e5d833aecf406150aa3b66ca88", - "reference": "644fd994de3b54e5d833aecf406150aa3b66ca88", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/947083e2dca211a6f12fb1beb67a01e387de9b62", + "reference": "947083e2dca211a6f12fb1beb67a01e387de9b62", "shasum": "" }, "require-dev": { @@ -1634,22 +1639,22 @@ "description": "MySQL schema parser", "support": { "issues": "https://github.com/iamcal/SQLParser/issues", - "source": "https://github.com/iamcal/SQLParser/tree/v0.5" + "source": "https://github.com/iamcal/SQLParser/tree/v0.6" }, - "time": "2024-03-22T22:46:32+00:00" + "time": "2025-03-17T16:59:46+00:00" }, { "name": "illuminate/bus", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/bus.git", - "reference": "a6945ee3f9f19f45e8ecbfda1884418d13794e1d" + "reference": "5f7cd1f99b2ff7dd0ef20aead81da1390c4bc8e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/bus/zipball/a6945ee3f9f19f45e8ecbfda1884418d13794e1d", - "reference": "a6945ee3f9f19f45e8ecbfda1884418d13794e1d", + "url": "https://api.github.com/repos/illuminate/bus/zipball/5f7cd1f99b2ff7dd0ef20aead81da1390c4bc8e3", + "reference": "5f7cd1f99b2ff7dd0ef20aead81da1390c4bc8e3", "shasum": "" }, "require": { @@ -1689,11 +1694,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-12T20:57:17+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/cache", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/cache.git", @@ -1755,16 +1760,16 @@ }, { "name": "illuminate/collections", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/collections.git", - "reference": "f2f537dfb2a142791d37478f34c920b44a45cea9" + "reference": "856b1da953e46281ba61d7c82d337072d3ee1825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/f2f537dfb2a142791d37478f34c920b44a45cea9", - "reference": "f2f537dfb2a142791d37478f34c920b44a45cea9", + "url": "https://api.github.com/repos/illuminate/collections/zipball/856b1da953e46281ba61d7c82d337072d3ee1825", + "reference": "856b1da953e46281ba61d7c82d337072d3ee1825", "shasum": "" }, "require": { @@ -1807,20 +1812,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-03-06T14:02:47+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/conditionable", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/conditionable.git", - "reference": "911df1bda950a3b799cf80671764e34eede131c6" + "reference": "319b717e0587bd7c8a3b44464f0e27867b4bcda9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/conditionable/zipball/911df1bda950a3b799cf80671764e34eede131c6", - "reference": "911df1bda950a3b799cf80671764e34eede131c6", + "url": "https://api.github.com/repos/illuminate/conditionable/zipball/319b717e0587bd7c8a3b44464f0e27867b4bcda9", + "reference": "319b717e0587bd7c8a3b44464f0e27867b4bcda9", "shasum": "" }, "require": { @@ -1853,11 +1858,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-11-21T16:28:56+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/config", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/config.git", @@ -1905,16 +1910,16 @@ }, { "name": "illuminate/console", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/console.git", - "reference": "bd26864d3356a7fad52c06abed0c71e90dd5ebcc" + "reference": "33305d7ec3d12af2657dd1f0f2d5776b33ffcbdc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/console/zipball/bd26864d3356a7fad52c06abed0c71e90dd5ebcc", - "reference": "bd26864d3356a7fad52c06abed0c71e90dd5ebcc", + "url": "https://api.github.com/repos/illuminate/console/zipball/33305d7ec3d12af2657dd1f0f2d5776b33ffcbdc", + "reference": "33305d7ec3d12af2657dd1f0f2d5776b33ffcbdc", "shasum": "" }, "require": { @@ -1967,20 +1972,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-11T15:03:50+00:00" + "time": "2025-05-12T13:30:23+00:00" }, { "name": "illuminate/container", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/container.git", - "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca" + "reference": "79bf9149ad7ddd7e14326ebcdd41197d2c4ee36a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/container/zipball/4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca", - "reference": "4dcc3fcbab92e734fc0c08d9cfd97f5a1aef18ca", + "url": "https://api.github.com/repos/illuminate/container/zipball/79bf9149ad7ddd7e14326ebcdd41197d2c4ee36a", + "reference": "79bf9149ad7ddd7e14326ebcdd41197d2c4ee36a", "shasum": "" }, "require": { @@ -2018,20 +2023,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-10T14:20:57+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/contracts", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/contracts.git", - "reference": "b350a3cd8450846325cb49e1cbc1293598b18898" + "reference": "4b2a67d1663f50085bc91e6371492697a5d2d4e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/b350a3cd8450846325cb49e1cbc1293598b18898", - "reference": "b350a3cd8450846325cb49e1cbc1293598b18898", + "url": "https://api.github.com/repos/illuminate/contracts/zipball/4b2a67d1663f50085bc91e6371492697a5d2d4e8", + "reference": "4b2a67d1663f50085bc91e6371492697a5d2d4e8", "shasum": "" }, "require": { @@ -2066,20 +2071,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-10T14:20:57+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/database", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/database.git", - "reference": "a63391e43a6d38beb40fa21fc020d16c9b5352ea" + "reference": "0b3a1d429fb44c8bc2ed6afcc431872cbf3a85b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/database/zipball/a63391e43a6d38beb40fa21fc020d16c9b5352ea", - "reference": "a63391e43a6d38beb40fa21fc020d16c9b5352ea", + "url": "https://api.github.com/repos/illuminate/database/zipball/0b3a1d429fb44c8bc2ed6afcc431872cbf3a85b2", + "reference": "0b3a1d429fb44c8bc2ed6afcc431872cbf3a85b2", "shasum": "" }, "require": { @@ -2135,20 +2140,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-03-12T14:13:54+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/events", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/events.git", - "reference": "607e8620fe51462e859859bb57b469e2c61efe1d" + "reference": "b72dab66d8e05d22dc5aa949efec150bbc73e827" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/events/zipball/607e8620fe51462e859859bb57b469e2c61efe1d", - "reference": "607e8620fe51462e859859bb57b469e2c61efe1d", + "url": "https://api.github.com/repos/illuminate/events/zipball/b72dab66d8e05d22dc5aa949efec150bbc73e827", + "reference": "b72dab66d8e05d22dc5aa949efec150bbc73e827", "shasum": "" }, "require": { @@ -2190,20 +2195,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-31T17:44:22+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/filesystem", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/filesystem.git", - "reference": "c79a54ebc61ad4e1665ca7610f276ff8a92f48f7" + "reference": "d1f217b75ee193bbe27f31df8a94ff6759f31469" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/filesystem/zipball/c79a54ebc61ad4e1665ca7610f276ff8a92f48f7", - "reference": "c79a54ebc61ad4e1665ca7610f276ff8a92f48f7", + "url": "https://api.github.com/repos/illuminate/filesystem/zipball/d1f217b75ee193bbe27f31df8a94ff6759f31469", + "reference": "d1f217b75ee193bbe27f31df8a94ff6759f31469", "shasum": "" }, "require": { @@ -2257,20 +2262,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-19T20:17:00+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/http", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/http.git", - "reference": "8fe991160856deebae6e7f45719140228635c99c" + "reference": "383df4e480dbd6272cc0d87fc8206b6405b1b9d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/http/zipball/8fe991160856deebae6e7f45719140228635c99c", - "reference": "8fe991160856deebae6e7f45719140228635c99c", + "url": "https://api.github.com/repos/illuminate/http/zipball/383df4e480dbd6272cc0d87fc8206b6405b1b9d8", + "reference": "383df4e480dbd6272cc0d87fc8206b6405b1b9d8", "shasum": "" }, "require": { @@ -2318,11 +2323,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-23T14:04:49+00:00" + "time": "2025-03-24T11:58:51+00:00" }, { "name": "illuminate/macroable", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/macroable.git", @@ -2368,16 +2373,16 @@ }, { "name": "illuminate/pipeline", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/pipeline.git", - "reference": "713afd1b476f1974f6e0207fc9f65671f16fb64b" + "reference": "f73bb7cab13ac8ef91094dc46976f5e992eea127" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/pipeline/zipball/713afd1b476f1974f6e0207fc9f65671f16fb64b", - "reference": "713afd1b476f1974f6e0207fc9f65671f16fb64b", + "url": "https://api.github.com/repos/illuminate/pipeline/zipball/f73bb7cab13ac8ef91094dc46976f5e992eea127", + "reference": "f73bb7cab13ac8ef91094dc46976f5e992eea127", "shasum": "" }, "require": { @@ -2412,11 +2417,11 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-17T16:02:42+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/process", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/process.git", @@ -2467,16 +2472,16 @@ }, { "name": "illuminate/session", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/session.git", - "reference": "2ad71663c1cca955f483a5227247f13eba3b495c" + "reference": "00a36b354c12a414236218c1ad193c445b36a191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/session/zipball/2ad71663c1cca955f483a5227247f13eba3b495c", - "reference": "2ad71663c1cca955f483a5227247f13eba3b495c", + "url": "https://api.github.com/repos/illuminate/session/zipball/00a36b354c12a414236218c1ad193c445b36a191", + "reference": "00a36b354c12a414236218c1ad193c445b36a191", "shasum": "" }, "require": { @@ -2520,20 +2525,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-01-28T15:20:31+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "illuminate/support", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/support.git", - "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc" + "reference": "9732f41d7a9836a2c466ab06460efc732aeb417a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/support/zipball/d86d42ad0c75a020e0e4a7c734e9424ca86811cc", - "reference": "d86d42ad0c75a020e0e4a7c734e9424ca86811cc", + "url": "https://api.github.com/repos/illuminate/support/zipball/9732f41d7a9836a2c466ab06460efc732aeb417a", + "reference": "9732f41d7a9836a2c466ab06460efc732aeb417a", "shasum": "" }, "require": { @@ -2558,7 +2563,7 @@ "suggest": { "illuminate/filesystem": "Required to use the Composer class (^11.0).", "laravel/serializable-closure": "Required to use the once function (^1.3|^2.0).", - "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.6).", + "league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.7).", "league/uri": "Required to use the Uri class (^7.5.1).", "ramsey/uuid": "Required to use Str::uuid() (^4.7).", "symfony/process": "Required to use the Composer class (^7.0).", @@ -2597,20 +2602,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-23T14:20:22+00:00" + "time": "2025-05-11T20:47:08+00:00" }, { "name": "illuminate/testing", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/testing.git", - "reference": "55685e5d1a594032b256d7c736091f89f7c007fb" + "reference": "0b4bb2485c4f8b546e1a60af5320c470d042890a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/testing/zipball/55685e5d1a594032b256d7c736091f89f7c007fb", - "reference": "55685e5d1a594032b256d7c736091f89f7c007fb", + "url": "https://api.github.com/repos/illuminate/testing/zipball/0b4bb2485c4f8b546e1a60af5320c470d042890a", + "reference": "0b4bb2485c4f8b546e1a60af5320c470d042890a", "shasum": "" }, "require": { @@ -2656,20 +2661,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-23T14:20:06+00:00" + "time": "2025-05-19T12:53:09+00:00" }, { "name": "illuminate/view", - "version": "v11.44.2", + "version": "v11.45.1", "source": { "type": "git", "url": "https://github.com/illuminate/view.git", - "reference": "fb583cecd970d5eb1265320208fb234e1103eaa7" + "reference": "9da5543dccb4e406f98016bac8678c97b7dc6915" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/illuminate/view/zipball/fb583cecd970d5eb1265320208fb234e1103eaa7", - "reference": "fb583cecd970d5eb1265320208fb234e1103eaa7", + "url": "https://api.github.com/repos/illuminate/view/zipball/9da5543dccb4e406f98016bac8678c97b7dc6915", + "reference": "9da5543dccb4e406f98016bac8678c97b7dc6915", "shasum": "" }, "require": { @@ -2710,20 +2715,20 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2025-02-17T16:11:15+00:00" + "time": "2025-03-24T11:54:20+00:00" }, { "name": "jean85/pretty-package-versions", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", - "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/4d7aa5dab42e2a76d99559706022885de0e18e1a", + "reference": "4d7aa5dab42e2a76d99559706022885de0e18e1a", "shasum": "" }, "require": { @@ -2733,8 +2738,9 @@ "require-dev": { "friendsofphp/php-cs-fixer": "^3.2", "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^1.4", + "phpstan/phpstan": "^2.0", "phpunit/phpunit": "^7.5|^8.5|^9.6", + "rector/rector": "^2.0", "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", @@ -2767,9 +2773,9 @@ ], "support": { "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.1" }, - "time": "2024-11-18T16:19:46+00:00" + "time": "2025-03-19T14:43:43+00:00" }, { "name": "jolicode/jolinotif", @@ -2890,40 +2896,40 @@ }, { "name": "larastan/larastan", - "version": "v3.2.0", + "version": "v3.5.0", "source": { "type": "git", "url": "https://github.com/larastan/larastan.git", - "reference": "d84d5a3b6536a586899ad6855a3e098473703690" + "reference": "e8ccd73008487ba91da9877b373f8c447743f1ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/larastan/larastan/zipball/d84d5a3b6536a586899ad6855a3e098473703690", - "reference": "d84d5a3b6536a586899ad6855a3e098473703690", + "url": "https://api.github.com/repos/larastan/larastan/zipball/e8ccd73008487ba91da9877b373f8c447743f1ce", + "reference": "e8ccd73008487ba91da9877b373f8c447743f1ce", "shasum": "" }, "require": { "ext-json": "*", - "iamcal/sql-parser": "^0.5.0", - "illuminate/console": "^11.41.3 || ^12.0", - "illuminate/container": "^11.41.3 || ^12.0", - "illuminate/contracts": "^11.41.3 || ^12.0", - "illuminate/database": "^11.41.3 || ^12.0", - "illuminate/http": "^11.41.3 || ^12.0", - "illuminate/pipeline": "^11.41.3 || ^12.0", - "illuminate/support": "^11.41.3 || ^12.0", + "iamcal/sql-parser": "^0.6.0", + "illuminate/console": "^11.44.2 || ^12.4.1", + "illuminate/container": "^11.44.2 || ^12.4.1", + "illuminate/contracts": "^11.44.2 || ^12.4.1", + "illuminate/database": "^11.44.2 || ^12.4.1", + "illuminate/http": "^11.44.2 || ^12.4.1", + "illuminate/pipeline": "^11.44.2 || ^12.4.1", + "illuminate/support": "^11.44.2 || ^12.4.1", "php": "^8.2", - "phpstan/phpstan": "^2.1.3" + "phpstan/phpstan": "^2.1.11" }, "require-dev": { - "doctrine/coding-standard": "^12.0", - "laravel/framework": "^11.41.3 || ^12.0", - "mockery/mockery": "^1.6", - "nikic/php-parser": "^5.3", - "orchestra/canvas": "^v9.1.3 || ^10.0", - "orchestra/testbench-core": "^9.5.2 || ^10.0", - "phpstan/phpstan-deprecation-rules": "^2.0.0", - "phpunit/phpunit": "^10.5.35 || ^11.3.6" + "doctrine/coding-standard": "^13", + "laravel/framework": "^11.44.2 || ^12.7.2", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.4", + "orchestra/canvas": "^v9.2.2 || ^10.0.1", + "orchestra/testbench-core": "^9.12.0 || ^10.1", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15" }, "suggest": { "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" @@ -2952,13 +2958,9 @@ { "name": "Can Vural", "email": "can9119@gmail.com" - }, - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" } ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", "keywords": [ "PHPStan", "code analyse", @@ -2971,7 +2973,7 @@ ], "support": { "issues": "https://github.com/larastan/larastan/issues", - "source": "https://github.com/larastan/larastan/tree/v3.2.0" + "source": "https://github.com/larastan/larastan/tree/v3.5.0" }, "funding": [ { @@ -2979,25 +2981,28 @@ "type": "github" } ], - "time": "2025-03-14T21:54:26+00:00" + "time": "2025-06-19T22:41:50+00:00" }, { "name": "laravel-zero/foundation", - "version": "v11.5.0", + "version": "v11.44.3", "source": { "type": "git", "url": "https://github.com/laravel-zero/foundation.git", - "reference": "9d566a50d1399656e837a3b9354745149265e32e" + "reference": "6c8b00933a8673f6febe30dab42effee0ff82b4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/9d566a50d1399656e837a3b9354745149265e32e", - "reference": "9d566a50d1399656e837a3b9354745149265e32e", + "url": "https://api.github.com/repos/laravel-zero/foundation/zipball/6c8b00933a8673f6febe30dab42effee0ff82b4a", + "reference": "6c8b00933a8673f6febe30dab42effee0ff82b4a", "shasum": "" }, "require": { "php": "^8.2" }, + "require-dev": { + "laravel/framework": "^11" + }, "type": "library", "extra": { "branch-alias": { @@ -3022,7 +3027,7 @@ "laravel" ], "support": { - "source": "https://github.com/laravel-zero/foundation/tree/v11.5.0" + "source": "https://github.com/laravel-zero/foundation/tree/v11.44.3" }, "funding": [ { @@ -3034,20 +3039,20 @@ "type": "github" } ], - "time": "2024-04-24T16:56:18+00:00" + "time": "2025-03-31T15:06:35+00:00" }, { "name": "laravel-zero/framework", - "version": "v11.36.1", + "version": "v11.45.0", "source": { "type": "git", "url": "https://github.com/laravel-zero/framework.git", - "reference": "9e2c9d4616f125c355e24f752881ca7f27c1f226" + "reference": "111d28d38d8463b5ffeb7b039fe0083b9cad8905" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel-zero/framework/zipball/9e2c9d4616f125c355e24f752881ca7f27c1f226", - "reference": "9e2c9d4616f125c355e24f752881ca7f27c1f226", + "url": "https://api.github.com/repos/laravel-zero/framework/zipball/111d28d38d8463b5ffeb7b039fe0083b9cad8905", + "reference": "111d28d38d8463b5ffeb7b039fe0083b9cad8905", "shasum": "" }, "require": { @@ -3066,7 +3071,7 @@ "illuminate/support": "^11.30.0", "illuminate/testing": "^11.30.0", "laravel-zero/foundation": "^11.5.0", - "laravel/prompts": "^0.3.1 || ^0.3.1 || ^0.3.1", + "laravel/prompts": "^0.3.1", "league/flysystem": "^3.29.1", "nunomaduro/collision": "^8.5.0", "nunomaduro/laravel-console-summary": "^1.12.1", @@ -3150,20 +3155,20 @@ "type": "github" } ], - "time": "2024-12-02T16:33:43+00:00" + "time": "2025-05-20T20:20:02+00:00" }, { "name": "laravel/prompts", - "version": "v0.3.5", + "version": "v0.3.6", "source": { "type": "git", "url": "https://github.com/laravel/prompts.git", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1" + "reference": "86a8b692e8661d0fb308cec64f3d176821323077" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/prompts/zipball/57b8f7efe40333cdb925700891c7d7465325d3b1", - "reference": "57b8f7efe40333cdb925700891c7d7465325d3b1", + "url": "https://api.github.com/repos/laravel/prompts/zipball/86a8b692e8661d0fb308cec64f3d176821323077", + "reference": "86a8b692e8661d0fb308cec64f3d176821323077", "shasum": "" }, "require": { @@ -3207,22 +3212,22 @@ "description": "Add beautiful and user-friendly forms to your command-line applications.", "support": { "issues": "https://github.com/laravel/prompts/issues", - "source": "https://github.com/laravel/prompts/tree/v0.3.5" + "source": "https://github.com/laravel/prompts/tree/v0.3.6" }, - "time": "2025-02-11T13:34:40+00:00" + "time": "2025-07-07T14:17:42+00:00" }, { "name": "laravel/serializable-closure", - "version": "v2.0.3", + "version": "v2.0.4", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f379c13663245f7aa4512a7869f62eb14095f23f" + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f379c13663245f7aa4512a7869f62eb14095f23f", - "reference": "f379c13663245f7aa4512a7869f62eb14095f23f", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/b352cf0534aa1ae6b4d825d1e762e35d43f8a841", + "reference": "b352cf0534aa1ae6b4d825d1e762e35d43f8a841", "shasum": "" }, "require": { @@ -3270,20 +3275,20 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2025-02-11T15:03:05+00:00" + "time": "2025-03-19T13:51:03+00:00" }, { "name": "league/flysystem", - "version": "3.29.1", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319" + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/edc1bb7c86fab0776c3287dbd19b5fa278347319", - "reference": "edc1bb7c86fab0776c3287dbd19b5fa278347319", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2203e3151755d874bb2943649dae1eb8533ac93e", + "reference": "2203e3151755d874bb2943649dae1eb8533ac93e", "shasum": "" }, "require": { @@ -3307,13 +3312,13 @@ "composer/semver": "^3.0", "ext-fileinfo": "*", "ext-ftp": "*", - "ext-mongodb": "^1.3", + "ext-mongodb": "^1.3|^2", "ext-zip": "*", "friendsofphp/php-cs-fixer": "^3.5", "google/cloud-storage": "^1.23", "guzzlehttp/psr7": "^2.6", "microsoft/azure-storage-blob": "^1.1", - "mongodb/mongodb": "^1.2", + "mongodb/mongodb": "^1.2|^2", "phpseclib/phpseclib": "^3.0.36", "phpstan/phpstan": "^1.10", "phpunit/phpunit": "^9.5.11|^10.0", @@ -3351,22 +3356,22 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.29.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.30.0" }, - "time": "2024-10-08T08:58:34+00:00" + "time": "2025-06-25T13:29:59+00:00" }, { "name": "league/flysystem-local", - "version": "3.29.0", + "version": "3.30.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27" + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/e0e8d52ce4b2ed154148453d321e97c8e931bd27", - "reference": "e0e8d52ce4b2ed154148453d321e97c8e931bd27", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/6691915f77c7fb69adfb87dcd550052dc184ee10", + "reference": "6691915f77c7fb69adfb87dcd550052dc184ee10", "shasum": "" }, "require": { @@ -3400,9 +3405,9 @@ "local" ], "support": { - "source": "https://github.com/thephpleague/flysystem-local/tree/3.29.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.30.0" }, - "time": "2024-08-09T21:24:39+00:00" + "time": "2025-05-21T10:34:19+00:00" }, { "name": "league/mime-type-detection", @@ -3545,16 +3550,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.13.0", + "version": "1.13.3", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414" + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", - "reference": "024473a478be9df5fdaca2c793f2232fe788e414", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/faed855a7b5f4d4637717c2b3863e277116beb36", + "reference": "faed855a7b5f4d4637717c2b3863e277116beb36", "shasum": "" }, "require": { @@ -3593,7 +3598,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.3" }, "funding": [ { @@ -3601,20 +3606,20 @@ "type": "tidelift" } ], - "time": "2025-02-12T12:17:51+00:00" + "time": "2025-07-05T12:25:42+00:00" }, { "name": "nesbot/carbon", - "version": "3.8.6", + "version": "3.10.1", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd" + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/ff2f20cf83bd4d503720632ce8a426dc747bf7fd", - "reference": "ff2f20cf83bd4d503720632ce8a426dc747bf7fd", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1fd1935b2d90aef2f093c5e35f7ae1257c448d00", + "reference": "1fd1935b2d90aef2f093c5e35f7ae1257c448d00", "shasum": "" }, "require": { @@ -3622,9 +3627,9 @@ "ext-json": "*", "php": "^8.1", "psr/clock": "^1.0", - "symfony/clock": "^6.3 || ^7.0", + "symfony/clock": "^6.3.12 || ^7.0", "symfony/polyfill-mbstring": "^1.0", - "symfony/translation": "^4.4.18 || ^5.2.1|| ^6.0 || ^7.0" + "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0" }, "provide": { "psr/clock-implementation": "1.0" @@ -3632,14 +3637,13 @@ "require-dev": { "doctrine/dbal": "^3.6.3 || ^4.0", "doctrine/orm": "^2.15.2 || ^3.0", - "friendsofphp/php-cs-fixer": "^3.57.2", + "friendsofphp/php-cs-fixer": "^3.75.0", "kylekatarnls/multi-tester": "^2.5.3", - "ondrejmirtes/better-reflection": "^6.25.0.4", "phpmd/phpmd": "^2.15.0", - "phpstan/extension-installer": "^1.3.1", - "phpstan/phpstan": "^1.11.2", - "phpunit/phpunit": "^10.5.20", - "squizlabs/php_codesniffer": "^3.9.0" + "phpstan/extension-installer": "^1.4.3", + "phpstan/phpstan": "^2.1.17", + "phpunit/phpunit": "^10.5.46", + "squizlabs/php_codesniffer": "^3.13.0" }, "bin": [ "bin/carbon" @@ -3707,20 +3711,20 @@ "type": "tidelift" } ], - "time": "2025-02-20T17:33:38+00:00" + "time": "2025-06-21T15:19:35+00:00" }, { "name": "nikic/php-parser", - "version": "v5.4.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494" + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", - "reference": "447a020a1f875a434d62f2a401f53b82a396e494", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", "shasum": "" }, "require": { @@ -3763,9 +3767,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.5.0" }, - "time": "2024-12-30T11:07:19+00:00" + "time": "2025-05-31T08:24:38+00:00" }, { "name": "nunomaduro/collision", @@ -4060,31 +4064,31 @@ }, { "name": "nunomaduro/termwind", - "version": "v2.3.0", + "version": "v2.3.1", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda" + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/52915afe6a1044e8b9cee1bcff836fb63acf9cda", - "reference": "52915afe6a1044e8b9cee1bcff836fb63acf9cda", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dfa08f390e509967a15c22493dc0bac5733d9123", + "reference": "dfa08f390e509967a15c22493dc0bac5733d9123", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.2", - "symfony/console": "^7.1.8" + "symfony/console": "^7.2.6" }, "require-dev": { - "illuminate/console": "^11.33.2", - "laravel/pint": "^1.18.2", + "illuminate/console": "^11.44.7", + "laravel/pint": "^1.22.0", "mockery/mockery": "^1.6.12", - "pestphp/pest": "^2.36.0", - "phpstan/phpstan": "^1.12.11", - "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^7.1.8", + "pestphp/pest": "^2.36.0 || ^3.8.2", + "phpstan/phpstan": "^1.12.25", + "phpstan/phpstan-strict-rules": "^1.6.2", + "symfony/var-dumper": "^7.2.6", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -4127,7 +4131,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.3.0" + "source": "https://github.com/nunomaduro/termwind/tree/v2.3.1" }, "funding": [ { @@ -4143,7 +4147,7 @@ "type": "github" } ], - "time": "2024-11-21T10:39:51+00:00" + "time": "2025-05-08T08:14:37+00:00" }, { "name": "pestphp/pest", @@ -4568,16 +4572,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.6.1", + "version": "5.6.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", - "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62", + "reference": "92dde6a5919e34835c506ac8c523ef095a95ed62", "shasum": "" }, "require": { @@ -4626,9 +4630,9 @@ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", "support": { "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.2" }, - "time": "2024-12-07T09:39:29+00:00" + "time": "2025-04-13T19:20:35+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -4812,16 +4816,16 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.8", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f" + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9adff3b87c03b12cc7e46a30a524648e497758f", - "reference": "f9adff3b87c03b12cc7e46a30a524648e497758f", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", "shasum": "" }, "require": { @@ -4866,7 +4870,7 @@ "type": "github" } ], - "time": "2025-03-09T09:30:48+00:00" + "time": "2025-05-21T20:55:28+00:00" }, { "name": "phpunit/php-code-coverage", @@ -5748,16 +5752,16 @@ }, { "name": "ramsey/collection", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/ramsey/collection.git", - "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109" + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/collection/zipball/3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", - "reference": "3c5990b8a5e0b79cd1cf11c2dc1229e58e93f109", + "url": "https://api.github.com/repos/ramsey/collection/zipball/344572933ad0181accbf4ba763e85a0306a8c5e2", + "reference": "344572933ad0181accbf4ba763e85a0306a8c5e2", "shasum": "" }, "require": { @@ -5818,27 +5822,26 @@ ], "support": { "issues": "https://github.com/ramsey/collection/issues", - "source": "https://github.com/ramsey/collection/tree/2.1.0" + "source": "https://github.com/ramsey/collection/tree/2.1.1" }, - "time": "2025-03-02T04:48:29+00:00" + "time": "2025-03-22T05:38:12+00:00" }, { "name": "ramsey/uuid", - "version": "4.7.6", + "version": "4.9.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088" + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088", - "reference": "91039bc1faa45ba123c4328958e620d382ec7088", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0", + "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0", "shasum": "" }, "require": { - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12", - "ext-json": "*", + "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -5846,26 +5849,23 @@ "rhumsaa/uuid": "self.version" }, "require-dev": { - "captainhook/captainhook": "^5.10", + "captainhook/captainhook": "^5.25", "captainhook/plugin-composer": "^5.3", - "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", - "doctrine/annotations": "^1.8", - "ergebnis/composer-normalize": "^2.15", - "mockery/mockery": "^1.3", + "dealerdirect/phpcodesniffer-composer-installer": "^1.0", + "ergebnis/composer-normalize": "^2.47", + "mockery/mockery": "^1.6", "paragonie/random-lib": "^2", - "php-mock/php-mock": "^2.2", - "php-mock/php-mock-mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.1", - "phpbench/phpbench": "^1.0", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-mockery": "^1.1", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^8.5 || ^9", - "ramsey/composer-repl": "^1.4", - "slevomat/coding-standard": "^8.4", - "squizlabs/php_codesniffer": "^3.5", - "vimeo/psalm": "^4.9" + "php-mock/php-mock": "^2.6", + "php-mock/php-mock-mockery": "^1.5", + "php-parallel-lint/php-parallel-lint": "^1.4.0", + "phpbench/phpbench": "^1.2.14", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-mockery": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6", + "slevomat/coding-standard": "^8.18", + "squizlabs/php_codesniffer": "^3.13" }, "suggest": { "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", @@ -5900,19 +5900,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.7.6" + "source": "https://github.com/ramsey/uuid/tree/4.9.0" }, - "funding": [ - { - "url": "https://github.com/ramsey", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", - "type": "tidelift" - } - ], - "time": "2024-04-27T21:32:50+00:00" + "time": "2025-06-25T14:20:11+00:00" }, { "name": "react/cache", @@ -7358,7 +7348,7 @@ }, { "name": "symfony/clock", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/clock.git", @@ -7412,7 +7402,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.2.0" + "source": "https://github.com/symfony/clock/tree/v7.3.0" }, "funding": [ { @@ -7432,23 +7422,24 @@ }, { "name": "symfony/console", - "version": "v7.2.1", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3" + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/fefcc18c0f5d0efe3ab3152f15857298868dc2c3", - "reference": "fefcc18c0f5d0efe3ab3152f15857298868dc2c3", + "url": "https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101", + "reference": "9e27aecde8f506ba0fd1d9989620c04a87697101", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0", "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^7.2" }, "conflict": { "symfony/dependency-injection": "<6.4", @@ -7505,7 +7496,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.2.1" + "source": "https://github.com/symfony/console/tree/v7.3.1" }, "funding": [ { @@ -7521,20 +7512,20 @@ "type": "tidelift" } ], - "time": "2024-12-11T03:49:26+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", - "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", "shasum": "" }, "require": { @@ -7547,7 +7538,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -7572,7 +7563,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" }, "funding": [ { @@ -7588,20 +7579,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/error-handler", - "version": "v7.2.4", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "aabf79938aa795350c07ce6464dd1985607d95d5" + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/aabf79938aa795350c07ce6464dd1985607d95d5", - "reference": "aabf79938aa795350c07ce6464dd1985607d95d5", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/35b55b166f6752d6aaf21aa042fc5ed280fce235", + "reference": "35b55b166f6752d6aaf21aa042fc5ed280fce235", "shasum": "" }, "require": { @@ -7614,9 +7605,11 @@ "symfony/http-kernel": "<6.4" }, "require-dev": { + "symfony/console": "^6.4|^7.0", "symfony/deprecation-contracts": "^2.5|^3", "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/serializer": "^6.4|^7.0", + "symfony/webpack-encore-bundle": "^1.0|^2.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -7647,7 +7640,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.2.4" + "source": "https://github.com/symfony/error-handler/tree/v7.3.1" }, "funding": [ { @@ -7663,20 +7656,20 @@ "type": "tidelift" } ], - "time": "2025-02-02T20:27:07+00:00" + "time": "2025-06-13T07:48:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", - "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/497f73ac996a598c92409b44ac43b6690c4f666d", + "reference": "497f73ac996a598c92409b44ac43b6690c4f666d", "shasum": "" }, "require": { @@ -7727,7 +7720,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.3.0" }, "funding": [ { @@ -7743,20 +7736,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2025-04-22T09:11:45+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" + "reference": "59eb412e93815df44f05f342958efa9f46b1e586" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", - "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", + "reference": "59eb412e93815df44f05f342958efa9f46b1e586", "shasum": "" }, "require": { @@ -7770,7 +7763,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -7803,7 +7796,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" }, "funding": [ { @@ -7819,11 +7812,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/filesystem", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", @@ -7869,7 +7862,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.2.0" + "source": "https://github.com/symfony/filesystem/tree/v7.3.0" }, "funding": [ { @@ -7889,16 +7882,16 @@ }, { "name": "symfony/finder", - "version": "v7.2.2", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb" + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/87a71856f2f56e4100373e92529eed3171695cfb", - "reference": "87a71856f2f56e4100373e92529eed3171695cfb", + "url": "https://api.github.com/repos/symfony/finder/zipball/ec2344cf77a48253bbca6939aa3d2477773ea63d", + "reference": "ec2344cf77a48253bbca6939aa3d2477773ea63d", "shasum": "" }, "require": { @@ -7933,7 +7926,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.2.2" + "source": "https://github.com/symfony/finder/tree/v7.3.0" }, "funding": [ { @@ -7949,20 +7942,20 @@ "type": "tidelift" } ], - "time": "2024-12-30T19:00:17+00:00" + "time": "2024-12-30T19:00:26+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.2.3", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0" + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/ee1b504b8926198be89d05e5b6fc4c3810c090f0", - "reference": "ee1b504b8926198be89d05e5b6fc4c3810c090f0", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/23dd60256610c86a3414575b70c596e5deff6ed9", + "reference": "23dd60256610c86a3414575b70c596e5deff6ed9", "shasum": "" }, "require": { @@ -7979,6 +7972,7 @@ "doctrine/dbal": "^3.6|^4", "predis/predis": "^1.1|^2.0", "symfony/cache": "^6.4.12|^7.1.5", + "symfony/clock": "^6.4|^7.0", "symfony/dependency-injection": "^6.4|^7.0", "symfony/expression-language": "^6.4|^7.0", "symfony/http-kernel": "^6.4|^7.0", @@ -8011,7 +8005,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.2.3" + "source": "https://github.com/symfony/http-foundation/tree/v7.3.1" }, "funding": [ { @@ -8027,20 +8021,20 @@ "type": "tidelift" } ], - "time": "2025-01-17T10:56:55+00:00" + "time": "2025-06-23T15:07:14+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.2.4", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "9f1103734c5789798fefb90e91de4586039003ed" + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f1103734c5789798fefb90e91de4586039003ed", - "reference": "9f1103734c5789798fefb90e91de4586039003ed", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/1644879a66e4aa29c36fe33dfa6c54b450ce1831", + "reference": "1644879a66e4aa29c36fe33dfa6c54b450ce1831", "shasum": "" }, "require": { @@ -8048,8 +8042,8 @@ "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", + "symfony/event-dispatcher": "^7.3", + "symfony/http-foundation": "^7.3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { @@ -8125,7 +8119,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.2.4" + "source": "https://github.com/symfony/http-kernel/tree/v7.3.1" }, "funding": [ { @@ -8141,20 +8135,20 @@ "type": "tidelift" } ], - "time": "2025-02-26T11:01:22+00:00" + "time": "2025-06-28T08:24:55+00:00" }, { "name": "symfony/mime", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b" + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/87ca22046b78c3feaff04b337f33b38510fd686b", - "reference": "87ca22046b78c3feaff04b337f33b38510fd686b", + "url": "https://api.github.com/repos/symfony/mime/zipball/0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", + "reference": "0e7b19b2f399c31df0cdbe5d8cbf53f02f6cfcd9", "shasum": "" }, "require": { @@ -8209,7 +8203,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.2.4" + "source": "https://github.com/symfony/mime/tree/v7.3.0" }, "funding": [ { @@ -8225,20 +8219,20 @@ "type": "tidelift" } ], - "time": "2025-02-19T08:51:20+00:00" + "time": "2025-02-19T08:51:26+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50" + "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/7da8fbac9dcfef75ffc212235d76b2754ce0cf50", - "reference": "7da8fbac9dcfef75ffc212235d76b2754ce0cf50", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/afb9a8038025e5dbc657378bfab9198d75f10fca", + "reference": "afb9a8038025e5dbc657378bfab9198d75f10fca", "shasum": "" }, "require": { @@ -8276,7 +8270,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.2.0" + "source": "https://github.com/symfony/options-resolver/tree/v7.3.0" }, "funding": [ { @@ -8292,11 +8286,11 @@ "type": "tidelift" } ], - "time": "2024-11-20T11:17:29+00:00" + "time": "2025-04-04T13:12:05+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -8355,7 +8349,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.32.0" }, "funding": [ { @@ -8375,7 +8369,7 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", @@ -8433,7 +8427,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.32.0" }, "funding": [ { @@ -8453,16 +8447,16 @@ }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", - "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", "shasum": "" }, "require": { @@ -8516,7 +8510,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.32.0" }, "funding": [ { @@ -8532,11 +8526,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-10T14:38:51+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", @@ -8597,7 +8591,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.32.0" }, "funding": [ { @@ -8617,19 +8611,20 @@ }, { "name": "symfony/polyfill-mbstring", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", - "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493", + "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493", "shasum": "" }, "require": { + "ext-iconv": "*", "php": ">=7.2" }, "provide": { @@ -8677,7 +8672,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.32.0" }, "funding": [ { @@ -8693,20 +8688,20 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-12-23T08:48:59+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608", + "reference": "0cc9dd0f17f61d8131e7df6b84bd344899fe2608", "shasum": "" }, "require": { @@ -8757,7 +8752,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.32.0" }, "funding": [ { @@ -8773,11 +8768,11 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2025-01-02T08:10:11+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", @@ -8833,7 +8828,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.32.0" }, "funding": [ { @@ -8853,7 +8848,7 @@ }, { "name": "symfony/polyfill-php83", - "version": "v1.31.0", + "version": "v1.32.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", @@ -8909,7 +8904,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.32.0" }, "funding": [ { @@ -8929,16 +8924,16 @@ }, { "name": "symfony/process", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf" + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", - "reference": "d8f411ff3c7ddc4ae9166fb388d1190a2df5b5cf", + "url": "https://api.github.com/repos/symfony/process/zipball/40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", + "reference": "40c295f2deb408d5e9d2d32b8ba1dd61e36f05af", "shasum": "" }, "require": { @@ -8970,7 +8965,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.2.4" + "source": "https://github.com/symfony/process/tree/v7.3.0" }, "funding": [ { @@ -8986,20 +8981,20 @@ "type": "tidelift" } ], - "time": "2025-02-05T08:33:46+00:00" + "time": "2025-04-17T09:11:12+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", - "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4", + "reference": "f021b05a130d35510bd6b25fe9053c2a8a15d5d4", "shasum": "" }, "require": { @@ -9017,7 +9012,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -9053,7 +9048,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.6.0" }, "funding": [ { @@ -9069,11 +9064,11 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2025-04-25T09:37:31+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.2.4", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", @@ -9115,7 +9110,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.2.4" + "source": "https://github.com/symfony/stopwatch/tree/v7.3.0" }, "funding": [ { @@ -9135,16 +9130,16 @@ }, { "name": "symfony/string", - "version": "v7.2.0", + "version": "v7.3.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", - "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", + "url": "https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125", + "reference": "f3570b8c61ca887a9e2938e85cb6458515d2b125", "shasum": "" }, "require": { @@ -9202,7 +9197,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.2.0" + "source": "https://github.com/symfony/string/tree/v7.3.0" }, "funding": [ { @@ -9218,20 +9213,20 @@ "type": "tidelift" } ], - "time": "2024-11-13T13:31:26+00:00" + "time": "2025-04-20T20:19:01+00:00" }, { "name": "symfony/translation", - "version": "v7.2.4", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a" + "reference": "241d5ac4910d256660238a7ecf250deba4c73063" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/283856e6981286cc0d800b53bd5703e8e363f05a", - "reference": "283856e6981286cc0d800b53bd5703e8e363f05a", + "url": "https://api.github.com/repos/symfony/translation/zipball/241d5ac4910d256660238a7ecf250deba4c73063", + "reference": "241d5ac4910d256660238a7ecf250deba4c73063", "shasum": "" }, "require": { @@ -9241,6 +9236,7 @@ "symfony/translation-contracts": "^2.5|^3.0" }, "conflict": { + "nikic/php-parser": "<5.0", "symfony/config": "<6.4", "symfony/console": "<6.4", "symfony/dependency-injection": "<6.4", @@ -9254,7 +9250,7 @@ "symfony/translation-implementation": "2.3|3.0" }, "require-dev": { - "nikic/php-parser": "^4.18|^5.0", + "nikic/php-parser": "^5.0", "psr/log": "^1|^2|^3", "symfony/config": "^6.4|^7.0", "symfony/console": "^6.4|^7.0", @@ -9297,7 +9293,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.2.4" + "source": "https://github.com/symfony/translation/tree/v7.3.1" }, "funding": [ { @@ -9313,20 +9309,20 @@ "type": "tidelift" } ], - "time": "2025-02-13T10:27:23+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.5.1", + "version": "v3.6.0", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", - "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/df210c7a2573f1913b2d17cc95f90f53a73d8f7d", + "reference": "df210c7a2573f1913b2d17cc95f90f53a73d8f7d", "shasum": "" }, "require": { @@ -9339,7 +9335,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.5-dev" + "dev-main": "3.6-dev" } }, "autoload": { @@ -9375,7 +9371,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.6.0" }, "funding": [ { @@ -9391,24 +9387,25 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-27T08:32:26+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.2.3", + "version": "v7.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a" + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/82b478c69745d8878eb60f9a049a4d584996f73a", - "reference": "82b478c69745d8878eb60f9a049a4d584996f73a", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", + "reference": "6e209fbe5f5a7b6043baba46fe5735a4b85d0d42", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { @@ -9458,7 +9455,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.2.3" + "source": "https://github.com/symfony/var-dumper/tree/v7.3.1" }, "funding": [ { @@ -9474,27 +9471,27 @@ "type": "tidelift" } ], - "time": "2025-01-17T11:39:41+00:00" + "time": "2025-06-27T19:55:54+00:00" }, { "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.8.4", + "version": "0.8.5", "source": { "type": "git", "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + "reference": "cf6fb197b676ba716837c886baca842e4db29005" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/cf6fb197b676ba716837c886baca842e4db29005", + "reference": "cf6fb197b676ba716837c886baca842e4db29005", "shasum": "" }, "require": { "nikic/php-parser": "^4.18.0 || ^5.0.0", "php": "^8.1.0", "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0 || ^12.0.0", "symfony/finder": "^6.4.0 || ^7.0.0" }, "require-dev": { @@ -9531,9 +9528,9 @@ ], "support": { "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.5" }, - "time": "2024-01-05T14:10:56+00:00" + "time": "2025-04-20T20:23:40+00:00" }, { "name": "theseer/tokenizer", @@ -9587,16 +9584,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v5.6.1", + "version": "v5.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2" + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/a59a13791077fe3d44f90e7133eb68e7d22eaff2", - "reference": "a59a13791077fe3d44f90e7133eb68e7d22eaff2", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/24ac4c74f91ee2c193fa1aaa5c249cb0822809af", + "reference": "24ac4c74f91ee2c193fa1aaa5c249cb0822809af", "shasum": "" }, "require": { @@ -9655,7 +9652,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.2" }, "funding": [ { @@ -9667,7 +9664,7 @@ "type": "tidelift" } ], - "time": "2024-07-20T21:52:34+00:00" + "time": "2025-04-30T23:37:27+00:00" }, { "name": "voku/portable-ascii", diff --git a/config/app.php b/config/app.php index b23eb4a8..9065b12a 100644 --- a/config/app.php +++ b/config/app.php @@ -26,7 +26,7 @@ | */ - 'version' => '1.21.2', + 'version' => '1.24.0', /* |-------------------------------------------------------------------------- diff --git a/overrides/Runner/Parallel/ProcessFactory.php b/overrides/Runner/Parallel/ProcessFactory.php new file mode 100644 index 00000000..37a4db30 --- /dev/null +++ b/overrides/Runner/Parallel/ProcessFactory.php @@ -0,0 +1,128 @@ + + * Dariusz Rumiński + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace PhpCsFixer\Runner\Parallel; + +/** + * Copyright (c) 2012+ Fabien Potencier, Dariusz Rumiński + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +use Illuminate\Support\ProcessUtils; +use PhpCsFixer\Runner\RunnerConfig; +use React\EventLoop\LoopInterface; +use Symfony\Component\Console\Input\InputInterface; +use Symfony\Component\Process\PhpExecutableFinder; + +/** + * This overrides the default "ProcessFactory" to allow for + * customization of the command-line arguments that better + * suit the needs of the laravel pint package. + * + * @author Greg Korba + * + * @readonly + * + * @internal + */ +final class ProcessFactory +{ + private InputInterface $input; + + public function __construct(InputInterface $input) + { + $this->input = $input; + } + + public function create( + LoopInterface $loop, + RunnerConfig $runnerConfig, + ProcessIdentifier $identifier, + int $serverPort + ): Process { + $commandArgs = $this->getCommandArgs($serverPort, $identifier, $runnerConfig); + + return new Process( + implode(' ', $commandArgs), + $loop, + $runnerConfig->getParallelConfig()->getProcessTimeout() + ); + } + + /** + * @private + * + * @return list + */ + public function getCommandArgs(int $serverPort, ProcessIdentifier $identifier, RunnerConfig $runnerConfig): array + { + $phpBinary = (new PhpExecutableFinder)->find(false); + + if ($phpBinary === false) { + throw new ParallelisationException('Cannot find PHP executable.'); + } + + $mainScript = $_SERVER['argv'][0]; + + $commandArgs = [ + escapeshellarg($phpBinary), + escapeshellarg($mainScript), + 'worker', + '--port', + (string) $serverPort, + '--identifier', + escapeshellarg($identifier->toString()), + ]; + + if ($runnerConfig->isDryRun()) { + $commandArgs[] = '--dry-run'; + } + + if (filter_var($this->input->getOption('diff'), FILTER_VALIDATE_BOOLEAN)) { + $commandArgs[] = '--diff'; + } + + if (filter_var($this->input->getOption('stop-on-violation'), FILTER_VALIDATE_BOOLEAN)) { + $commandArgs[] = '--stop-on-violation'; + } + + foreach (['allow-risky', 'config', 'rules', 'using-cache', 'cache-file'] as $option) { + $optionValue = $this->input->getOption($option); + + if ($optionValue !== null) { + $commandArgs[] = "--{$option}"; + $commandArgs[] = ProcessUtils::escapeArgument($optionValue); + } + } + + return $commandArgs; + } +} diff --git a/pint b/pint index 33aa7521..b5201978 100755 --- a/pint +++ b/pint @@ -15,6 +15,10 @@ define('LARAVEL_START', microtime(true)); | */ +if (($argv[1] ?? null) === 'worker') { + return include __DIR__ . '/vendor/bin/php-cs-fixer'; +} + $autoloader = require file_exists(__DIR__.'/vendor/autoload.php') ? __DIR__.'/vendor/autoload.php' : __DIR__.'/../../autoload.php'; $app = require_once __DIR__.'/bootstrap/app.php'; diff --git a/tests/Feature/OutputFormatTest.php b/tests/Feature/OutputFormatTest.php new file mode 100644 index 00000000..68aaec93 --- /dev/null +++ b/tests/Feature/OutputFormatTest.php @@ -0,0 +1,141 @@ + base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--output-format' => 'checkstyle', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toContain('') + ->toContain('toContain('') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->not->toContain('') + ->not->toContain('not->toContain('') + ->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); +}); + +it('outputs json format to file and pretty print in cli', function () use ($file) { + [$statusCode, $output] = run('default', [ + 'path' => base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--output-format' => 'json', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toBeJson() + ->toContain('appliedFixers') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->not->toBeJson() + ->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); +}); + +it('outputs xml format to file and pretty print in cli', function () use ($file) { + [$statusCode, $output] = run('default', [ + 'path' => base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--output-format' => 'xml', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toContain('') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->not->toContain('') + ->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); +}); + +it('outputs junit format to file and pretty print in cli', function () use ($file) { + [$statusCode, $output] = run('default', [ + 'path' => base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--output-format' => 'junit', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toContain('') + ->toContain('CDATA') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->not->toContain('') + ->not->toContain('CDATA') + ->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); +}); + +it('outputs gitlab format to file and pretty print in cli', function () use ($file) { + [$statusCode, $output] = run('default', [ + 'path' => base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--output-format' => 'gitlab', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toBeJson() + ->toContain('fingerprint') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->not->toBeJson() + ->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); +}); + +it('outputs json format file and xml format in cli', function () use ($file) { + + [$statusCode, $output] = run('default', [ + 'path' => base_path('tests/Fixtures/with-fixable-issues'), + '--preset' => 'psr12', + '--format' => 'xml', + '--output-format' => 'json', + '--output-to-file' => $file, + ]); + + expect($statusCode)->toBe(1) + ->and(file_get_contents($file)) + ->toBeJson() + ->toContain('appliedFixers') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))) + ->and($output) + ->toContain('') + ->not->toContain(sprintf('⨯ %s', implode(DIRECTORY_SEPARATOR, [ + 'tests', 'Fixtures', 'with-fixable-issues', 'file.php', + ]))); + +}); diff --git a/tests/Fixtures/extend/base.json b/tests/Fixtures/extend/base.json new file mode 100644 index 00000000..608964a5 --- /dev/null +++ b/tests/Fixtures/extend/base.json @@ -0,0 +1,15 @@ +{ + "preset": "psr12", + "rules": { + "array_push": true, + "backtick_to_shell_exec": true, + "date_time_immutable": true, + "final_internal_class": true, + "final_public_method_for_abstract_class": true, + "fully_qualified_strict_types": true, + "global_namespace_import": { + "import_classes": true, + "import_constants": true + } + } +} diff --git a/tests/Fixtures/extend/pint.json b/tests/Fixtures/extend/pint.json new file mode 100644 index 00000000..73d3592f --- /dev/null +++ b/tests/Fixtures/extend/pint.json @@ -0,0 +1,14 @@ +{ + "extend": "./base.json", + "preset": "laravel", + "rules": { + "declare_strict_types": true, + "lowercase_keywords": true, + "lowercase_static_reference": true, + "final_class": true, + "fully_qualified_strict_types": false, + "global_namespace_import": { + "import_functions": true + } + } +} diff --git a/tests/Fixtures/extend_recursive/base.json b/tests/Fixtures/extend_recursive/base.json new file mode 100644 index 00000000..37ee1a85 --- /dev/null +++ b/tests/Fixtures/extend_recursive/base.json @@ -0,0 +1,3 @@ +{ + "extend": "./config.json" +} diff --git a/tests/Fixtures/extend_recursive/config.json b/tests/Fixtures/extend_recursive/config.json new file mode 100644 index 00000000..93061b6b --- /dev/null +++ b/tests/Fixtures/extend_recursive/config.json @@ -0,0 +1,3 @@ +{ + "preset": "laravel" +} diff --git a/tests/Fixtures/extend_recursive/pint.json b/tests/Fixtures/extend_recursive/pint.json new file mode 100644 index 00000000..0d1d86a9 --- /dev/null +++ b/tests/Fixtures/extend_recursive/pint.json @@ -0,0 +1,3 @@ +{ + "extend": "./base.json" +} diff --git a/tests/Unit/Repositories/ConfigurationJsonRepositoryTest.php b/tests/Unit/Repositories/ConfigurationJsonRepositoryTest.php index 2987151c..b6d6bae0 100644 --- a/tests/Unit/Repositories/ConfigurationJsonRepositoryTest.php +++ b/tests/Unit/Repositories/ConfigurationJsonRepositoryTest.php @@ -46,3 +46,32 @@ expect($repository->preset())->toBe('laravel'); }); + +it('properly extend the base config file', function () { + $repository = new ConfigurationJsonRepository(dirname(__DIR__, 2).'/Fixtures/extend/pint.json', null); + + expect($repository->preset())->toBe('laravel') + ->and($repository->rules())->toBe([ + 'array_push' => true, + 'backtick_to_shell_exec' => true, + 'date_time_immutable' => true, + 'final_internal_class' => true, + 'final_public_method_for_abstract_class' => true, + 'fully_qualified_strict_types' => false, + 'global_namespace_import' => [ + 'import_classes' => true, + 'import_constants' => true, + 'import_functions' => true, + ], + 'declare_strict_types' => true, + 'lowercase_keywords' => true, + 'lowercase_static_reference' => true, + 'final_class' => true, + ]); +}); + +it('throw an error if the extended configuration also has an extend', function () { + $repository = new ConfigurationJsonRepository(dirname(__DIR__, 2).'/Fixtures/extend_recursive/pint.json', null); + + $repository->finder(); +})->throws(LogicException::class);