From c1d39639c2c66ba8d4e75176013874feaeee26fb Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Mon, 27 May 2024 10:40:56 -0400 Subject: [PATCH 01/11] Add the ability to specify a custom directory for assets. --- composer.lock | 39 ++++++++++++++++-------------- src/Asset/AbstractAssetManager.php | 6 +++++ src/Util/AssetUtil.php | 10 ++++++++ 3 files changed, 37 insertions(+), 18 deletions(-) diff --git a/composer.lock b/composer.lock index d98a29c..bde10bb 100644 --- a/composer.lock +++ b/composer.lock @@ -340,16 +340,16 @@ }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.1.4", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "04229f163664973f68f38f6f73d917799168ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/04229f163664973f68f38f6f73d917799168ef24", + "reference": "04229f163664973f68f38f6f73d917799168ef24", "shasum": "" }, "require": { @@ -391,7 +391,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.1.4" }, "funding": [ { @@ -407,7 +407,7 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-05-27T13:40:54+00:00" }, { "name": "composer/semver", @@ -811,16 +811,16 @@ }, { "name": "react/promise", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", - "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", "shasum": "" }, "require": { @@ -872,7 +872,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.1.0" + "source": "https://github.com/reactphp/promise/tree/v3.2.0" }, "funding": [ { @@ -880,7 +880,7 @@ "type": "open_collective" } ], - "time": "2023-11-16T16:21:57+00:00" + "time": "2024-05-24T10:39:05+00:00" }, { "name": "seld/jsonlint", @@ -4579,16 +4579,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.1.14", + "version": "12.2.0", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5" + "reference": "0b97c8e744217a8549efab3f971a982cbe0c310d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/e3c4a241ee36704f7cf920d5931f39693e64afd5", - "reference": "e3c4a241ee36704f7cf920d5931f39693e64afd5", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/0b97c8e744217a8549efab3f971a982cbe0c310d", + "reference": "0b97c8e744217a8549efab3f971a982cbe0c310d", "shasum": "" }, "require": { @@ -4599,6 +4599,9 @@ "phpcsstandards/php_codesniffer": "<3.8", "symplify/coding-standard": "<12.1" }, + "suggest": { + "ext-dom": "Needed to support checkstyle output format in class CheckstyleOutputFormatter" + }, "bin": [ "bin/ecs" ], @@ -4621,7 +4624,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.1.14" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.2.0" }, "funding": [ { @@ -4633,7 +4636,7 @@ "type": "github" } ], - "time": "2024-02-23T13:10:40+00:00" + "time": "2024-05-23T04:36:48+00:00" }, { "name": "theseer/tokenizer", diff --git a/src/Asset/AbstractAssetManager.php b/src/Asset/AbstractAssetManager.php index 8fda97a..12c6b49 100644 --- a/src/Asset/AbstractAssetManager.php +++ b/src/Asset/AbstractAssetManager.php @@ -137,6 +137,12 @@ public function run(): int return 0; } + $rootPackageDir = $this->config->get('root-package-dir'); + + if ($rootPackageDir !== null) { + \chdir($rootPackageDir); + } + $updatable = $this->isUpdatable(); $info = sprintf('%s %s dependencies', $updatable ? 'Updating' : 'Installing', $this->getName()); $this->io->write($info); diff --git a/src/Util/AssetUtil.php b/src/Util/AssetUtil.php index 405d304..9c42575 100644 --- a/src/Util/AssetUtil.php +++ b/src/Util/AssetUtil.php @@ -55,6 +55,16 @@ public static function getPath( if (self::isAsset($package, $configPackages)) { $installPath = $installationManager->getInstallPath($package); + $composerJsonPath = $installPath . '/composer.json'; + + if (\file_exists($composerJsonPath)) { + $composerJson = \json_decode(\file_get_contents($composerJsonPath), true); + + if (isset($composerJson['config']['foxy']['root-package-dir'])) { + $installPath .= '/' . $composerJson['config']['foxy']['root-package-dir']; + } + } + if ($installPath !== null) { $filename = $installPath . '/' . $assetManager->getPackageName(); $path = \file_exists($filename) ? \str_replace('\\', '/', \realpath($filename)) : null; From fdb6ad4ac0750740d29f190b9d7059e8ab0051e4 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Mon, 27 May 2024 11:11:42 -0400 Subject: [PATCH 02/11] Fix issue psalm. --- src/Asset/AbstractAssetManager.php | 2 +- src/Util/AssetUtil.php | 13 +++++++++---- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/Asset/AbstractAssetManager.php b/src/Asset/AbstractAssetManager.php index 12c6b49..d77cf48 100644 --- a/src/Asset/AbstractAssetManager.php +++ b/src/Asset/AbstractAssetManager.php @@ -139,7 +139,7 @@ public function run(): int $rootPackageDir = $this->config->get('root-package-dir'); - if ($rootPackageDir !== null) { + if (\is_string($rootPackageDir)) { \chdir($rootPackageDir); } diff --git a/src/Util/AssetUtil.php b/src/Util/AssetUtil.php index 9c42575..1efd679 100644 --- a/src/Util/AssetUtil.php +++ b/src/Util/AssetUtil.php @@ -53,15 +53,20 @@ public static function getPath( $path = null; if (self::isAsset($package, $configPackages)) { + $composerJsonPath = null; $installPath = $installationManager->getInstallPath($package); - $composerJsonPath = $installPath . '/composer.json'; + if (null !== $installPath) { + $composerJsonPath = $installPath . '/composer.json'; + } - if (\file_exists($composerJsonPath)) { + if (null !== $composerJsonPath && \file_exists($composerJsonPath)) { + /** @var array[] $composerJson */ $composerJson = \json_decode(\file_get_contents($composerJsonPath), true); + $rootPackageDir = $composerJson['config']['foxy']['root-package-dir'] ?? null; - if (isset($composerJson['config']['foxy']['root-package-dir'])) { - $installPath .= '/' . $composerJson['config']['foxy']['root-package-dir']; + if (null !== $installPath && \is_string($rootPackageDir)) { + $installPath .= '/' . $rootPackageDir; } } From a818b92e3107a20a4f6e52463d9bbe4c57861d14 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Tue, 4 Jun 2024 10:54:57 -0400 Subject: [PATCH 03/11] Add docs. --- resources/doc/config.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/resources/doc/config.md b/resources/doc/config.md index cea8c62..356806f 100644 --- a/resources/doc/config.md +++ b/resources/doc/config.md @@ -369,3 +369,18 @@ If you do not deactivate any packages, you can use a simple array. } } ``` + +### Specify a custom directory for `package.json` file + +You can define the custom directory for `package.json` file with the option `root-package-dir` [`string`, default: `null`]. + +**Example:** +```json +{ + "config": { + "foxy": { + "root-package-dir": "./module/theme" + } + } +} +``` From 2194dc8fb6a5f85f9ab59596d5746ad0e0980145 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Tue, 4 Jun 2024 11:24:34 -0400 Subject: [PATCH 04/11] Add more tests. --- src/Asset/AbstractAssetManager.php | 6 +++++- tests/Asset/AssetManager.php | 25 +++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/Asset/AbstractAssetManager.php b/src/Asset/AbstractAssetManager.php index d77cf48..53e6871 100644 --- a/src/Asset/AbstractAssetManager.php +++ b/src/Asset/AbstractAssetManager.php @@ -139,10 +139,14 @@ public function run(): int $rootPackageDir = $this->config->get('root-package-dir'); - if (\is_string($rootPackageDir)) { + if (\is_string($rootPackageDir) && '' !== $rootPackageDir && \is_dir($rootPackageDir)) { \chdir($rootPackageDir); } + if (\is_string($rootPackageDir) && '' !== $rootPackageDir && \is_dir($rootPackageDir) === false) { + throw new RuntimeException(\sprintf('The root package directory "%s" doesn\'t exist.', $rootPackageDir)); + } + $updatable = $this->isUpdatable(); $info = sprintf('%s %s dependencies', $updatable ? 'Updating' : 'Installing', $this->getName()); $this->io->write($info); diff --git a/tests/Asset/AssetManager.php b/tests/Asset/AssetManager.php index 5d4d307..0d7c348 100644 --- a/tests/Asset/AssetManager.php +++ b/tests/Asset/AssetManager.php @@ -290,6 +290,31 @@ public function testRunForInstallCommand(int $expectedRes, string $action): void $this->assertSame('ASSET MANAGER OUTPUT', $this->executor->getLastOutput()); } + public function testSpecifyCustomDirectoryFromPackageJson(): void + { + $this->config = new Config( + [], + ['run-asset-manager' => true, 'root-package-dir' => dirname(__DIR__) . '/Fixtures/package/global'], + ); + $this->manager = $this->getManager(); + + $this->assertSame(0, $this->getManager()->run()); + } + + public function testSpecifyCustomDirectoryFromPackageJsonException(): void + { + $this->expectException(\Foxy\Exception\RuntimeException::class); + $this->expectExceptionMessage('The root package directory "path/to/invalid" doesn\'t exist.'); + + $this->config = new Config( + [], + ['run-asset-manager' => true, 'root-package-dir' => 'path/to/invalid'], + ); + $this->manager = $this->getManager(); + + $this->assertSame(0, $this->getManager()->run()); + } + abstract protected function getManager(): AssetManagerInterface; abstract protected function getValidName(): string; From 1267afb68d91d760d98b1c96775467643025572f Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Tue, 4 Jun 2024 11:32:58 -0400 Subject: [PATCH 05/11] Unpdate tests. --- tests/Asset/AssetManager.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/Asset/AssetManager.php b/tests/Asset/AssetManager.php index 0d7c348..6eab47b 100644 --- a/tests/Asset/AssetManager.php +++ b/tests/Asset/AssetManager.php @@ -294,10 +294,11 @@ public function testSpecifyCustomDirectoryFromPackageJson(): void { $this->config = new Config( [], - ['run-asset-manager' => true, 'root-package-dir' => dirname(__DIR__) . '/Fixtures/package/global'], + ['run-asset-manager' => true, 'root-package-dir' => $this->cwd], ); $this->manager = $this->getManager(); + $this->assertSame($this->cwd, $this->config->get('root-package-dir')); $this->assertSame(0, $this->getManager()->run()); } From d9910a64efa21dcd4176b58aeff5a9fbb7b81711 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 06:18:27 -0400 Subject: [PATCH 06/11] Update root package directory handling in AbstractAssetManager. --- src/Asset/AbstractAssetManager.php | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/Asset/AbstractAssetManager.php b/src/Asset/AbstractAssetManager.php index 53e6871..cb45e5b 100644 --- a/src/Asset/AbstractAssetManager.php +++ b/src/Asset/AbstractAssetManager.php @@ -139,12 +139,11 @@ public function run(): int $rootPackageDir = $this->config->get('root-package-dir'); - if (\is_string($rootPackageDir) && '' !== $rootPackageDir && \is_dir($rootPackageDir)) { - \chdir($rootPackageDir); - } - - if (\is_string($rootPackageDir) && '' !== $rootPackageDir && \is_dir($rootPackageDir) === false) { - throw new RuntimeException(\sprintf('The root package directory "%s" doesn\'t exist.', $rootPackageDir)); + if (is_string($rootPackageDir) && !empty($rootPackageDir)) { + if (!is_dir($rootPackageDir)) { + throw new RuntimeException(sprintf('The root package directory "%s" doesn\'t exist.', $rootPackageDir)); + } + chdir($rootPackageDir); } $updatable = $this->isUpdatable(); From 66e2258d5525e3b493b71c77750539bdda116d9f Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 07:00:07 -0400 Subject: [PATCH 07/11] Raise code coverage 100%. --- src/Util/AssetUtil.php | 4 ++- tests/Fixtures/package/global/composer.json | 1 + .../package/global/theme/foo/bar/package.json | 2 ++ tests/Util/AssetUtilTest.php | 28 +++++++++++++++++++ 4 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 tests/Fixtures/package/global/theme/foo/bar/package.json diff --git a/src/Util/AssetUtil.php b/src/Util/AssetUtil.php index 1efd679..1041efc 100644 --- a/src/Util/AssetUtil.php +++ b/src/Util/AssetUtil.php @@ -52,6 +52,7 @@ public static function getPath( ): string|null { $path = null; + if (self::isAsset($package, $configPackages)) { $composerJsonPath = null; $installPath = $installationManager->getInstallPath($package); @@ -70,7 +71,8 @@ public static function getPath( } } - if ($installPath !== null) { + + if (null !== $installPath) { $filename = $installPath . '/' . $assetManager->getPackageName(); $path = \file_exists($filename) ? \str_replace('\\', '/', \realpath($filename)) : null; } diff --git a/tests/Fixtures/package/global/composer.json b/tests/Fixtures/package/global/composer.json index dcaf275..6fa349c 100644 --- a/tests/Fixtures/package/global/composer.json +++ b/tests/Fixtures/package/global/composer.json @@ -1,6 +1,7 @@ { "config": { "foxy": { + "root-package-dir": "theme", "global-composer-foo": 70, "global-composer-bar": 70 } diff --git a/tests/Fixtures/package/global/theme/foo/bar/package.json b/tests/Fixtures/package/global/theme/foo/bar/package.json new file mode 100644 index 0000000..2c63c08 --- /dev/null +++ b/tests/Fixtures/package/global/theme/foo/bar/package.json @@ -0,0 +1,2 @@ +{ +} diff --git a/tests/Util/AssetUtilTest.php b/tests/Util/AssetUtilTest.php index fa14217..54f795d 100644 --- a/tests/Util/AssetUtilTest.php +++ b/tests/Util/AssetUtilTest.php @@ -18,6 +18,7 @@ use Composer\Package\PackageInterface; use Composer\Semver\Constraint\Constraint; use Foxy\Asset\AbstractAssetManager; +use Foxy\Asset\AssetManagerInterface; use Foxy\Util\AssetUtil; use PHPUnit\Framework\MockObject\MockObject; use Symfony\Component\Filesystem\Filesystem; @@ -340,4 +341,31 @@ public function testFormatPackage( $this->assertEquals($expected, $res); } + + public function testGetPathWithRootPackageDir(): void + { + $installationManager = $this->createMock(InstallationManager::class); + $installationManager + ->expects($this->once()) + ->method('getInstallPath') + ->willReturn('tests/Fixtures/package/global'); + + $assetManager = $this->createMock(AssetManagerInterface::class); + $assetManager->expects($this->once())->method('getPackageName')->willReturn('foo/bar'); + + $package = $this->createMock(PackageInterface::class); + $package->expects($this->once())->method('getName')->willReturn('foo/bar'); + $package->expects($this->once())->method('getRequires')->willReturn([]); + $package->expects($this->once())->method('getDevRequires')->willReturn([]); + + $configPackages = [ + '/^foo\/bar$/' => true, + ]; + + $expectedPath = 'tests/Fixtures/package/global/theme/foo/bar'; + + $res = AssetUtil::getPath($installationManager, $assetManager, $package, $configPackages); + + $this->assertStringContainsString($expectedPath, $res); + } } From 9497199c33c0f0fb8d871579d6821033a66c8a42 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 07:05:53 -0400 Subject: [PATCH 08/11] Better naming. --- resources/doc/config.md | 2 +- src/Asset/AbstractAssetManager.php | 2 +- src/Util/AssetUtil.php | 2 +- tests/Asset/AssetManager.php | 6 +++--- tests/Fixtures/package/global/composer.json | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/resources/doc/config.md b/resources/doc/config.md index 356806f..e1f384f 100644 --- a/resources/doc/config.md +++ b/resources/doc/config.md @@ -379,7 +379,7 @@ You can define the custom directory for `package.json` file with the option `roo { "config": { "foxy": { - "root-package-dir": "./module/theme" + "root-package-json-dir": "module/theme" } } } diff --git a/src/Asset/AbstractAssetManager.php b/src/Asset/AbstractAssetManager.php index cb45e5b..a445fad 100644 --- a/src/Asset/AbstractAssetManager.php +++ b/src/Asset/AbstractAssetManager.php @@ -137,7 +137,7 @@ public function run(): int return 0; } - $rootPackageDir = $this->config->get('root-package-dir'); + $rootPackageDir = $this->config->get('root-package-json-dir'); if (is_string($rootPackageDir) && !empty($rootPackageDir)) { if (!is_dir($rootPackageDir)) { diff --git a/src/Util/AssetUtil.php b/src/Util/AssetUtil.php index 1041efc..f835992 100644 --- a/src/Util/AssetUtil.php +++ b/src/Util/AssetUtil.php @@ -64,7 +64,7 @@ public static function getPath( if (null !== $composerJsonPath && \file_exists($composerJsonPath)) { /** @var array[] $composerJson */ $composerJson = \json_decode(\file_get_contents($composerJsonPath), true); - $rootPackageDir = $composerJson['config']['foxy']['root-package-dir'] ?? null; + $rootPackageDir = $composerJson['config']['foxy']['root-package-json-dir'] ?? null; if (null !== $installPath && \is_string($rootPackageDir)) { $installPath .= '/' . $rootPackageDir; diff --git a/tests/Asset/AssetManager.php b/tests/Asset/AssetManager.php index 6eab47b..c2e756b 100644 --- a/tests/Asset/AssetManager.php +++ b/tests/Asset/AssetManager.php @@ -294,11 +294,11 @@ public function testSpecifyCustomDirectoryFromPackageJson(): void { $this->config = new Config( [], - ['run-asset-manager' => true, 'root-package-dir' => $this->cwd], + ['run-asset-manager' => true, 'root-package-json-dir' => $this->cwd], ); $this->manager = $this->getManager(); - $this->assertSame($this->cwd, $this->config->get('root-package-dir')); + $this->assertSame($this->cwd, $this->config->get('root-package-json-dir')); $this->assertSame(0, $this->getManager()->run()); } @@ -309,7 +309,7 @@ public function testSpecifyCustomDirectoryFromPackageJsonException(): void $this->config = new Config( [], - ['run-asset-manager' => true, 'root-package-dir' => 'path/to/invalid'], + ['run-asset-manager' => true, 'root-package-json-dir' => 'path/to/invalid'], ); $this->manager = $this->getManager(); diff --git a/tests/Fixtures/package/global/composer.json b/tests/Fixtures/package/global/composer.json index 6fa349c..7f9ee8a 100644 --- a/tests/Fixtures/package/global/composer.json +++ b/tests/Fixtures/package/global/composer.json @@ -1,7 +1,7 @@ { "config": { "foxy": { - "root-package-dir": "theme", + "root-package-json-dir": "theme", "global-composer-foo": 70, "global-composer-bar": 70 } From 8a407c51cfc741e8806d0f26e4496d6ed2257018 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 07:07:29 -0400 Subject: [PATCH 09/11] Update docs. --- resources/doc/config.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/doc/config.md b/resources/doc/config.md index e1f384f..5c5ea51 100644 --- a/resources/doc/config.md +++ b/resources/doc/config.md @@ -372,7 +372,7 @@ If you do not deactivate any packages, you can use a simple array. ### Specify a custom directory for `package.json` file -You can define the custom directory for `package.json` file with the option `root-package-dir` [`string`, default: `null`]. +You can define the custom directory for `package.json` file with the option `root-package-json-dir` [`string`, default: `null`]. **Example:** ```json From f054b326c8b87e1b68b1b1fa6b38f381fd85d995 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 07:11:11 -0400 Subject: [PATCH 10/11] Add sponsors. --- composer.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/composer.json b/composer.json index 8395e4a..be34835 100644 --- a/composer.json +++ b/composer.json @@ -5,6 +5,12 @@ "homepage": "https://github.com/fxpio/foxy", "type": "composer-plugin", "license": "MIT", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/terabytesoftw" + } + ], "require": { "ext-ctype": "*", "ext-mbstring": "*", From d8ce78cfdb8c35108134b48477387c6754d05e76 Mon Sep 17 00:00:00 2001 From: Wilmer Arambula Date: Fri, 7 Jun 2024 07:13:42 -0400 Subject: [PATCH 11/11] Update `composer.lock`. --- composer.lock | 102 +++++++++++++++++++++++++------------------------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/composer.lock b/composer.lock index bde10bb..da7e3e4 100644 --- a/composer.lock +++ b/composer.lock @@ -84,16 +84,16 @@ }, { "name": "composer/class-map-generator", - "version": "1.1.1", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311" + "reference": "acd227952154850d0bb7d65caa4f9edf9cd806a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8286a62d243312ed99b3eee20d5005c961adb311", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/acd227952154850d0bb7d65caa4f9edf9cd806a7", + "reference": "acd227952154850d0bb7d65caa4f9edf9cd806a7", "shasum": "" }, "require": { @@ -137,7 +137,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.1" + "source": "https://github.com/composer/class-map-generator/tree/1.3.2" }, "funding": [ { @@ -153,7 +153,7 @@ "type": "tidelift" } ], - "time": "2024-03-15T12:53:41+00:00" + "time": "2024-05-31T19:45:56+00:00" }, { "name": "composer/composer", @@ -1057,16 +1057,16 @@ }, { "name": "symfony/console", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", + "url": "https://api.github.com/repos/symfony/console/zipball/be5854cee0e8c7b110f00d695d11debdfa1a2a91", + "reference": "be5854cee0e8c7b110f00d695d11debdfa1a2a91", "shasum": "" }, "require": { @@ -1131,7 +1131,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.8" }, "funding": [ { @@ -1147,7 +1147,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/deprecation-contracts", @@ -1218,23 +1218,25 @@ }, { "name": "symfony/filesystem", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4" + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/78dde75f8f6dbbca4ec436a4b0087f7af02076d4", - "reference": "78dde75f8f6dbbca4ec436a4b0087f7af02076d4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/4d37529150e7081c51b3c5d5718c55a04a9503f3", + "reference": "4d37529150e7081c51b3c5d5718c55a04a9503f3", "shasum": "" }, "require": { "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", - "symfony/process": "^5.4|^6.4" + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { + "symfony/process": "^5.4|^6.4|^7.0" }, "type": "library", "autoload": { @@ -1262,7 +1264,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.4.7" + "source": "https://github.com/symfony/filesystem/tree/v6.4.8" }, "funding": [ { @@ -1278,20 +1280,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/finder", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764" + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/511c48990be17358c23bf45c5d71ab85d40fb764", - "reference": "511c48990be17358c23bf45c5d71ab85d40fb764", + "url": "https://api.github.com/repos/symfony/finder/zipball/3ef977a43883215d560a2cecb82ec8e62131471c", + "reference": "3ef977a43883215d560a2cecb82ec8e62131471c", "shasum": "" }, "require": { @@ -1326,7 +1328,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.7" + "source": "https://github.com/symfony/finder/tree/v6.4.8" }, "funding": [ { @@ -1342,7 +1344,7 @@ "type": "tidelift" } ], - "time": "2024-04-23T10:36:43+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1896,16 +1898,16 @@ }, { "name": "symfony/process", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381" + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/cdb1c81c145fd5aa9b0038bab694035020943381", - "reference": "cdb1c81c145fd5aa9b0038bab694035020943381", + "url": "https://api.github.com/repos/symfony/process/zipball/8d92dd79149f29e89ee0f480254db595f6a6a2c5", + "reference": "8d92dd79149f29e89ee0f480254db595f6a6a2c5", "shasum": "" }, "require": { @@ -1937,7 +1939,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.7" + "source": "https://github.com/symfony/process/tree/v6.4.8" }, "funding": [ { @@ -1953,7 +1955,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/service-contracts", @@ -2040,16 +2042,16 @@ }, { "name": "symfony/string", - "version": "v6.4.7", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69" + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/ffeb9591c61f65a68d47f77d12b83fa530227a69", - "reference": "ffeb9591c61f65a68d47f77d12b83fa530227a69", + "url": "https://api.github.com/repos/symfony/string/zipball/a147c0f826c4a1f3afb763ab8e009e37c877a44d", + "reference": "a147c0f826c4a1f3afb763ab8e009e37c877a44d", "shasum": "" }, "require": { @@ -2106,7 +2108,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.4.7" + "source": "https://github.com/symfony/string/tree/v6.4.8" }, "funding": [ { @@ -2122,7 +2124,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-05-31T14:49:08+00:00" } ], "packages-dev": [ @@ -3126,16 +3128,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.29.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/fcaefacf2d5c417e928405b71b400d4ce10daaf4", + "reference": "fcaefacf2d5c417e928405b71b400d4ce10daaf4", "shasum": "" }, "require": { @@ -3167,9 +3169,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.29.1" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-05-31T08:52:43+00:00" }, { "name": "phpunit/php-code-coverage", @@ -4579,16 +4581,16 @@ }, { "name": "symplify/easy-coding-standard", - "version": "12.2.0", + "version": "12.2.1", "source": { "type": "git", "url": "https://github.com/easy-coding-standard/easy-coding-standard.git", - "reference": "0b97c8e744217a8549efab3f971a982cbe0c310d" + "reference": "095fe591b2e51fd84edd21b8c9be74402eadc50e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/0b97c8e744217a8549efab3f971a982cbe0c310d", - "reference": "0b97c8e744217a8549efab3f971a982cbe0c310d", + "url": "https://api.github.com/repos/easy-coding-standard/easy-coding-standard/zipball/095fe591b2e51fd84edd21b8c9be74402eadc50e", + "reference": "095fe591b2e51fd84edd21b8c9be74402eadc50e", "shasum": "" }, "require": { @@ -4624,7 +4626,7 @@ ], "support": { "issues": "https://github.com/easy-coding-standard/easy-coding-standard/issues", - "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.2.0" + "source": "https://github.com/easy-coding-standard/easy-coding-standard/tree/12.2.1" }, "funding": [ { @@ -4636,7 +4638,7 @@ "type": "github" } ], - "time": "2024-05-23T04:36:48+00:00" + "time": "2024-06-02T01:25:21+00:00" }, { "name": "theseer/tokenizer",