From 274a79c5fbf808ad4a8fa3df66949661f700d863 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Fri, 14 Jul 2023 09:58:32 +0100 Subject: [PATCH 01/20] Updated references to MigrationException --- .../Configuration/AbstractConfiguration.php | 3 +- .../Configuration/DatabaseConfiguration.php | 2 +- .../Configuration/DoctrineConfiguration.php | 4 +- src/Migrations/Migrator.php | 4 +- .../DatabaseConfigurationTest.php | 37 +++++++++++++++++-- tests/Migrations/MigratorTest.php | 29 +++++++++++++++ 6 files changed, 70 insertions(+), 9 deletions(-) diff --git a/src/Migrations/Configuration/AbstractConfiguration.php b/src/Migrations/Configuration/AbstractConfiguration.php index 91fcf210..e0eb8252 100644 --- a/src/Migrations/Configuration/AbstractConfiguration.php +++ b/src/Migrations/Configuration/AbstractConfiguration.php @@ -2,6 +2,7 @@ namespace Meteor\Migrations\Configuration; +use Doctrine\Migrations\Exception\DuplicateMigrationVersion; use Doctrine\Migrations\Exception\MigrationException; use Doctrine\Migrations\Version\Version; @@ -44,7 +45,7 @@ public function setJaduPath($jaduPath) public function registerMigration(string $version, string $class): Version { if (isset($this->migrationVersions[$version])) { - throw MigrationException::duplicateMigrationVersion($version, get_class($this->migrationVersions[$version])); + throw DuplicateMigrationVersion::new($version, get_class($this->migrationVersions[$version])); } $version = $this->createMigration($version, $class); diff --git a/src/Migrations/Configuration/DatabaseConfiguration.php b/src/Migrations/Configuration/DatabaseConfiguration.php index 75e8aa5d..d3f8459d 100644 --- a/src/Migrations/Configuration/DatabaseConfiguration.php +++ b/src/Migrations/Configuration/DatabaseConfiguration.php @@ -11,6 +11,6 @@ class DatabaseConfiguration extends AbstractConfiguration implements JaduPathAwa */ protected function createMigration($version, $class) { - return new Version($this, $version, $class); + return new Version($this, $version, $class, $this->getDependencyFactory()->getVersionExecutor()); } } diff --git a/src/Migrations/Configuration/DoctrineConfiguration.php b/src/Migrations/Configuration/DoctrineConfiguration.php index c6f1b6b9..02d90cea 100644 --- a/src/Migrations/Configuration/DoctrineConfiguration.php +++ b/src/Migrations/Configuration/DoctrineConfiguration.php @@ -3,7 +3,7 @@ namespace Meteor\Migrations\Configuration; use Doctrine\Migrations\Configuration\Configuration; -use Doctrine\Migrations\Exception\MigrationException; +use Doctrine\Migrations\Exception\UnknownMigrationVersion; use Doctrine\Migrations\Version\Version; /** @@ -31,7 +31,7 @@ abstract class DoctrineConfiguration extends Configuration public function getVersion($version): Version { if (!isset($this->migrationVersions[$version])) { - throw MigrationException::unknownMigrationVersion($version); + throw UnknownMigrationVersion::new($version); } return $this->migrationVersions[$version]; diff --git a/src/Migrations/Migrator.php b/src/Migrations/Migrator.php index 038896a7..443126a4 100644 --- a/src/Migrations/Migrator.php +++ b/src/Migrations/Migrator.php @@ -2,7 +2,7 @@ namespace Meteor\Migrations; -use Doctrine\Migrations\Exception\MigrationException; +use Doctrine\Migrations\Exception\UnknownMigrationVersion; use Meteor\IO\IOInterface; use Meteor\Migrations\Configuration\ConfigurationFactory; use Meteor\Migrations\Configuration\FileConfiguration; @@ -107,7 +107,7 @@ public function migrate($patchDir, $installDir, array $config, $type, $version, $migrations = $configuration->getMigrations(); if (!isset($migrations[$to]) && $to > 0) { - throw MigrationException::unknownMigrationVersion($to); + throw UnknownMigrationVersion::new($to); } $direction = $from > $to ? 'down' : 'up'; diff --git a/tests/Migrations/Configuration/DatabaseConfigurationTest.php b/tests/Migrations/Configuration/DatabaseConfigurationTest.php index e9fb8167..29c89894 100644 --- a/tests/Migrations/Configuration/DatabaseConfigurationTest.php +++ b/tests/Migrations/Configuration/DatabaseConfigurationTest.php @@ -2,19 +2,50 @@ namespace Meteor\Migrations\Configuration; +use Doctrine\DBAL\Connection; +use Doctrine\DBAL\Platforms\AbstractPlatform; +use Doctrine\DBAL\Schema\AbstractSchemaManager; +use Doctrine\Migrations\Exception\DuplicateMigrationVersion; use Mockery; use PHPUnit\Framework\TestCase; +use stdClass; class DatabaseConfigurationTest extends TestCase { + private $configuration; + + protected function setUp(): void + { + $this->configuration = new DatabaseConfiguration(Mockery::mock(Connection::class, [ + 'getSchemaManager' => Mockery::mock(AbstractSchemaManager::class), + 'getDatabasePlatform' => Mockery::mock(AbstractPlatform::class) + ])); + } + /** * Ensure the method exists as it is used by old migrations. */ public function testGetSetJaduPath() { - $configuration = new DatabaseConfiguration(Mockery::mock('Doctrine\DBAL\Connection')); - $configuration->setJaduPath('/var/www/jadu'); + $this->configuration->setJaduPath('/var/www/jadu'); + + static::assertSame('/var/www/jadu', $this->configuration->getJaduPath()); + } + + public function testRegisterMigrationThrowsForDuplicate() + { + $this->expectException(DuplicateMigrationVersion::class); + $this->expectExceptionMessage('Migration version 123 already registered with class Doctrine\Migrations\Version\Version'); + + $this->configuration->registerMigration('123', stdClass::class); + $this->configuration->registerMigration('123', stdClass::class); + } + + public function testGetVersion() + { + $this->expectException(\Doctrine\Migrations\Exception\UnknownMigrationVersion::class); + $this->expectExceptionMessage('Could not find migration version 1234'); - static::assertSame('/var/www/jadu', $configuration->getJaduPath()); + $this->configuration->getVersion('1234'); } } diff --git a/tests/Migrations/MigratorTest.php b/tests/Migrations/MigratorTest.php index 1946a334..528c0600 100644 --- a/tests/Migrations/MigratorTest.php +++ b/tests/Migrations/MigratorTest.php @@ -2,6 +2,7 @@ namespace Meteor\Migrations; +use Doctrine\Migrations\Exception\UnknownMigrationVersion; use Doctrine\Migrations\Version\ExecutionResult; use Doctrine\Migrations\Version\Version; use Meteor\IO\NullIO; @@ -248,6 +249,34 @@ public function testMigrateIgnoresUnavailableMigrations() static::assertTrue($this->migrator->migrate(__DIR__ . '/Configuration/Fixtures/with_migrations/patch', 'install', $config, MigrationsConstants::TYPE_DATABASE, 'latest', true)); } + public function testMigrateThrowsWhenUnknownMigration() + { + $this->expectException(UnknownMigrationVersion::class); + $this->expectExceptionMessage('Could not find migration version 2'); + + $patchDirectory = __DIR__ . '/Configuration/Fixtures/with_migrations/patch'; + + $config = [ + 'directory' => 'upgrades', + ]; + + $configuration = Mockery::mock(DatabaseConfiguration::class, [ + 'getMigrations' => [], + 'getMigratedVersions' => [], + 'getAvailableVersions' => [], + 'getCurrentVersion' => 0, + 'getMigrationsToExecute' => [], + 'resolveVersionAlias' => 2, + ]); + + $this->configurationFactory->shouldReceive('createConfiguration') + ->with(MigrationsConstants::TYPE_DATABASE, $config, $patchDirectory, 'install') + ->andReturn($configuration) + ->once(); + + $this->migrator->migrate($patchDirectory, 'install', $config, MigrationsConstants::TYPE_DATABASE, 'latest', true); + } + public function testExecuteUp() { $config = []; From 55e56e9bb1cebc30467f8be4f3287786c2c81934 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:06:47 +0000 Subject: [PATCH 02/20] Add PHP 8.3 to tests --- .github/workflows/test.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 56bb890b..a660e6d8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -52,6 +52,7 @@ jobs: php-version: - '7.4' - '8.1' + - '8.3' steps: - uses: shivammathur/setup-php@v2 @@ -85,7 +86,7 @@ jobs: steps: - uses: shivammathur/setup-php@v2 with: - php-version: '8.1' + php-version: '8.3' - uses: actions/checkout@v3 - name: Cache Composer packages id: composer-cache @@ -176,6 +177,7 @@ jobs: php-version: - '7.4' - '8.1' + - '8.3' needs: package-for-testing steps: From 1db94fc5eca7d217088e85b5e9caeb3267fa6676 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:07:48 +0000 Subject: [PATCH 03/20] Dependency update --- composer.lock | 1165 ++++++++++++++++++++++++------------------------- 1 file changed, 577 insertions(+), 588 deletions(-) diff --git a/composer.lock b/composer.lock index ab877c7b..d38c285a 100644 --- a/composer.lock +++ b/composer.lock @@ -8,16 +8,16 @@ "packages": [ { "name": "amphp/amp", - "version": "v2.6.2", + "version": "v2.6.4", "source": { "type": "git", "url": "https://github.com/amphp/amp.git", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb" + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/amp/zipball/9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", - "reference": "9d5100cebffa729aaffecd3ad25dc5aeea4f13bb", + "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", + "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d", "shasum": "" }, "require": { @@ -29,8 +29,8 @@ "ext-json": "*", "jetbrains/phpstorm-stubs": "^2019.3", "phpunit/phpunit": "^7 | ^8 | ^9", - "psalm/phar": "^3.11@dev", - "react/promise": "^2" + "react/promise": "^2", + "vimeo/psalm": "^3.12" }, "type": "library", "extra": { @@ -85,7 +85,7 @@ "support": { "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/amp/issues", - "source": "https://github.com/amphp/amp/tree/v2.6.2" + "source": "https://github.com/amphp/amp/tree/v2.6.4" }, "funding": [ { @@ -93,20 +93,20 @@ "type": "github" } ], - "time": "2022-02-20T17:52:18+00:00" + "time": "2024-03-21T18:52:26+00:00" }, { "name": "amphp/byte-stream", - "version": "v1.8.1", + "version": "v1.8.2", "source": { "type": "git", "url": "https://github.com/amphp/byte-stream.git", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd" + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/byte-stream/zipball/acbd8002b3536485c997c4e019206b3f10ca15bd", - "reference": "acbd8002b3536485c997c4e019206b3f10ca15bd", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc", + "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc", "shasum": "" }, "require": { @@ -122,11 +122,6 @@ "psalm/phar": "^3.11.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, "autoload": { "files": [ "lib/functions.php" @@ -150,7 +145,7 @@ } ], "description": "A stream abstraction to make working with non-blocking I/O simple.", - "homepage": "http://amphp.org/byte-stream", + "homepage": "https://amphp.org/byte-stream", "keywords": [ "amp", "amphp", @@ -160,9 +155,8 @@ "stream" ], "support": { - "irc": "irc://irc.freenode.org/amphp", "issues": "https://github.com/amphp/byte-stream/issues", - "source": "https://github.com/amphp/byte-stream/tree/v1.8.1" + "source": "https://github.com/amphp/byte-stream/tree/v1.8.2" }, "funding": [ { @@ -170,7 +164,7 @@ "type": "github" } ], - "time": "2021-03-30T17:13:30+00:00" + "time": "2024-04-13T18:00:56+00:00" }, { "name": "amphp/parallel", @@ -306,16 +300,16 @@ }, { "name": "amphp/parser", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/amphp/parser.git", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151" + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/parser/zipball/ff1de4144726c5dad5fab97f66692ebe8de3e151", - "reference": "ff1de4144726c5dad5fab97f66692ebe8de3e151", + "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7", + "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7", "shasum": "" }, "require": { @@ -356,7 +350,7 @@ ], "support": { "issues": "https://github.com/amphp/parser/issues", - "source": "https://github.com/amphp/parser/tree/v1.1.0" + "source": "https://github.com/amphp/parser/tree/v1.1.1" }, "funding": [ { @@ -364,26 +358,26 @@ "type": "github" } ], - "time": "2022-12-30T18:08:47+00:00" + "time": "2024-03-21T19:16:53+00:00" }, { "name": "amphp/process", - "version": "v1.1.4", + "version": "v1.1.9", "source": { "type": "git", "url": "https://github.com/amphp/process.git", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f" + "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/amphp/process/zipball/76e9495fd6818b43a20167cb11d8a67f7744ee0f", - "reference": "76e9495fd6818b43a20167cb11d8a67f7744ee0f", + "url": "https://api.github.com/repos/amphp/process/zipball/55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", + "reference": "55b837d4f1857b9bd7efb7bb859ae6b0e804f13f", "shasum": "" }, "require": { "amphp/amp": "^2", "amphp/byte-stream": "^1.4", - "php": ">=7" + "php": ">=7.1" }, "require-dev": { "amphp/php-cs-fixer-config": "dev-master", @@ -421,7 +415,7 @@ "homepage": "https://github.com/amphp/process", "support": { "issues": "https://github.com/amphp/process/issues", - "source": "https://github.com/amphp/process/tree/v1.1.4" + "source": "https://github.com/amphp/process/tree/v1.1.9" }, "funding": [ { @@ -429,7 +423,7 @@ "type": "github" } ], - "time": "2022-07-06T23:50:12+00:00" + "time": "2024-12-13T17:38:25+00:00" }, { "name": "amphp/serialization", @@ -703,24 +697,24 @@ }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -762,9 +756,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -780,7 +774,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/xdebug-handler", @@ -1052,25 +1046,27 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1078,7 +1074,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1089,9 +1085,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2024-12-07T21:18:45+00:00" }, { "name": "doctrine/event-manager", @@ -1367,22 +1363,22 @@ }, { "name": "friendsofphp/proxy-manager-lts", - "version": "v1.0.14", + "version": "v1.0.18", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/proxy-manager-lts.git", - "reference": "a527c9d9d5348e012bd24482d83a5cd643bcbc9e" + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/a527c9d9d5348e012bd24482d83a5cd643bcbc9e", - "reference": "a527c9d9d5348e012bd24482d83a5cd643bcbc9e", + "url": "https://api.github.com/repos/FriendsOfPHP/proxy-manager-lts/zipball/2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", + "reference": "2c8a6cffc3220e99352ad958fe7cf06bf6f7690f", "shasum": "" }, "require": { "laminas/laminas-code": "~3.4.1|^4.0", "php": ">=7.1", - "symfony/filesystem": "^4.4.17|^5.0|^6.0" + "symfony/filesystem": "^4.4.17|^5.0|^6.0|^7.0" }, "conflict": { "laminas/laminas-stdlib": "<3.2.1", @@ -1393,13 +1389,13 @@ }, "require-dev": { "ext-phar": "*", - "symfony/phpunit-bridge": "^5.4|^6.0" + "symfony/phpunit-bridge": "^5.4|^6.0|^7.0" }, "type": "library", "extra": { "thanks": { - "name": "ocramius/proxy-manager", - "url": "https://github.com/Ocramius/ProxyManager" + "url": "https://github.com/Ocramius/ProxyManager", + "name": "ocramius/proxy-manager" } }, "autoload": { @@ -1433,7 +1429,7 @@ ], "support": { "issues": "https://github.com/FriendsOfPHP/proxy-manager-lts/issues", - "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.14" + "source": "https://github.com/FriendsOfPHP/proxy-manager-lts/tree/v1.0.18" }, "funding": [ { @@ -1445,7 +1441,7 @@ "type": "tidelift" } ], - "time": "2023-01-30T10:40:19+00:00" + "time": "2024-03-20T12:50:41+00:00" }, { "name": "guzzlehttp/guzzle", @@ -1564,16 +1560,16 @@ }, { "name": "guzzlehttp/promises", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "b94b2807d85443f9719887892882d0329d1e2598" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", - "reference": "b94b2807d85443f9719887892882d0329d1e2598", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { @@ -1583,11 +1579,6 @@ "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.5-dev" - } - }, "autoload": { "files": [ "src/functions_include.php" @@ -1628,7 +1619,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -1644,7 +1635,7 @@ "type": "tidelift" } ], - "time": "2022-08-28T14:55:35+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", @@ -1804,11 +1795,11 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - }, "bamarni-bin": { "bin-links": false + }, + "branch-alias": { + "dev-master": "3.x-dev" } }, "autoload": { @@ -2011,20 +2002,20 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "url": "https://github.com/jsonrainbow/json-schema.git", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", @@ -2035,11 +2026,6 @@ "bin/validate-json" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "JsonSchema\\": "src/JsonSchema/" @@ -2074,10 +2060,10 @@ "schema" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2024-07-06T21:00:26+00:00" }, { "name": "laminas/laminas-code", @@ -2147,26 +2133,27 @@ }, { "name": "laravel/serializable-closure", - "version": "v1.3.0", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37" + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", - "reference": "f23fe9d4e95255dacee1bf3525e0810d1a1b0f37", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "nesbot/carbon": "^2.61", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", "pestphp/pest": "^1.21.3", "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" }, "type": "library", "extra": { @@ -2203,27 +2190,29 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-01-30T18:31:20+00:00" + "time": "2024-11-14T18:34:49+00:00" }, { "name": "nikic/iter", - "version": "v2.2.0", + "version": "v2.4.1", "source": { "type": "git", "url": "https://github.com/nikic/iter.git", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9" + "reference": "3f031ae08d82c4394410e76b88b441331a6fa15f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/iter/zipball/d1323929952ddcb0b06439991f93bde3816a39e9", - "reference": "d1323929952ddcb0b06439991f93bde3816a39e9", + "url": "https://api.github.com/repos/nikic/iter/zipball/3f031ae08d82c4394410e76b88b441331a6fa15f", + "reference": "3f031ae08d82c4394410e76b88b441331a6fa15f", "shasum": "" }, "require": { "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", + "vimeo/psalm": "^4.18 || ^5.13" }, "type": "library", "autoload": { @@ -2251,31 +2240,31 @@ ], "support": { "issues": "https://github.com/nikic/iter/issues", - "source": "https://github.com/nikic/iter/tree/v2.2.0" + "source": "https://github.com/nikic/iter/tree/v2.4.1" }, - "time": "2021-08-02T15:04:32+00:00" + "time": "2024-03-19T20:45:05+00:00" }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2307,22 +2296,22 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "paragonie/constant_time_encoding", - "version": "v2.6.3", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/paragonie/constant_time_encoding.git", - "reference": "58c3f47f650c94ec05a151692652a868995d2938" + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/58c3f47f650c94ec05a151692652a868995d2938", - "reference": "58c3f47f650c94ec05a151692652a868995d2938", + "url": "https://api.github.com/repos/paragonie/constant_time_encoding/zipball/52a0d99e69f56b9ec27ace92ba56897fe6993105", + "reference": "52a0d99e69f56b9ec27ace92ba56897fe6993105", "shasum": "" }, "require": { @@ -2376,30 +2365,30 @@ "issues": "https://github.com/paragonie/constant_time_encoding/issues", "source": "https://github.com/paragonie/constant_time_encoding" }, - "time": "2022-06-14T06:56:20+00:00" + "time": "2024-05-08T12:18:48+00:00" }, { "name": "paragonie/pharaoh", - "version": "v0.6.0", + "version": "v0.6.1", "source": { "type": "git", "url": "https://github.com/paragonie/pharaoh.git", - "reference": "d33976a45429edc9c4282e7b0f2b6c3a3a5783fc" + "reference": "d661fa3e6b46429b9d5b21d974e35a6ef62e7220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/pharaoh/zipball/d33976a45429edc9c4282e7b0f2b6c3a3a5783fc", - "reference": "d33976a45429edc9c4282e7b0f2b6c3a3a5783fc", + "url": "https://api.github.com/repos/paragonie/pharaoh/zipball/d661fa3e6b46429b9d5b21d974e35a6ef62e7220", + "reference": "d661fa3e6b46429b9d5b21d974e35a6ef62e7220", "shasum": "" }, "require": { - "paragonie/constant_time_encoding": "^2", + "paragonie/constant_time_encoding": "^2|^3", "paragonie/sodium_compat": "^1.3", - "php": "^7|^8", + "php": "^7.1|^8", "ulrichsg/getopt-php": "^3" }, "require-dev": { - "vimeo/psalm": "^1|^2|^3" + "vimeo/psalm": "^1|^2|^3|^4" }, "bin": [ "pharaoh" @@ -2436,7 +2425,8 @@ "issues": "https://github.com/paragonie/pharaoh/issues", "source": "https://github.com/paragonie/pharaoh" }, - "time": "2020-12-03T04:57:05+00:00" + "abandoned": "humbug/box", + "time": "2024-05-08T16:20:23+00:00" }, { "name": "paragonie/random_compat", @@ -2490,16 +2480,16 @@ }, { "name": "paragonie/sodium_compat", - "version": "v1.20.0", + "version": "v1.21.1", "source": { "type": "git", "url": "https://github.com/paragonie/sodium_compat.git", - "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6" + "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/e592a3e06d1fa0d43988c7c7d9948ca836f644b6", - "reference": "e592a3e06d1fa0d43988c7c7d9948ca836f644b6", + "url": "https://api.github.com/repos/paragonie/sodium_compat/zipball/bb312875dcdd20680419564fe42ba1d9564b9e37", + "reference": "bb312875dcdd20680419564fe42ba1d9564b9e37", "shasum": "" }, "require": { @@ -2570,9 +2560,9 @@ ], "support": { "issues": "https://github.com/paragonie/sodium_compat/issues", - "source": "https://github.com/paragonie/sodium_compat/tree/v1.20.0" + "source": "https://github.com/paragonie/sodium_compat/tree/v1.21.1" }, - "time": "2023-04-30T00:54:53+00:00" + "time": "2024-04-22T22:05:04+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -2629,28 +2619,35 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", + "version": "5.6.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", "shasum": "" }, "require": { + "doctrine/deprecations": "^1.1", "ext-filter": "*", - "php": "^7.2 || ^8.0", + "php": "^7.4 || ^8.0", "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", "webmozart/assert": "^1.9.1" }, "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" }, "type": "library", "extra": { @@ -2674,35 +2671,35 @@ }, { "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "email": "opensource@ijaap.nl" } ], "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.3.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2024-12-07T09:39:29+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714" + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/dfc078e8af9c99210337325ff5aa152872c98714", - "reference": "dfc078e8af9c99210337325ff5aa152872c98714", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", "shasum": "" }, "require": { "doctrine/deprecations": "^1.0", - "php": "^7.4 || ^8.0", + "php": "^7.3 || ^8.0", "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "phpstan/phpdoc-parser": "^1.18|^2.0" }, "require-dev": { "ext-tokenizer": "*", @@ -2738,34 +2735,36 @@ "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.1" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "time": "2023-03-27T19:02:04+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.20.4", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd" + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", - "reference": "7d568c87a9df9c5f7e8b5f075fc469aa8cb0a4cd", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", + "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", "symfony/process": "^5.2" }, "type": "library", @@ -2783,9 +2782,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.20.4" + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0" }, - "time": "2023-05-02T09:19:37+00:00" + "time": "2025-02-19T13:28:12+00:00" }, { "name": "psr/container", @@ -3034,23 +3033,23 @@ }, { "name": "seld/jsonlint", - "version": "1.9.0", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "4211420d25eba80712bff236a98960ef68b866b7" + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/4211420d25eba80712bff236a98960ef68b866b7", - "reference": "4211420d25eba80712bff236a98960ef68b866b7", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2", + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2", "shasum": "" }, "require": { "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.11", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, "bin": [ @@ -3070,7 +3069,7 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "JSON Linter", @@ -3082,7 +3081,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.9.0" + "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0" }, "funding": [ { @@ -3094,20 +3093,20 @@ "type": "tidelift" } ], - "time": "2022-04-01T13:37:23+00:00" + "time": "2024-07-11T14:55:45+00:00" }, { "name": "symfony/config", - "version": "v5.4.21", + "version": "v5.4.46", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4" + "reference": "977c88a02d7d3f16904a81907531b19666a08e78" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/2a6b1111d038adfa15d52c0871e540f3b352d1e4", - "reference": "2a6b1111d038adfa15d52c0871e540f3b352d1e4", + "url": "https://api.github.com/repos/symfony/config/zipball/977c88a02d7d3f16904a81907531b19666a08e78", + "reference": "977c88a02d7d3f16904a81907531b19666a08e78", "shasum": "" }, "require": { @@ -3157,7 +3156,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v5.4.21" + "source": "https://github.com/symfony/config/tree/v5.4.46" }, "funding": [ { @@ -3173,20 +3172,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-10-30T07:58:02+00:00" }, { "name": "symfony/console", - "version": "v5.4.23", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c" + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", "shasum": "" }, "require": { @@ -3256,7 +3255,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.23" + "source": "https://github.com/symfony/console/tree/v5.4.47" }, "funding": [ { @@ -3272,20 +3271,20 @@ "type": "tidelift" } ], - "time": "2023-04-24T18:47:29+00:00" + "time": "2024-11-06T11:30:55+00:00" }, { "name": "symfony/dependency-injection", - "version": "v5.4.23", + "version": "v5.4.48", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "bb7b7988c898c94f5338e16403c52b5a3cae1d93" + "reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bb7b7988c898c94f5338e16403c52b5a3cae1d93", - "reference": "bb7b7988c898c94f5338e16403c52b5a3cae1d93", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e5ca16dee39ef7d63e552ff0bf0a2526a1142c92", + "reference": "e5ca16dee39ef7d63e552ff0bf0a2526a1142c92", "shasum": "" }, "require": { @@ -3345,7 +3344,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v5.4.23" + "source": "https://github.com/symfony/dependency-injection/tree/v5.4.48" }, "funding": [ { @@ -3361,20 +3360,20 @@ "type": "tidelift" } ], - "time": "2023-04-21T15:04:16+00:00" + "time": "2024-11-20T10:51:57+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918", "shasum": "" }, "require": { @@ -3382,12 +3381,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3412,7 +3411,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4" }, "funding": [ { @@ -3428,20 +3427,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.22", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/72982eb416f61003e9bb6e91f8b3213600dcf9e9", + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9", "shasum": "" }, "require": { @@ -3497,7 +3496,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/v5.4.22" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.45" }, "funding": [ { @@ -3513,20 +3512,20 @@ "type": "tidelift" } ], - "time": "2023-03-17T11:31:58+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f", + "reference": "e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f", "shasum": "" }, "require": { @@ -3538,12 +3537,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3576,7 +3575,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.4" }, "funding": [ { @@ -3592,20 +3591,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.23", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + "reference": "57c8294ed37d4a055b77057827c67f9558c95c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/57c8294ed37d4a055b77057827c67f9558c95c54", + "reference": "57c8294ed37d4a055b77057827c67f9558c95c54", "shasum": "" }, "require": { @@ -3614,6 +3613,9 @@ "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "symfony/process": "^5.4|^6.4" + }, "type": "library", "autoload": { "psr-4": { @@ -3640,7 +3642,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + "source": "https://github.com/symfony/filesystem/tree/v5.4.45" }, "funding": [ { @@ -3656,20 +3658,20 @@ "type": "tidelift" } ], - "time": "2023-03-02T11:38:35+00:00" + "time": "2024-10-22T13:05:35+00:00" }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + "reference": "63741784cd7b9967975eec610b256eed3ede022b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b", + "reference": "63741784cd7b9967975eec610b256eed3ede022b", "shasum": "" }, "require": { @@ -3703,7 +3705,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.21" + "source": "https://github.com/symfony/finder/tree/v5.4.45" }, "funding": [ { @@ -3719,20 +3721,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2024-09-28T13:32:08+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", "shasum": "" }, "require": { @@ -3772,7 +3774,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.45" }, "funding": [ { @@ -3788,24 +3790,24 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3815,12 +3817,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3854,7 +3853,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -3870,36 +3869,33 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3935,7 +3931,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3951,38 +3947,34 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da" + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", - "reference": "639084e360537a19f9ee352433b84ce831f3d2da", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c36586dcf89a12315939e00ec9b4474adcb1d773", + "reference": "c36586dcf89a12315939e00ec9b4474adcb1d773", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-intl-normalizer": "^1.10", - "symfony/polyfill-php72": "^1.10" + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4022,7 +4014,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.31.0" }, "funding": [ { @@ -4038,36 +4030,33 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4106,7 +4095,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -4122,24 +4111,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -4149,12 +4138,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4189,83 +4175,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-11-03T14:55:06+00:00" - }, - { - "name": "symfony/polyfill-php72", - "version": "v1.27.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", - "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php72\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -4281,33 +4191,30 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4348,7 +4255,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -4364,33 +4271,30 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4427,7 +4331,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { @@ -4443,20 +4347,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v5.4.23", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4b842fc4b61609e0a155a114082bd94e31e98287" + "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b842fc4b61609e0a155a114082bd94e31e98287", - "reference": "4b842fc4b61609e0a155a114082bd94e31e98287", + "url": "https://api.github.com/repos/symfony/process/zipball/5d1662fb32ebc94f17ddb8d635454a776066733d", + "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d", "shasum": "" }, "require": { @@ -4489,7 +4393,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.23" + "source": "https://github.com/symfony/process/tree/v5.4.47" }, "funding": [ { @@ -4505,20 +4409,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:50:24+00:00" + "time": "2024-11-06T11:36:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300", + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300", "shasum": "" }, "require": { @@ -4534,12 +4438,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4572,7 +4476,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.4" }, "funding": [ { @@ -4588,20 +4492,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb2c199cf302eb207f8c23e7ee174c1c31a5c004", + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004", "shasum": "" }, "require": { @@ -4634,7 +4538,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.45" }, "funding": [ { @@ -4650,20 +4554,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + "reference": "136ca7d72f72b599f2631aca474a4f8e26719799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799", + "reference": "136ca7d72f72b599f2631aca474a4f8e26719799", "shasum": "" }, "require": { @@ -4720,7 +4624,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.22" + "source": "https://github.com/symfony/string/tree/v5.4.47" }, "funding": [ { @@ -4736,20 +4640,20 @@ "type": "tidelift" } ], - "time": "2023-03-14T06:11:53+00:00" + "time": "2024-11-10T20:33:58+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.23", + "version": "v5.4.48", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9a8a5b6d6508928174ded2109e29328a55342a42" + "reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9a8a5b6d6508928174ded2109e29328a55342a42", - "reference": "9a8a5b6d6508928174ded2109e29328a55342a42", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/42f18f170aa86d612c3559cfb3bd11a375df32c8", + "reference": "42f18f170aa86d612c3559cfb3bd11a375df32c8", "shasum": "" }, "require": { @@ -4758,12 +4662,12 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/process": "^4.4|^5.0|^6.0", "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" @@ -4809,7 +4713,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.23" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.48" }, "funding": [ { @@ -4825,20 +4729,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T09:26:27+00:00" + "time": "2024-11-08T15:21:10+00:00" }, { "name": "symfony/yaml", - "version": "v5.4.23", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b" + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/4cd2e3ea301aadd76a4172756296fe552fb45b0b", - "reference": "4cd2e3ea301aadd76a4172756296fe552fb45b0b", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a454d47278cc16a5db371fe73ae66a78a633371e", + "reference": "a454d47278cc16a5db371fe73ae66a78a633371e", "shasum": "" }, "require": { @@ -4884,7 +4788,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.23" + "source": "https://github.com/symfony/yaml/tree/v5.4.45" }, "funding": [ { @@ -4900,7 +4804,7 @@ "type": "tidelift" } ], - "time": "2023-04-23T19:33:36+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "thecodingmachine/safe", @@ -5204,16 +5108,16 @@ "packages-dev": [ { "name": "doctrine/annotations", - "version": "1.14.3", + "version": "1.14.4", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/253dca476f70808a5aeed3a47cc2cc88c5cab915", + "reference": "253dca476f70808a5aeed3a47cc2cc88c5cab915", "shasum": "" }, "require": { @@ -5224,11 +5128,11 @@ }, "require-dev": { "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "~1.4.10 || ^1.10.28", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "vimeo/psalm": "^4.10" + "symfony/cache": "^4.4 || ^5.4 || ^6.4 || ^7", + "vimeo/psalm": "^4.30 || ^5.14" }, "suggest": { "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" @@ -5274,9 +5178,9 @@ ], "support": { "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.3" + "source": "https://github.com/doctrine/annotations/tree/1.14.4" }, - "time": "2023-02-01T09:20:38+00:00" + "time": "2024-09-05T10:15:52+00:00" }, { "name": "doctrine/instantiator", @@ -5350,16 +5254,16 @@ }, { "name": "doctrine/lexer", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", + "reference": "861c870e8b75f7c8f69c146c7f89cc1c0f1b49b6", "shasum": "" }, "require": { @@ -5367,11 +5271,11 @@ "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", + "doctrine/coding-standard": "^9 || ^12", "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6", "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "vimeo/psalm": "^4.11 || ^5.21" }, "type": "library", "autoload": { @@ -5408,7 +5312,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "source": "https://github.com/doctrine/lexer/tree/2.1.1" }, "funding": [ { @@ -5424,7 +5328,7 @@ "type": "tidelift" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-02-05T11:35:39+00:00" }, { "name": "friendsofphp/php-cs-fixer", @@ -5623,23 +5527,24 @@ }, { "name": "mikey179/vfsstream", - "version": "v1.6.11", + "version": "v1.6.12", "source": { "type": "git", "url": "https://github.com/bovigo/vfsStream.git", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f" + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", - "reference": "17d16a85e6c26ce1f3e2fa9ceeacdc2855db1e9f", + "url": "https://api.github.com/repos/bovigo/vfsStream/zipball/fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", + "reference": "fe695ec993e0a55c3abdda10a9364eb31c6f1bf0", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=7.1.0" }, "require-dev": { - "phpunit/phpunit": "^4.5|^5.0" + "phpunit/phpunit": "^7.5||^8.5||^9.6", + "yoast/phpunit-polyfills": "^2.0" }, "type": "library", "extra": { @@ -5670,42 +5575,42 @@ "source": "https://github.com/bovigo/vfsStream/tree/master", "wiki": "https://github.com/bovigo/vfsStream/wiki" }, - "time": "2022-02-23T02:02:42+00:00" + "time": "2024-08-29T18:43:31+00:00" }, { "name": "mockery/mockery", - "version": "1.5.1", + "version": "1.6.12", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e" + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/e92dcc83d5a51851baf5f5591d32cb2b16e3684e", - "reference": "e92dcc83d5a51851baf5f5591d32cb2b16e3684e", + "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.17", + "symplify/easy-coding-standard": "^12.1.14" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -5716,12 +5621,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -5739,23 +5652,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.1" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-09-07T15:32:08+00:00" + "time": "2024-05-16T03:13:13+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.13.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "024473a478be9df5fdaca2c793f2232fe788e414" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/024473a478be9df5fdaca2c793f2232fe788e414", + "reference": "024473a478be9df5fdaca2c793f2232fe788e414", "shasum": "" }, "require": { @@ -5763,11 +5679,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -5793,7 +5710,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.13.0" }, "funding": [ { @@ -5801,24 +5718,25 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2025-02-12T12:17:51+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { "ext-dom": "*", + "ext-libxml": "*", "ext-phar": "*", "ext-xmlwriter": "*", "phar-io/version": "^3.0.1", @@ -5859,9 +5777,15 @@ "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", "support": { "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" + "source": "https://github.com/phar-io/manifest/tree/2.0.4" }, - "time": "2021-07-20T11:28:43+00:00" + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { "name": "phar-io/version", @@ -5972,35 +5896,35 @@ }, { "name": "phpunit/php-code-coverage", - "version": "9.2.26", + "version": "9.2.32", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1" + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", - "reference": "443bc6912c9bd5b409254a40f4b0f4ced7c80ea1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.15", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.6" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -6009,7 +5933,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.2-dev" + "dev-main": "9.2.x-dev" } }, "autoload": { @@ -6037,7 +5961,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.26" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.32" }, "funding": [ { @@ -6045,7 +5970,7 @@ "type": "github" } ], - "time": "2023-03-06T12:58:08+00:00" + "time": "2024-08-22T04:23:01+00:00" }, { "name": "phpunit/php-file-iterator", @@ -6290,45 +6215,45 @@ }, { "name": "phpunit/phpunit", - "version": "9.6.7", + "version": "9.6.22", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2" + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", - "reference": "c993f0d3b0489ffc42ee2fe0bd645af1538a63b2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f80235cb4d3caa59ae09be3adf1ded27521d1a9c", + "reference": "f80235cb4d3caa59ae09be3adf1ded27521d1a9c", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1 || ^2", + "doctrine/instantiator": "^1.5.0 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=7.3", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", "sebastian/comparator": "^4.0.8", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.5", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.2", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", "sebastian/version": "^3.0.2" }, "suggest": { @@ -6373,7 +6298,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.7" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.22" }, "funding": [ { @@ -6389,7 +6314,7 @@ "type": "tidelift" } ], - "time": "2023-04-14T08:58:40+00:00" + "time": "2024-12-05T13:48:26+00:00" }, { "name": "psr/cache", @@ -6442,16 +6367,16 @@ }, { "name": "sebastian/cli-parser", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { @@ -6486,7 +6411,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -6494,7 +6419,7 @@ "type": "github" } ], - "time": "2020-09-28T06:08:49+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", @@ -6683,20 +6608,20 @@ }, { "name": "sebastian/complexity", - "version": "2.0.2", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { - "nikic/php-parser": "^4.7", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -6728,7 +6653,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -6736,20 +6661,20 @@ "type": "github" } ], - "time": "2020-10-26T15:52:27+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -6794,7 +6719,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -6802,7 +6727,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", @@ -6869,16 +6794,16 @@ }, { "name": "sebastian/exporter", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", - "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { @@ -6934,7 +6859,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -6942,20 +6867,20 @@ "type": "github" } ], - "time": "2022-09-14T06:03:37+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { @@ -6998,7 +6923,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -7006,24 +6931,24 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "1.0.3", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { - "nikic/php-parser": "^4.6", + "nikic/php-parser": "^4.18 || ^5.0", "php": ">=7.3" }, "require-dev": { @@ -7055,7 +6980,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -7063,7 +6988,7 @@ "type": "github" } ], - "time": "2020-11-28T06:42:11+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", @@ -7242,16 +7167,16 @@ }, { "name": "sebastian/resource-operations", - "version": "3.0.3", + "version": "3.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", "shasum": "" }, "require": { @@ -7263,7 +7188,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -7284,8 +7209,7 @@ "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" }, "funding": [ { @@ -7293,7 +7217,7 @@ "type": "github" } ], - "time": "2020-09-28T06:45:17+00:00" + "time": "2024-03-14T16:00:52+00:00" }, { "name": "sebastian/type", @@ -7423,12 +7347,12 @@ }, "type": "metapackage", "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + }, "branch-alias": { "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" } }, "notification-url": "https://packagist.org/downloads/", @@ -7472,18 +7396,83 @@ ], "time": "2020-10-23T14:02:19+00:00" }, + { + "name": "symfony/polyfill-php72", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", + "reference": "fa2ae56c44f03bed91a39bfc9822e31e7c5c38ce", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "metapackage", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php72/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, { "name": "theseer/tokenizer", - "version": "1.2.1", + "version": "1.2.3", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", "shasum": "" }, "require": { @@ -7512,7 +7501,7 @@ "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", "support": { "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" }, "funding": [ { @@ -7520,7 +7509,7 @@ "type": "github" } ], - "time": "2021-07-28T10:34:58+00:00" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], From 21704f3b0ae34f540d56ec2e517fb76de959fa00 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:16:56 +0000 Subject: [PATCH 04/20] Upgrade to upload and download artifact v4 --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a660e6d8..899ce66f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -107,10 +107,11 @@ jobs: files: "bin/meteor.phar" fail: true - name: Store the artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: meteor.phar path: bin/meteor.phar + overwrite: true package-for-testing: name: Create test package @@ -126,7 +127,7 @@ jobs: url: "https://gist.githubusercontent.com/DenisYaschuk/d3ade2d88d058cf9c971cf9d1f580a0f/raw/871ee04ee0ee01a6a2e0f97e67ce0206f78e3179/migrations-update.php" target: tests/mock_project/package - name: Copy meteor to mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: meteor.phar path: "tests/mock_project/package" @@ -157,10 +158,11 @@ jobs: target: "tests/mock_project/package/output/github-action-test_2.0/github-action-test_2.0" - name: Store the mock project artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: mock_project path: tests/mock_project + overwrite: true functional-tests: name: Functional Tests @@ -186,7 +188,7 @@ jobs: php-version: ${{ matrix.php-version }} - name: Retrieve the mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: mock_project path: mock_project From 7237e436b2c273bd77c02ac156c8550dfaecff31 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:26:24 +0000 Subject: [PATCH 05/20] Resolve deprecations in tests --- tests/IO/ConsoleIOTest.php | 4 ++++ tests/Migrations/Version/FileMigrationVersionTest.php | 1 + tests/Package/Combined/CombinedPackageResolverTest.php | 1 + tests/Package/PackageCreatorTest.php | 2 +- tests/Permissions/Cli/Command/ResetPermissionsCommandTest.php | 1 + 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/IO/ConsoleIOTest.php b/tests/IO/ConsoleIOTest.php index 2e83e5bd..e0bb3ec8 100644 --- a/tests/IO/ConsoleIOTest.php +++ b/tests/IO/ConsoleIOTest.php @@ -11,6 +11,10 @@ class ConsoleIOTest extends TestCase { private $io; + private $input; + + private $output; + protected function setUp(): void { $this->input = new ArrayInput([]); diff --git a/tests/Migrations/Version/FileMigrationVersionTest.php b/tests/Migrations/Version/FileMigrationVersionTest.php index 23f764ea..7b7244d6 100644 --- a/tests/Migrations/Version/FileMigrationVersionTest.php +++ b/tests/Migrations/Version/FileMigrationVersionTest.php @@ -20,6 +20,7 @@ class FileMigrationVersionTest extends TestCase private $configuration; private $versionStorage; private $version; + private $executor; protected function setUp(): void { diff --git a/tests/Package/Combined/CombinedPackageResolverTest.php b/tests/Package/Combined/CombinedPackageResolverTest.php index 3acb2b58..7fdfb01a 100644 --- a/tests/Package/Combined/CombinedPackageResolverTest.php +++ b/tests/Package/Combined/CombinedPackageResolverTest.php @@ -12,6 +12,7 @@ class CombinedPackageResolverTest extends TestCase private $combinedPackageDependencyChecker; private $filesystem; private $packageProvider; + private $combinedPackageResolver; protected function setUp(): void { diff --git a/tests/Package/PackageCreatorTest.php b/tests/Package/PackageCreatorTest.php index d6178d22..b982430e 100644 --- a/tests/Package/PackageCreatorTest.php +++ b/tests/Package/PackageCreatorTest.php @@ -11,7 +11,7 @@ class PackageCreatorTest extends TestCase { private $filesystem; private $packageArchiver; - private $packageCombiner; + private $combinedPackageResolver; private $packageNameResolver; private $migrationsCopier; private $composerDependencyChecker; diff --git a/tests/Permissions/Cli/Command/ResetPermissionsCommandTest.php b/tests/Permissions/Cli/Command/ResetPermissionsCommandTest.php index 6a38c2d9..c19a0866 100644 --- a/tests/Permissions/Cli/Command/ResetPermissionsCommandTest.php +++ b/tests/Permissions/Cli/Command/ResetPermissionsCommandTest.php @@ -12,6 +12,7 @@ class ResetPermissionsCommandTest extends CommandTestCase { + private $filesystem; private $platform; private $permissionSetter; From 3206b8caf810f92cf95ce7416339da4de08b0741 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 15:59:37 +0000 Subject: [PATCH 06/20] Stop printing script content in normal output and instead show a progress bar for scripts. --- src/Scripts/ScriptRunner.php | 7 ++++--- tests/Scripts/ScriptRunnerTest.php | 33 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/Scripts/ScriptRunner.php b/src/Scripts/ScriptRunner.php index 0a12e316..62444d56 100644 --- a/src/Scripts/ScriptRunner.php +++ b/src/Scripts/ScriptRunner.php @@ -64,7 +64,10 @@ public function run($scriptName) { foreach ($this->scripts as $scripts) { if (isset($scripts[$scriptName]) && !empty($scripts[$scriptName])) { + $this->io->text(sprintf('Running scripts for "%s"', $scriptName)); + $this->io->progressStart(count($scripts[$scriptName])); $this->runScripts($scriptName, $scripts); + $this->io->progressFinish(); } } } @@ -78,16 +81,14 @@ public function run($scriptName) */ private function runScripts($scriptName, $scripts) { - $this->io->text(sprintf('Running scripts for "%s"', $scriptName)); - foreach ($scripts[$scriptName] as $script) { if (strpos($script, '@') === 0) { // NB: Infinite recursion detection happens when processing the config $script = substr($script, 1); $this->runScripts($script, $scripts); } else { - $this->io->text(sprintf('$ "%s" in "%s"', $script, $this->getWorkingDir())); $this->processRunner->run($script, $this->getWorkingDir()); + $this->io->progressAdvance(); } } $this->io->newLine(); diff --git a/tests/Scripts/ScriptRunnerTest.php b/tests/Scripts/ScriptRunnerTest.php index e8225e5f..61936770 100644 --- a/tests/Scripts/ScriptRunnerTest.php +++ b/tests/Scripts/ScriptRunnerTest.php @@ -171,4 +171,37 @@ public function testRunsCombinedReferencedScriptWithMultipleCommands() $scriptRunner->run('test'); } + + public function testRunUpdatesProgressBar() + { + $mockIO = Mockery::mock(\Meteor\IO\IOInterface::class, [ + 'text' => null, + 'debug' => null, + 'newLine' => null, + ]); + + $mockIO->shouldReceive('progressStart') + ->once() + ->with(2); + + $mockIO->shouldReceive('progressAdvance') + ->twice(); + + $mockIO->shouldReceive('progressFinish') + ->once(); + + $this->processRunner->shouldReceive('run') + ->withAnyArgs() + ->twice(); + + $scriptRunner = new ScriptRunner($this->processRunner, $mockIO, [ + 'jadu/cms' => [ + 'test' => ['@clear-cache', '@warm-cache'], + 'clear-cache' => ['clear-cache.sh'], + 'warm-cache' => ['warm-cache.sh'], + ], + ]); + + $scriptRunner->run('test'); + } } From 2e732bb3f979853884fac3a493b395d05256b8f8 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:16:56 +0000 Subject: [PATCH 07/20] Upgrade to upload and download artifact v4 --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 56bb890b..a55026bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,10 +106,11 @@ jobs: files: "bin/meteor.phar" fail: true - name: Store the artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: meteor.phar path: bin/meteor.phar + overwrite: true package-for-testing: name: Create test package @@ -125,7 +126,7 @@ jobs: url: "https://gist.githubusercontent.com/DenisYaschuk/d3ade2d88d058cf9c971cf9d1f580a0f/raw/871ee04ee0ee01a6a2e0f97e67ce0206f78e3179/migrations-update.php" target: tests/mock_project/package - name: Copy meteor to mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: meteor.phar path: "tests/mock_project/package" @@ -156,10 +157,11 @@ jobs: target: "tests/mock_project/package/output/github-action-test_2.0/github-action-test_2.0" - name: Store the mock project artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: mock_project path: tests/mock_project + overwrite: true functional-tests: name: Functional Tests @@ -184,7 +186,7 @@ jobs: php-version: ${{ matrix.php-version }} - name: Retrieve the mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: mock_project path: mock_project From 246f83889567707ee96eae435f480c7335f08e53 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 3 Mar 2025 11:54:43 +0000 Subject: [PATCH 08/20] Update free disk space check to be based on package size --- src/Filesystem/Filesystem.php | 25 +++++++ .../Overwrite/OverwritePatchStrategy.php | 2 +- src/Patch/Task/CheckDiskSpace.php | 8 +- src/Patch/Task/CheckDiskSpaceHandler.php | 70 +++++++++++++----- .../Patch/Task/CheckDiskSpaceHandlerTest.php | 74 ++++++++++++++----- 5 files changed, 142 insertions(+), 37 deletions(-) diff --git a/src/Filesystem/Filesystem.php b/src/Filesystem/Filesystem.php index f2c6e92f..88b744b5 100644 --- a/src/Filesystem/Filesystem.php +++ b/src/Filesystem/Filesystem.php @@ -2,8 +2,11 @@ namespace Meteor\Filesystem; +use FilesystemIterator; use Meteor\Filesystem\Finder\FinderFactory; use Meteor\IO\IOInterface; +use RecursiveDirectoryIterator; +use RecursiveIteratorIterator; use RuntimeException; use Symfony\Component\Filesystem\Filesystem as BaseFilesystem; @@ -219,4 +222,26 @@ public function replaceDirectory(string $sourceDir, string $targetDir, string $r $this->io->debug(sprintf('Removing %s', $old)); $this->remove($old); } + + /** + * @param string $directory + * + * @return int + */ + public function getDirectorySize($directory) + { + $totalBytes = 0; + + $path = realpath($directory); + + if ($path !== false && $path != '' && file_exists($path)) { + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) { + if (!$object->isLink()) { + $totalBytes += $object->getSize(); + } + } + } + + return $totalBytes; + } } diff --git a/src/Patch/Strategy/Overwrite/OverwritePatchStrategy.php b/src/Patch/Strategy/Overwrite/OverwritePatchStrategy.php index edfeaf21..5b90fe06 100644 --- a/src/Patch/Strategy/Overwrite/OverwritePatchStrategy.php +++ b/src/Patch/Strategy/Overwrite/OverwritePatchStrategy.php @@ -50,7 +50,7 @@ public function apply($patchDir, $installDir, array $options) $tasks[] = new LimitBackups($backupsDir, $installDir, $options['limit-backups']); } - $tasks[] = new CheckDiskSpace($installDir, $backupsDir); + $tasks[] = new CheckDiskSpace($installDir, $backupsDir, $patchFilesDir); if (!$options['skip-backup']) { $tasks[] = new BackupFiles($backupDir, $patchDir, $installDir); diff --git a/src/Patch/Task/CheckDiskSpace.php b/src/Patch/Task/CheckDiskSpace.php index 0bbbe0b8..e620abf7 100644 --- a/src/Patch/Task/CheckDiskSpace.php +++ b/src/Patch/Task/CheckDiskSpace.php @@ -14,13 +14,19 @@ class CheckDiskSpace */ public $backupsDir; + /** + * @var string + */ + public $patchFilesDir; + /** * @param string $installDir * @param string $backupsDir */ - public function __construct($installDir, $backupsDir) + public function __construct($installDir, $backupsDir, $patchFilesDir) { $this->installDir = $installDir; $this->backupsDir = $backupsDir; + $this->patchFilesDir = $patchFilesDir; } } diff --git a/src/Patch/Task/CheckDiskSpaceHandler.php b/src/Patch/Task/CheckDiskSpaceHandler.php index 712e8d07..45eccafa 100644 --- a/src/Patch/Task/CheckDiskSpaceHandler.php +++ b/src/Patch/Task/CheckDiskSpaceHandler.php @@ -12,20 +12,16 @@ class CheckDiskSpaceHandler use BackupHandlerTrait; /** - * Assuming required space is 300MB for backup and new files. Not checking the real package - * size to avoid performance issues when checking the size of thousands of files. + * Free space must be at least patch size multiplied by this number. Should + * ensure we set this large enough to make backup copies of everything in + * the patch. */ - const REQUIRED_BYTES = 314572800; - - /** - * The required free space as a percentage. - */ - const REQUIRED_FREE_SPACE_PERCENT = 10; + public const PATCH_SIZE_MULTIPLIER = 2.5; /** * The maximum number of backups to keep when running low on disk space. */ - const MAX_BACKUPS = 2; + public const MAX_BACKUPS = 2; /** * @var BackupFinder @@ -62,18 +58,24 @@ public function __construct(BackupFinder $backupFinder, Filesystem $filesystem, */ public function handle(CheckDiskSpace $task, array $config) { - if ($this->hasFreeSpace($task->installDir)) { + $spaceRequired = $this->calculateRequiredDiskSpace($task->patchFilesDir); + + if ($this->hasFreeSpace($task->installDir, $spaceRequired)) { // Plenty of space available return true; } - $this->io->warning('Patching will reduce free disk space to less than ' . self::REQUIRED_FREE_SPACE_PERCENT . '%'); + $this->io->warning(sprintf( + 'There is not enough free disk space to apply this patch. Space required: %s, Space available: %s', + $this->formatFileSize($spaceRequired), + $this->formatFileSize(disk_free_space($task->installDir)) + )); // Try removing old backups $this->removeOldBackups($task->backupsDir, $task->installDir, $config); // Check disk space again - if ($this->hasFreeSpace($task->installDir)) { + if ($this->hasFreeSpace($task->installDir, $spaceRequired)) { return true; } @@ -85,19 +87,36 @@ public function handle(CheckDiskSpace $task, array $config) return true; } + private function calculateRequiredDiskSpace($patchDirectory) + { + $patchSize = $this->filesystem->getDirectorySize($patchDirectory); + + return $patchSize * static::PATCH_SIZE_MULTIPLIER; + } + /** * @param string $installDir + * @param int $spaceRequired * * @return bool */ - private function hasFreeSpace($installDir) + private function hasFreeSpace($installDir, $spaceRequired) { - $totalSpace = disk_total_space($installDir); - $freeSpace = disk_free_space($installDir) - self::REQUIRED_BYTES; + $freeSpace = disk_free_space($installDir); + + $this->io->debug(sprintf( + 'Available disk space: %s', + $this->formatFileSize($freeSpace) + )); - $freeSpacePercent = ($freeSpace / $totalSpace) * 100; + $this->io->debug(sprintf( + 'Disk space required: %s', + $this->formatFileSize($spaceRequired) + )); - return $freeSpacePercent > self::REQUIRED_FREE_SPACE_PERCENT; + $resultingSpace = $freeSpace - $spaceRequired; + + return $resultingSpace > 0; } /** @@ -115,4 +134,21 @@ private function removeOldBackups($backupsDir, $installDir, array $config) $this->removeBackups($backups, self::MAX_BACKUPS); } + + /** + * @param type $bytes + * @param int $dec + * + * @return string + */ + private function formatFileSize($bytes, $dec = 2) + { + $size = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + $factor = floor((strlen($bytes) - 1) / 3); + if ($factor == 0) { + $dec = 0; + } + + return sprintf("%.{$dec}f %s", $bytes / (1024 ** $factor), $size[$factor]); + } } diff --git a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php index 6e279604..c2f858d2 100644 --- a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php +++ b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php @@ -9,6 +9,8 @@ class CheckDiskSpaceHandlerTest extends TestCase { + private const PATCH_SIZE_BYTES = 346030080; + private $backupFinder; private $filesystem; private $io; @@ -18,6 +20,11 @@ protected function setUp(): void { $this->backupFinder = Mockery::mock('Meteor\Patch\Backup\BackupFinder'); $this->filesystem = Mockery::mock('Meteor\Filesystem\Filesystem'); + + $this->filesystem->shouldReceive('getDirectorySize') + ->with('/path/to/patch') + ->andReturn(static::PATCH_SIZE_BYTES); + $this->io = new NullIO(); $this->handler = new CheckDiskSpaceHandler($this->backupFinder, $this->filesystem, $this->io); @@ -25,16 +32,20 @@ protected function setUp(): void public function testPlentyOfSpace() { - $GLOBALS['disk_total_space'] = 1048576000; $GLOBALS['disk_free_space'] = 1048576000; $config = ['name' => 'test']; - static::assertTrue($this->handler->handle(new CheckDiskSpace('install', 'install/backups'), $config)); + + $this->filesystem->shouldReceive('getDirectorySize') + ->with('/path/to/patch') + ->once() + ->andReturn(static::PATCH_SIZE_BYTES); + + static::assertTrue($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } public function testWhenRunningLowOnSpace() { - $GLOBALS['disk_total_space'] = 1048576000; $GLOBALS['disk_free_space'] = 419430400; $config = ['name' => 'test']; @@ -43,13 +54,17 @@ public function testWhenRunningLowOnSpace() ->with('install/backups', 'install', $config) ->andReturn([]); - static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups'), $config)); + $this->filesystem->shouldReceive('getDirectorySize') + ->with('/path/to/patch') + ->once() + ->andReturn(static::PATCH_SIZE_BYTES); + + static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } public function testRemovesOldBackupsWhenRunningLowOnSpace() { - $GLOBALS['disk_total_space'] = 1048576000; - $GLOBALS['disk_free_space'] = 419430400; + $GLOBALS['disk_free_space'] = static::PATCH_SIZE_BYTES; $config = ['name' => 'test']; @@ -70,7 +85,7 @@ public function testRemovesOldBackupsWhenRunningLowOnSpace() ->with('backups/3') ->andReturnUsing(function () { // Free up some space - $GLOBALS['disk_free_space'] += 104857600; + $GLOBALS['disk_free_space'] += static::PATCH_SIZE_BYTES; }) ->once(); @@ -90,13 +105,12 @@ public function testRemovesOldBackupsWhenRunningLowOnSpace() }) ->once(); - static::assertTrue($this->handler->handle(new CheckDiskSpace('install', 'install/backups'), $config)); + static::assertTrue($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } public function testDoesNotRemoveMostRecentBackups() { - $GLOBALS['disk_total_space'] = 1048576000; - $GLOBALS['disk_free_space'] = 419430400; + $GLOBALS['disk_free_space'] = static::PATCH_SIZE_BYTES; $config = ['name' => 'test']; @@ -113,13 +127,12 @@ public function testDoesNotRemoveMostRecentBackups() $this->filesystem->shouldReceive('remove') ->never(); - static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups'), $config)); + static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } public function testRemovesOldBackupsWhenRunningLowOnSpaceButNotEnoughIsFreedUp() { - $GLOBALS['disk_total_space'] = 1048576000; - $GLOBALS['disk_free_space'] = 104857600; + $GLOBALS['disk_free_space'] = 2000; $config = ['name' => 'test']; @@ -160,13 +173,38 @@ public function testRemovesOldBackupsWhenRunningLowOnSpaceButNotEnoughIsFreedUp( }) ->once(); - static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups'), $config)); + static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } -} -function disk_total_space($directory) -{ - return $GLOBALS['disk_total_space'] ?? 1048576000; + public function testWarningOutputWhenNotEnoughSpace() + { + $GLOBALS['disk_free_space'] = 2000000; + + $config = ['name' => 'test']; + + $backups = [ + new Backup('backups/2', []), + new Backup('backups/1', []), + ]; + + $this->backupFinder->shouldReceive('find') + ->with('install/backups', 'install', $config) + ->andReturn($backups) + ->once(); + + $io = Mockery::mock(\Meteor\IO\IOInterface::class, [ + 'askConfirmation' => null, + 'debug' => null, + ]); + + $this->handler = new CheckDiskSpaceHandler($this->backupFinder, $this->filesystem, $io); + + $io->shouldReceive('warning') + ->once() + ->with('There is not enough free disk space to apply this patch. Space required: 825.00 MB, Space available: 1.91 MB'); + + static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); + } } function disk_free_space($directory) From ab3eacb0916a104807f3bb45de8c7b9c7e6dd736 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 3 Mar 2025 11:58:58 +0000 Subject: [PATCH 09/20] Upgrade jadu style and cs fixer --- composer.json | 3 +- composer.lock | 1370 +++++++++++++++++++++++++++++++------------------ 2 files changed, 866 insertions(+), 507 deletions(-) diff --git a/composer.json b/composer.json index 97a45385..2c39330e 100644 --- a/composer.json +++ b/composer.json @@ -29,8 +29,7 @@ "phpunit/phpunit": "^9.5", "mockery/mockery": "^1.5", "mikey179/vfsstream": "*", - "friendsofphp/php-cs-fixer": "^2.0", - "jadu/php-style": "~1.2" + "jadu/php-style": "^2.0" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index ab877c7b..5af8f607 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": "d0d686da5a2a1f67ad68a3e92116edd7", + "content-hash": "b4cf7d6436b06b948013107ad6cd07d9", "packages": [ { "name": "amphp/amp", @@ -632,30 +632,38 @@ }, { "name": "composer/pcre", - "version": "1.0.1", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560" + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/67a32d7d6f9f560b726ab25a061b38ff3a80c560", - "reference": "67a32d7d6f9f560b726ab25a061b38ff3a80c560", + "url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e", + "reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e", "shasum": "" }, "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" + "php": "^7.4 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<1.11.10" }, "require-dev": { - "phpstan/phpstan": "^1.3", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.12 || ^2", + "phpstan/phpstan-strict-rules": "^1 || ^2", + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, "branch-alias": { - "dev-main": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -683,7 +691,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.1" + "source": "https://github.com/composer/pcre/tree/3.3.2" }, "funding": [ { @@ -699,28 +707,28 @@ "type": "tidelift" } ], - "time": "2022-01-21T20:24:37+00:00" + "time": "2024-11-12T16:29:46+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.4", - "symfony/phpunit-bridge": "^4.2 || ^5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { @@ -762,9 +770,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.3.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -780,31 +788,31 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "composer/xdebug-handler", - "version": "2.0.5", + "version": "3.0.5", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a" + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/9e36aeed4616366d2b690bdce11f71e9178c579a", - "reference": "9e36aeed4616366d2b690bdce11f71e9178c579a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6c1925561632e83d60a44492e0b344cf48ab85ef", + "reference": "6c1925561632e83d60a44492e0b344cf48ab85ef", "shasum": "" }, "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", + "composer/pcre": "^1 || ^2 || ^3", + "php": "^7.2.5 || ^8.0", "psr/log": "^1 || ^2 || ^3" }, "require-dev": { "phpstan/phpstan": "^1.0", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + "phpunit/phpunit": "^8.5 || ^9.6 || ^10.5" }, "type": "library", "autoload": { @@ -828,9 +836,9 @@ "performance" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.5" + "source": "https://github.com/composer/xdebug-handler/tree/3.0.5" }, "funding": [ { @@ -846,7 +854,7 @@ "type": "tidelift" } ], - "time": "2022-02-24T20:20:32+00:00" + "time": "2024-05-06T16:37:16+00:00" }, { "name": "doctrine/cache", @@ -1052,25 +1060,27 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -1078,7 +1088,7 @@ "type": "library", "autoload": { "psr-4": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "Doctrine\\Deprecations\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1089,9 +1099,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2024-12-07T21:18:45+00:00" }, { "name": "doctrine/event-manager", @@ -2257,25 +2267,25 @@ }, { "name": "nikic/php-parser", - "version": "v4.15.4", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6bb5176bc4af8bcb7d926f88718db9b96a2d4290", - "reference": "6bb5176bc4af8bcb7d926f88718db9b96a2d4290", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=7.0" + "php": ">=7.1" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -2307,9 +2317,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2023-03-05T19:49:14+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -3177,16 +3187,16 @@ }, { "name": "symfony/console", - "version": "v5.4.23", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c" + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/90f21e27d0d88ce38720556dd164d4a1e4c3934c", - "reference": "90f21e27d0d88ce38720556dd164d4a1e4c3934c", + "url": "https://api.github.com/repos/symfony/console/zipball/c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", + "reference": "c4ba980ca61a9eb18ee6bcc73f28e475852bb1ed", "shasum": "" }, "require": { @@ -3256,7 +3266,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.23" + "source": "https://github.com/symfony/console/tree/v5.4.47" }, "funding": [ { @@ -3272,7 +3282,7 @@ "type": "tidelift" } ], - "time": "2023-04-24T18:47:29+00:00" + "time": "2024-11-06T11:30:55+00:00" }, { "name": "symfony/dependency-injection", @@ -3365,16 +3375,16 @@ }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/605389f2a7e5625f273b53960dc46aeaf9c62918", + "reference": "605389f2a7e5625f273b53960dc46aeaf9c62918", "shasum": "" }, "require": { @@ -3382,12 +3392,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3412,7 +3422,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.4" }, "funding": [ { @@ -3428,20 +3438,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.22", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f" + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1df20e45d56da29a4b1d8259dd6e950acbf1b13f", - "reference": "1df20e45d56da29a4b1d8259dd6e950acbf1b13f", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/72982eb416f61003e9bb6e91f8b3213600dcf9e9", + "reference": "72982eb416f61003e9bb6e91f8b3213600dcf9e9", "shasum": "" }, "require": { @@ -3497,7 +3507,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/v5.4.22" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.45" }, "funding": [ { @@ -3513,20 +3523,20 @@ "type": "tidelift" } ], - "time": "2023-03-17T11:31:58+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" + "reference": "e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", - "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f", + "reference": "e0fe3d79b516eb75126ac6fa4cbf19b79b08c99f", "shasum": "" }, "require": { @@ -3538,12 +3548,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3576,7 +3586,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.4" }, "funding": [ { @@ -3592,20 +3602,20 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/filesystem", - "version": "v5.4.23", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5" + "reference": "57c8294ed37d4a055b77057827c67f9558c95c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", - "reference": "b2f79d86cd9e7de0fff6d03baa80eaed7a5f38b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/57c8294ed37d4a055b77057827c67f9558c95c54", + "reference": "57c8294ed37d4a055b77057827c67f9558c95c54", "shasum": "" }, "require": { @@ -3614,6 +3624,9 @@ "symfony/polyfill-mbstring": "~1.8", "symfony/polyfill-php80": "^1.16" }, + "require-dev": { + "symfony/process": "^5.4|^6.4" + }, "type": "library", "autoload": { "psr-4": { @@ -3640,7 +3653,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v5.4.23" + "source": "https://github.com/symfony/filesystem/tree/v5.4.45" }, "funding": [ { @@ -3656,20 +3669,20 @@ "type": "tidelift" } ], - "time": "2023-03-02T11:38:35+00:00" + "time": "2024-10-22T13:05:35+00:00" }, { "name": "symfony/finder", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19" + "reference": "63741784cd7b9967975eec610b256eed3ede022b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/078e9a5e1871fcfe6a5ce421b539344c21afef19", - "reference": "078e9a5e1871fcfe6a5ce421b539344c21afef19", + "url": "https://api.github.com/repos/symfony/finder/zipball/63741784cd7b9967975eec610b256eed3ede022b", + "reference": "63741784cd7b9967975eec610b256eed3ede022b", "shasum": "" }, "require": { @@ -3703,7 +3716,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.21" + "source": "https://github.com/symfony/finder/tree/v5.4.45" }, "funding": [ { @@ -3719,20 +3732,20 @@ "type": "tidelift" } ], - "time": "2023-02-16T09:33:00+00:00" + "time": "2024-09-28T13:32:08+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", - "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", + "reference": "74e5b6f0db3e8589e6cfd5efb317a1fc2bb52fb6", "shasum": "" }, "require": { @@ -3772,7 +3785,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.45" }, "funding": [ { @@ -3788,24 +3801,24 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3815,12 +3828,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3854,7 +3864,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -3870,36 +3880,33 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -3935,7 +3942,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3951,7 +3958,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-idn", @@ -4042,32 +4049,29 @@ }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4106,7 +4110,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -4122,24 +4126,24 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -4149,12 +4153,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4189,7 +4190,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -4205,7 +4206,7 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php72", @@ -4285,29 +4286,26 @@ }, { "name": "symfony/polyfill-php80", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", - "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4348,7 +4346,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -4364,33 +4362,30 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.27.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", - "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { - "branch-alias": { - "dev-main": "1.27-dev" - }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4427,7 +4422,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { @@ -4443,20 +4438,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v5.4.23", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4b842fc4b61609e0a155a114082bd94e31e98287" + "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b842fc4b61609e0a155a114082bd94e31e98287", - "reference": "4b842fc4b61609e0a155a114082bd94e31e98287", + "url": "https://api.github.com/repos/symfony/process/zipball/5d1662fb32ebc94f17ddb8d635454a776066733d", + "reference": "5d1662fb32ebc94f17ddb8d635454a776066733d", "shasum": "" }, "require": { @@ -4489,7 +4484,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.23" + "source": "https://github.com/symfony/process/tree/v5.4.47" }, "funding": [ { @@ -4505,20 +4500,20 @@ "type": "tidelift" } ], - "time": "2023-04-18T13:50:24+00:00" + "time": "2024-11-06T11:36:42+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.5.2", + "version": "v2.5.4", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", - "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/f37b419f7aea2e9abf10abd261832cace12e3300", + "reference": "f37b419f7aea2e9abf10abd261832cace12e3300", "shasum": "" }, "require": { @@ -4534,12 +4529,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4572,7 +4567,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.4" }, "funding": [ { @@ -4588,20 +4583,20 @@ "type": "tidelift" } ], - "time": "2022-05-30T19:17:29+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/stopwatch", - "version": "v5.4.21", + "version": "v5.4.45", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee" + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/f83692cd869a6f2391691d40a01e8acb89e76fee", - "reference": "f83692cd869a6f2391691d40a01e8acb89e76fee", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/fb2c199cf302eb207f8c23e7ee174c1c31a5c004", + "reference": "fb2c199cf302eb207f8c23e7ee174c1c31a5c004", "shasum": "" }, "require": { @@ -4634,7 +4629,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v5.4.21" + "source": "https://github.com/symfony/stopwatch/tree/v5.4.45" }, "funding": [ { @@ -4650,20 +4645,20 @@ "type": "tidelift" } ], - "time": "2023-02-14T08:03:56+00:00" + "time": "2024-09-25T14:11:13+00:00" }, { "name": "symfony/string", - "version": "v5.4.22", + "version": "v5.4.47", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62" + "reference": "136ca7d72f72b599f2631aca474a4f8e26719799" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", - "reference": "8036a4c76c0dd29e60b6a7cafcacc50cf088ea62", + "url": "https://api.github.com/repos/symfony/string/zipball/136ca7d72f72b599f2631aca474a4f8e26719799", + "reference": "136ca7d72f72b599f2631aca474a4f8e26719799", "shasum": "" }, "require": { @@ -4720,7 +4715,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.22" + "source": "https://github.com/symfony/string/tree/v5.4.47" }, "funding": [ { @@ -4736,7 +4731,7 @@ "type": "tidelift" } ], - "time": "2023-03-14T06:11:53+00:00" + "time": "2024-11-10T20:33:58+00:00" }, { "name": "symfony/var-dumper", @@ -5203,40 +5198,31 @@ ], "packages-dev": [ { - "name": "doctrine/annotations", - "version": "1.14.3", + "name": "clue/ndjson-react", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af" + "url": "https://github.com/clue/reactphp-ndjson.git", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", - "reference": "fb0d71a7393298a7b232cbf4c8b1f73f3ec3d5af", + "url": "https://api.github.com/repos/clue/reactphp-ndjson/zipball/392dc165fce93b5bb5c637b67e59619223c931b0", + "reference": "392dc165fce93b5bb5c637b67e59619223c931b0", "shasum": "" }, "require": { - "doctrine/lexer": "^1 || ^2", - "ext-tokenizer": "*", - "php": "^7.1 || ^8.0", - "psr/cache": "^1 || ^2 || ^3" + "php": ">=5.3", + "react/stream": "^1.2" }, "require-dev": { - "doctrine/cache": "^1.11 || ^2.0", - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "~1.4.10 || ^1.8.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "symfony/cache": "^4.4 || ^5.4 || ^6", - "vimeo/psalm": "^4.10" - }, - "suggest": { - "php": "PHP 8.0 or higher comes with attributes, a native replacement for annotations" + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35", + "react/event-loop": "^1.2" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + "Clue\\React\\NDJson\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5245,38 +5231,35 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Christian Lück", + "email": "christian@clue.engineering" } ], - "description": "Docblock Annotations Parser", - "homepage": "https://www.doctrine-project.org/projects/annotations.html", + "description": "Streaming newline-delimited JSON (NDJSON) parser and encoder for ReactPHP.", + "homepage": "https://github.com/clue/reactphp-ndjson", "keywords": [ - "annotations", - "docblock", - "parser" + "NDJSON", + "json", + "jsonlines", + "newline", + "reactphp", + "streaming" ], "support": { - "issues": "https://github.com/doctrine/annotations/issues", - "source": "https://github.com/doctrine/annotations/tree/1.14.3" + "issues": "https://github.com/clue/reactphp-ndjson/issues", + "source": "https://github.com/clue/reactphp-ndjson/tree/v1.3.0" }, - "time": "2023-02-01T09:20:38+00:00" + "funding": [ + { + "url": "https://clue.engineering/support", + "type": "custom" + }, + { + "url": "https://github.com/clue", + "type": "github" + } + ], + "time": "2022-12-23T10:58:28+00:00" }, { "name": "doctrine/instantiator", @@ -5349,34 +5332,29 @@ "time": "2022-12-30T00:15:36+00:00" }, { - "name": "doctrine/lexer", - "version": "2.1.0", + "name": "evenement/evenement", + "version": "v3.0.2", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124" + "url": "https://github.com/igorw/evenement.git", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", - "reference": "39ab8fcf5a51ce4b85ca97c7a7d033eb12831124", + "url": "https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc", + "reference": "0a16b0d71ab13284339abb99d9d2bd813640efbc", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.1 || ^8.0" + "php": ">=7.0" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^10", - "phpstan/phpstan": "^1.3", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "^0.18.3", - "vimeo/psalm": "^4.11 || ^5.0" + "phpunit/phpunit": "^9 || ^6" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Lexer\\": "src" + "Evenement\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -5385,127 +5363,150 @@ ], "authors": [ { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + } + ], + "description": "Événement is a very simple event dispatching library for PHP", + "keywords": [ + "event-dispatcher", + "event-emitter" + ], + "support": { + "issues": "https://github.com/igorw/evenement/issues", + "source": "https://github.com/igorw/evenement/tree/v3.0.2" + }, + "time": "2023-08-08T05:53:35+00:00" + }, + { + "name": "fidry/cpu-core-counter", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/theofidry/cpu-core-counter.git", + "reference": "8520451a140d3f46ac33042715115e290cf5785f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "fidry/makefile": "^0.2.0", + "fidry/php-cs-fixer-config": "^1.1.2", + "phpstan/extension-installer": "^1.2.0", + "phpstan/phpstan": "^1.9.2", + "phpstan/phpstan-deprecation-rules": "^1.0.0", + "phpstan/phpstan-phpunit": "^1.2.2", + "phpstan/phpstan-strict-rules": "^1.4.4", + "phpunit/phpunit": "^8.5.31 || ^9.5.26", + "webmozarts/strict-phpunit": "^7.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Fidry\\CpuCoreCounter\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Théo FIDRY", + "email": "theo.fidry@gmail.com" } ], - "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "https://www.doctrine-project.org/projects/lexer.html", + "description": "Tiny utility to get the number of CPU cores.", "keywords": [ - "annotations", - "docblock", - "lexer", - "parser", - "php" + "CPU", + "core" ], "support": { - "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/2.1.0" + "issues": "https://github.com/theofidry/cpu-core-counter/issues", + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", - "type": "tidelift" + "url": "https://github.com/theofidry", + "type": "github" } ], - "time": "2022-12-14T08:49:07+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.19.3", + "version": "v3.70.1", "source": { "type": "git", - "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8" + "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", + "reference": "add1b3a05256392dbad63875240041b2c0349ceb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/75ac86f33fab4714ea5a39a396784d83ae3b5ed8", - "reference": "75ac86f33fab4714ea5a39a396784d83ae3b5ed8", + "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/add1b3a05256392dbad63875240041b2c0349ceb", + "reference": "add1b3a05256392dbad63875240041b2c0349ceb", "shasum": "" }, "require": { - "composer/semver": "^1.4 || ^2.0 || ^3.0", - "composer/xdebug-handler": "^1.2 || ^2.0", - "doctrine/annotations": "^1.2", + "clue/ndjson-react": "^1.0", + "composer/semver": "^3.4", + "composer/xdebug-handler": "^3.0.3", + "ext-filter": "*", "ext-json": "*", "ext-tokenizer": "*", - "php": "^5.6 || ^7.0 || ^8.0", - "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", - "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", - "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", - "symfony/finder": "^3.0 || ^4.0 || ^5.0", - "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", - "symfony/polyfill-php70": "^1.0", - "symfony/polyfill-php72": "^1.4", - "symfony/process": "^3.0 || ^4.0 || ^5.0", - "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" + "fidry/cpu-core-counter": "^1.2", + "php": "^7.4 || ^8.0", + "react/child-process": "^0.6.5", + "react/event-loop": "^1.0", + "react/promise": "^2.0 || ^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" }, "require-dev": { - "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.4", - "mikey179/vfsstream": "^1.6", - "php-coveralls/php-coveralls": "^2.4.2", - "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", - "phpspec/prophecy-phpunit": "^1.1 || ^2.0", - "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.13 || ^9.5", - "phpunitgoodpractices/polyfill": "^1.5", - "phpunitgoodpractices/traits": "^1.9.1", - "sanmai/phpunit-legacy-adapter": "^6.4 || ^8.2.1", - "symfony/phpunit-bridge": "^5.2.1", - "symfony/yaml": "^3.0 || ^4.0 || ^5.0" + "facile-it/paraunit": "^1.3.1 || ^2.5", + "infection/infection": "^0.29.10", + "justinrainbow/json-schema": "^5.3 || ^6.0", + "keradus/cli-executor": "^2.1", + "mikey179/vfsstream": "^1.6.12", + "php-coveralls/php-coveralls": "^2.7", + "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.7", + "symfony/var-dumper": "^5.4.48 || ^6.4.18 || ^7.2.0", + "symfony/yaml": "^5.4.45 || ^6.4.18 || ^7.2.0" }, "suggest": { "ext-dom": "For handling output formats in XML", - "ext-mbstring": "For handling non-UTF8 characters.", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", - "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." + "ext-mbstring": "For handling non-UTF8 characters." }, "bin": [ "php-cs-fixer" ], "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.19-dev" - } - }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" }, - "classmap": [ - "tests/Test/AbstractFixerTestCase.php", - "tests/Test/AbstractIntegrationCaseFactory.php", - "tests/Test/AbstractIntegrationTestCase.php", - "tests/Test/Assert/AssertTokensTrait.php", - "tests/Test/IntegrationCase.php", - "tests/Test/IntegrationCaseFactory.php", - "tests/Test/IntegrationCaseFactoryInterface.php", - "tests/Test/InternalIntegrationCaseFactory.php", - "tests/Test/IsIdenticalConstraint.php", - "tests/Test/TokensWithObservedTransformers.php", - "tests/TestCase.php" + "exclude-from-classmap": [ + "src/Fixer/Internal/*" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5523,9 +5524,15 @@ } ], "description": "A tool to automatically fix PHP code style", + "keywords": [ + "Static code analysis", + "fixer", + "standards", + "static analysis" + ], "support": { - "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", - "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.19.3" + "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", + "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.70.1" }, "funding": [ { @@ -5533,7 +5540,7 @@ "type": "github" } ], - "time": "2021-11-15T17:17:55+00:00" + "time": "2025-03-01T22:05:46+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -5588,20 +5595,20 @@ }, { "name": "jadu/php-style", - "version": "1.3.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/jadu/php-style.git", - "reference": "bb1a8e9e486f473e2c922f6e70f3fcebbb5aa36a" + "reference": "8c978faaff19323ebf8f9d4c143b690a5f384b07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jadu/php-style/zipball/bb1a8e9e486f473e2c922f6e70f3fcebbb5aa36a", - "reference": "bb1a8e9e486f473e2c922f6e70f3fcebbb5aa36a", + "url": "https://api.github.com/repos/jadu/php-style/zipball/8c978faaff19323ebf8f9d4c143b690a5f384b07", + "reference": "8c978faaff19323ebf8f9d4c143b690a5f384b07", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^2.14", + "friendsofphp/php-cs-fixer": "^3.14", "php": ">=7.1" }, "type": "library", @@ -5617,9 +5624,9 @@ "description": "Jadu PHP coding style configuration for PHP-CS-Fixer", "support": { "issues": "https://github.com/jadu/php-style/issues", - "source": "https://github.com/jadu/php-style/tree/master" + "source": "https://github.com/jadu/php-style/tree/2.0.1" }, - "time": "2019-11-18T16:20:50+00:00" + "time": "2023-08-18T14:14:19+00:00" }, { "name": "mikey179/vfsstream", @@ -5914,62 +5921,6 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "php-cs-fixer/diff", - "version": "v1.3.1", - "source": { - "type": "git", - "url": "https://github.com/PHP-CS-Fixer/diff.git", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", - "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", - "shasum": "" - }, - "require": { - "php": "^5.6 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", - "symfony/process": "^3.3" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, - { - "name": "SpacePossum" - } - ], - "description": "sebastian/diff v2 backport support for PHP5.6", - "homepage": "https://github.com/PHP-CS-Fixer", - "keywords": [ - "diff" - ], - "support": { - "issues": "https://github.com/PHP-CS-Fixer/diff/issues", - "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" - }, - "abandoned": true, - "time": "2020-10-14T08:39:05+00:00" - }, { "name": "phpunit/php-code-coverage", "version": "9.2.26", @@ -6392,31 +6343,30 @@ "time": "2023-04-14T08:58:40+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "react/cache", + "version": "v1.2.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/reactphp/cache.git", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/reactphp/cache/zipball/d47c472b64aa5608225f47965a484b75c7817d5b", + "reference": "d47c472b64aa5608225f47965a484b75c7817d5b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.0", + "react/promise": "^3.0 || ^2.0 || ^1.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } + "require-dev": { + "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" }, + "type": "library", "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" + "React\\Cache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6425,20 +6375,498 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for caching libraries", + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, Promise-based cache interface for ReactPHP", "keywords": [ "cache", - "psr", - "psr-6" + "caching", + "promise", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/cache/issues", + "source": "https://github.com/reactphp/cache/tree/v1.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2022-11-30T15:59:55+00:00" + }, + { + "name": "react/child-process", + "version": "v0.6.6", + "source": { + "type": "git", + "url": "https://github.com/reactphp/child-process.git", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/child-process/zipball/1721e2b93d89b745664353b9cfc8f155ba8a6159", + "reference": "1721e2b93d89b745664353b9cfc8f155ba8a6159", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/event-loop": "^1.2", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/socket": "^1.16", + "sebastian/environment": "^5.0 || ^3.0 || ^2.0 || ^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\ChildProcess\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven library for executing child processes with ReactPHP.", + "keywords": [ + "event-driven", + "process", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/child-process/issues", + "source": "https://github.com/reactphp/child-process/tree/v0.6.6" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2025-01-01T16:37:48+00:00" + }, + { + "name": "react/dns", + "version": "v1.13.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/dns.git", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "react/cache": "^1.0 || ^0.6 || ^0.5", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.7 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Dns\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async DNS resolver for ReactPHP", + "keywords": [ + "async", + "dns", + "dns-resolver", + "reactphp" + ], + "support": { + "issues": "https://github.com/reactphp/dns/issues", + "source": "https://github.com/reactphp/dns/tree/v1.13.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-13T14:18:03+00:00" + }, + { + "name": "react/event-loop", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/event-loop.git", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "reference": "bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "suggest": { + "ext-pcntl": "For signal handling support when using the StreamSelectLoop" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\EventLoop\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", + "keywords": [ + "asynchronous", + "event-loop" + ], + "support": { + "issues": "https://github.com/reactphp/event-loop/issues", + "source": "https://github.com/reactphp/event-loop/tree/v1.5.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2023-11-13T13:48:05+00:00" + }, + { + "name": "react/promise", + "version": "v3.2.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", + "shasum": "" + }, + "require": { + "php": ">=7.1.0" + }, + "require-dev": { + "phpstan/phpstan": "1.10.39 || 1.4.10", + "phpunit/phpunit": "^9.6 || ^7.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v3.2.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-05-24T10:39:05+00:00" + }, + { + "name": "react/socket", + "version": "v1.16.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/socket.git", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.0", + "react/dns": "^1.13", + "react/event-loop": "^1.2", + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", + "react/async": "^4.3 || ^3.3 || ^2", + "react/promise-stream": "^1.4", + "react/promise-timer": "^1.11" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Socket\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", + "keywords": [ + "Connection", + "Socket", + "async", + "reactphp", + "stream" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "issues": "https://github.com/reactphp/socket/issues", + "source": "https://github.com/reactphp/socket/tree/v1.16.0" }, - "time": "2016-08-06T20:24:11+00:00" + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-07-26T10:38:09+00:00" + }, + { + "name": "react/stream", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/stream.git", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "shasum": "" + }, + "require": { + "evenement/evenement": "^3.0 || ^2.0 || ^1.0", + "php": ">=5.3.8", + "react/event-loop": "^1.2" + }, + "require-dev": { + "clue/stream-filter": "~1.2", + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Stream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", + "keywords": [ + "event-driven", + "io", + "non-blocking", + "pipe", + "reactphp", + "readable", + "stream", + "writable" + ], + "support": { + "issues": "https://github.com/reactphp/stream/issues", + "source": "https://github.com/reactphp/stream/tree/v1.4.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-11T12:45:25+00:00" }, { "name": "sebastian/cli-parser", @@ -6740,16 +7168,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { @@ -6794,7 +7222,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -6802,7 +7230,7 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", @@ -7404,74 +7832,6 @@ ], "time": "2020-09-28T06:39:44+00:00" }, - { - "name": "symfony/polyfill-php70", - "version": "v1.20.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", - "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "metapackage", - "extra": { - "branch-alias": { - "dev-main": "1.20-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2020-10-23T14:02:19+00:00" - }, { "name": "theseer/tokenizer", "version": "1.2.1", From 90ec9711c341a6a6876c813347b5f581cdebc674 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 3 Mar 2025 12:00:17 +0000 Subject: [PATCH 10/20] CS fixes --- .../ServiceContainer/AutoloadExtension.php | 2 +- src/Cli/Application.php | 4 +- src/Cli/ServiceContainer/CliExtension.php | 10 +-- src/Configuration/ConfigurationLoader.php | 12 ++-- src/Configuration/JsonFormatter.php | 2 +- .../ConfigurationExtension.php | 4 +- .../EventDispatcherExtension.php | 4 +- .../ServiceContainer/FilesystemExtension.php | 4 +- src/IO/ConsoleIO.php | 8 +-- src/IO/IOInterface.php | 4 +- src/IO/ServiceContainer/IOExtension.php | 2 +- .../ServiceContainer/LoggerExtension.php | 2 +- .../Configuration/ConfigurationFactory.php | 2 +- .../Configuration/FileConfiguration.php | 4 +- .../Loader/SystemConfigurationLoader.php | 2 +- src/Migrations/MigrationsConstants.php | 4 +- src/Migrations/Migrator.php | 2 +- src/Migrations/Outputter/StatusOutputter.php | 2 +- .../ServiceContainer/MigrationsExtension.php | 46 +++++++------- .../Version/FileMigrationVersion.php | 2 +- .../FileMigrationVersionStorageFactory.php | 2 +- src/Migrations/Version/VersionFileManager.php | 4 +- src/Migrations/Version/VersionManager.php | 2 +- .../CombinedPackageDependencyChecker.php | 4 +- .../Combined/CombinedPackageProblem.php | 4 +- .../Combined/CombinedPackageResolver.php | 2 +- src/Package/Combined/PackageCombiner.php | 2 +- .../Composer/ComposerDependencyChecker.php | 4 +- src/Package/Composer/ComposerProblem.php | 4 +- src/Package/PackageConstants.php | 2 +- src/Package/PackageCreator.php | 2 +- src/Package/PackageExtractor.php | 8 +-- .../BasicHttpPackageProviderExtension.php | 4 +- .../DummyPackageProviderExtension.php | 2 +- .../GoogleDrivePackageProviderExtension.php | 6 +- .../ServiceContainer/PackageExtension.php | 28 ++++----- src/Patch/Cli/Command/ApplyCommand.php | 2 +- src/Patch/Cli/Command/RollbackCommand.php | 2 +- src/Patch/Event/PatchEvents.php | 8 +-- src/Patch/Lock/Locker.php | 2 +- src/Patch/Manifest/ManifestChecker.php | 2 +- src/Patch/ServiceContainer/PatchExtension.php | 62 +++++++++---------- .../DummyPatchStrategyExtension.php | 2 +- .../OverwritePatchStrategyExtension.php | 2 +- src/Patch/Task/CheckDiskSpaceHandler.php | 6 +- .../Task/CheckModuleCmsDependencyHandler.php | 4 +- src/Patch/Task/CheckVersion.php | 4 +- src/Permissions/PermissionLoader.php | 2 +- src/Permissions/PermissionSetter.php | 2 +- .../ServiceContainer/PermissionsExtension.php | 6 +- .../ServiceContainer/PlatformExtension.php | 8 +-- src/Platform/Unix/InstallConfigLoader.php | 2 +- src/Process/PHPMemoryLimitSetter.php | 4 +- src/Process/ProcessFactory.php | 2 +- src/Process/ProcessRunner.php | 10 +-- .../ServiceContainer/ProcessExtension.php | 4 +- .../ServiceContainer/ScriptsExtension.php | 16 ++--- src/ServiceContainer/ContainerLoader.php | 2 +- .../Loader/ChainedConfigurationLoaderTest.php | 24 +++---- ...oogleDrivePackageProviderExtensionTest.php | 6 +- tests/Process/PHPMemoryLimitSetterTest.php | 1 + 61 files changed, 194 insertions(+), 193 deletions(-) diff --git a/src/Autoload/ServiceContainer/AutoloadExtension.php b/src/Autoload/ServiceContainer/AutoloadExtension.php index 28c205de..21b5936f 100644 --- a/src/Autoload/ServiceContainer/AutoloadExtension.php +++ b/src/Autoload/ServiceContainer/AutoloadExtension.php @@ -13,7 +13,7 @@ class AutoloadExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_CLASS_LOADER = 'autoload.class_loader'; + public const SERVICE_CLASS_LOADER = 'autoload.class_loader'; /** * Returns the extension config key. diff --git a/src/Cli/Application.php b/src/Cli/Application.php index 116312a8..64b8726a 100644 --- a/src/Cli/Application.php +++ b/src/Cli/Application.php @@ -22,8 +22,8 @@ class Application extends BaseApplication { - const PARAMETER_CONFIG = 'config'; - const PARAMETER_WORKING_DIR = 'working_dir'; + public const PARAMETER_CONFIG = 'config'; + public const PARAMETER_WORKING_DIR = 'working_dir'; /** * @var ConfigurationLoader diff --git a/src/Cli/ServiceContainer/CliExtension.php b/src/Cli/ServiceContainer/CliExtension.php index 04cafd90..c2f3dd27 100644 --- a/src/Cli/ServiceContainer/CliExtension.php +++ b/src/Cli/ServiceContainer/CliExtension.php @@ -10,11 +10,11 @@ class CliExtension extends ExtensionBase implements ExtensionInterface { - const PARAMETER_COMMAND_SERVICE_IDS = 'cli.command.service_ids'; - const SERVICE_APPLICATION = 'cli.application'; - const SERVICE_INPUT = 'cli.input'; - const SERVICE_OUTPUT = 'cli.output'; - const TAG_COMMAND = 'cli.command'; + public const PARAMETER_COMMAND_SERVICE_IDS = 'cli.command.service_ids'; + public const SERVICE_APPLICATION = 'cli.application'; + public const SERVICE_INPUT = 'cli.input'; + public const SERVICE_OUTPUT = 'cli.output'; + public const TAG_COMMAND = 'cli.command'; /** * Returns the extension config key. diff --git a/src/Configuration/ConfigurationLoader.php b/src/Configuration/ConfigurationLoader.php index 2f74b60b..e3cd9e35 100644 --- a/src/Configuration/ConfigurationLoader.php +++ b/src/Configuration/ConfigurationLoader.php @@ -10,9 +10,9 @@ class ConfigurationLoader { - const CONFIG_NAME = 'meteor.json'; - const DIST_CONFIG_NAME = 'meteor.json.dist'; - const PACKAGE_CONFIG_NAME = 'meteor.json.package'; + public const CONFIG_NAME = 'meteor.json'; + public const DIST_CONFIG_NAME = 'meteor.json.dist'; + public const PACKAGE_CONFIG_NAME = 'meteor.json.package'; /** * @var ExtensionManager @@ -39,7 +39,7 @@ class ConfigurationLoader * @param TreeBuilder $treeBuilder * @param Processor $processor */ - public function __construct(ExtensionManager $extensionManager, TreeBuilder $treeBuilder = null, Processor $processor = null) + public function __construct(ExtensionManager $extensionManager, ?TreeBuilder $treeBuilder = null, ?Processor $processor = null) { $this->extensionManager = $extensionManager; $this->treeBuilder = $treeBuilder ?: new TreeBuilder('meteor'); @@ -117,9 +117,9 @@ public function process(array $config) * @param string $path * @param bool $strict * - * @throws ConfigurationLoadingException - * * @return array + * + * @throws ConfigurationLoadingException */ public function load($path, $strict = true) { diff --git a/src/Configuration/JsonFormatter.php b/src/Configuration/JsonFormatter.php index 8c52c04c..e31521ef 100644 --- a/src/Configuration/JsonFormatter.php +++ b/src/Configuration/JsonFormatter.php @@ -80,7 +80,7 @@ public static function format($json, $unescapeUnicode, $unescapeSlashes) if (':' === $char) { // Add a space after the : character $char .= ' '; - } elseif (('}' === $char || ']' === $char)) { + } elseif ('}' === $char || ']' === $char) { --$pos; $prevChar = substr($json, $i - 1, 1); diff --git a/src/Configuration/ServiceContainer/ConfigurationExtension.php b/src/Configuration/ServiceContainer/ConfigurationExtension.php index bc1cbabe..ec1bba60 100644 --- a/src/Configuration/ServiceContainer/ConfigurationExtension.php +++ b/src/Configuration/ServiceContainer/ConfigurationExtension.php @@ -13,8 +13,8 @@ class ConfigurationExtension extends ExtensionBase implements ExtensionInterface { // NB: Set in Application - const SERVICE_LOADER = 'configuration.loader'; - const SERVICE_WRITER = 'configuration.writer'; + public const SERVICE_LOADER = 'configuration.loader'; + public const SERVICE_WRITER = 'configuration.writer'; /** * Returns the extension config key. diff --git a/src/EventDispatcher/ServiceContainer/EventDispatcherExtension.php b/src/EventDispatcher/ServiceContainer/EventDispatcherExtension.php index f5bc91a6..0e62953f 100644 --- a/src/EventDispatcher/ServiceContainer/EventDispatcherExtension.php +++ b/src/EventDispatcher/ServiceContainer/EventDispatcherExtension.php @@ -12,8 +12,8 @@ class EventDispatcherExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_EVENT_DISPATCHER = 'events.event_dispatcher'; - const TAG_SUBSCRIBER = 'events.subscriber'; + public const SERVICE_EVENT_DISPATCHER = 'events.event_dispatcher'; + public const TAG_SUBSCRIBER = 'events.subscriber'; /** * Returns the extension config key. diff --git a/src/Filesystem/ServiceContainer/FilesystemExtension.php b/src/Filesystem/ServiceContainer/FilesystemExtension.php index c7cfb35b..e9ffba6b 100644 --- a/src/Filesystem/ServiceContainer/FilesystemExtension.php +++ b/src/Filesystem/ServiceContainer/FilesystemExtension.php @@ -15,8 +15,8 @@ class FilesystemExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_FILESYSTEM = 'filesystem'; - const SERVICE_FINDER_FACTORY = 'filesystem.finder.factory'; + public const SERVICE_FILESYSTEM = 'filesystem'; + public const SERVICE_FINDER_FACTORY = 'filesystem.finder.factory'; /** * Returns the extension config key. diff --git a/src/IO/ConsoleIO.php b/src/IO/ConsoleIO.php index d4d6782d..4fb3cc50 100644 --- a/src/IO/ConsoleIO.php +++ b/src/IO/ConsoleIO.php @@ -21,7 +21,7 @@ class ConsoleIO implements IOInterface { - const MAX_LINE_LENGTH = 120; + public const MAX_LINE_LENGTH = 120; /** * @var InputInterface @@ -454,16 +454,16 @@ private function autoPrependBlock() $chars = substr(str_replace(PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); if (!isset($chars[0])) { - return $this->newLine(); //empty history, so we should start with a new line. + return $this->newLine(); // empty history, so we should start with a new line. } - //Prepend new line for each non LF chars (This means no blank line was output before) + // Prepend new line for each non LF chars (This means no blank line was output before) $this->newLine(2 - substr_count($chars, "\n")); } private function autoPrependText() { $fetched = $this->bufferedOutput->fetch(); - //Prepend new line if last char isn't EOL: + // Prepend new line if last char isn't EOL: if ("\n" !== substr($fetched, -1)) { $this->newLine(); } diff --git a/src/IO/IOInterface.php b/src/IO/IOInterface.php index 775fe8f5..4ffe4297 100644 --- a/src/IO/IOInterface.php +++ b/src/IO/IOInterface.php @@ -60,9 +60,9 @@ public function hasOption($name); * @param string|array $question The question to ask * @param string $default The default answer if none is given by the user * - * @throws \RuntimeException If there is no data to read in the input stream - * * @return string The user answer + * + * @throws \RuntimeException If there is no data to read in the input stream */ public function ask($question, $default = null); diff --git a/src/IO/ServiceContainer/IOExtension.php b/src/IO/ServiceContainer/IOExtension.php index b27f486e..47e13205 100644 --- a/src/IO/ServiceContainer/IOExtension.php +++ b/src/IO/ServiceContainer/IOExtension.php @@ -14,7 +14,7 @@ class IOExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_IO = 'io'; + public const SERVICE_IO = 'io'; /** * Returns the extension config key. diff --git a/src/Logger/ServiceContainer/LoggerExtension.php b/src/Logger/ServiceContainer/LoggerExtension.php index b360e37d..606a19b7 100644 --- a/src/Logger/ServiceContainer/LoggerExtension.php +++ b/src/Logger/ServiceContainer/LoggerExtension.php @@ -12,7 +12,7 @@ class LoggerExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_LOGGER = 'logger'; + public const SERVICE_LOGGER = 'logger'; /** * Returns the extension config key. diff --git a/src/Migrations/Configuration/ConfigurationFactory.php b/src/Migrations/Configuration/ConfigurationFactory.php index 4209211e..e6797950 100644 --- a/src/Migrations/Configuration/ConfigurationFactory.php +++ b/src/Migrations/Configuration/ConfigurationFactory.php @@ -43,7 +43,7 @@ public function __construct( ConnectionFactory $connectionFactory, FileMigrationVersionStorageFactory $fileMigrationVersionStorageFactory, VersionFileManager $versionFileManager, - IOInterface $io + IOInterface $io, ) { $this->connectionFactory = $connectionFactory; $this->fileMigrationVersionStorageFactory = $fileMigrationVersionStorageFactory; diff --git a/src/Migrations/Configuration/FileConfiguration.php b/src/Migrations/Configuration/FileConfiguration.php index 0715e8da..a24f57d2 100644 --- a/src/Migrations/Configuration/FileConfiguration.php +++ b/src/Migrations/Configuration/FileConfiguration.php @@ -8,7 +8,7 @@ class FileConfiguration extends AbstractConfiguration implements JaduPathAwareConfigurationInterface { - const MIGRATION_DIRECTORY = 'filesystem'; + public const MIGRATION_DIRECTORY = 'filesystem'; /** * @var FileMigrationVersionStorage @@ -24,7 +24,7 @@ public function getVersionStorage() } /** - * @return FileMigrationVersion[] + * @return FileMigrationVersion[] */ public function registerMigrationsFromDirectory(string $path): array { diff --git a/src/Migrations/Connection/Configuration/Loader/SystemConfigurationLoader.php b/src/Migrations/Connection/Configuration/Loader/SystemConfigurationLoader.php index 31659f36..d01d2bd6 100644 --- a/src/Migrations/Connection/Configuration/Loader/SystemConfigurationLoader.php +++ b/src/Migrations/Connection/Configuration/Loader/SystemConfigurationLoader.php @@ -4,7 +4,7 @@ class SystemConfigurationLoader implements ConfigurationLoaderInterface { - const CONFIG_FILENAME = 'config/system.xml'; + public const CONFIG_FILENAME = 'config/system.xml'; /** * {@inheritdoc} diff --git a/src/Migrations/MigrationsConstants.php b/src/Migrations/MigrationsConstants.php index 7a09b8af..9df5620d 100644 --- a/src/Migrations/MigrationsConstants.php +++ b/src/Migrations/MigrationsConstants.php @@ -4,6 +4,6 @@ final class MigrationsConstants { - const TYPE_DATABASE = 'database'; - const TYPE_FILE = 'file'; + public const TYPE_DATABASE = 'database'; + public const TYPE_FILE = 'file'; } diff --git a/src/Migrations/Migrator.php b/src/Migrations/Migrator.php index 038896a7..f2759241 100644 --- a/src/Migrations/Migrator.php +++ b/src/Migrations/Migrator.php @@ -25,7 +25,7 @@ class Migrator */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io + IOInterface $io, ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Migrations/Outputter/StatusOutputter.php b/src/Migrations/Outputter/StatusOutputter.php index 9bbcd308..193a2797 100644 --- a/src/Migrations/Outputter/StatusOutputter.php +++ b/src/Migrations/Outputter/StatusOutputter.php @@ -27,7 +27,7 @@ class StatusOutputter */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io + IOInterface $io, ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Migrations/ServiceContainer/MigrationsExtension.php b/src/Migrations/ServiceContainer/MigrationsExtension.php index 338e1855..15419b92 100644 --- a/src/Migrations/ServiceContainer/MigrationsExtension.php +++ b/src/Migrations/ServiceContainer/MigrationsExtension.php @@ -19,29 +19,29 @@ class MigrationsExtension extends ExtensionBase implements ExtensionInterface { - const PARAMETER_MIGRATIONS = 'migrations'; - const SERVICE_CONFIGURATION_FACTORY = 'migrations.configuration.factory'; - const SERVICE_CONNECTION_CONFIGURATION_LOADER = 'migrations.connection.configuration.loader'; - const SERVICE_CONNECTION_CONFIGURATION_LOADER_INPUT_OPTION = 'migrations.connection.configuration.loader.input_option'; - const SERVICE_CONNECTION_CONFIGURATION_LOADER_INPUT_QUESTION = 'migrations.connection.configuration.loader.input_question'; - const SERVICE_CONNECTION_CONFIGURATION_LOADER_SYSTEM = 'migrations.connection.configuration.loader.system'; - const SERVICE_CONNECTION_FACTORY = 'migrations.connection.factory'; - const SERVICE_COMMAND_EXECUTE_DATABASE_MIGRATION = 'migrations.cli.command.execute_database_migration'; - const SERVICE_COMMAND_EXECUTE_FILE_MIGRATION = 'migrations.cli.command.execute_file_migration'; - const SERVICE_COMMAND_GENERATE_DATABASE_MIGRATION = 'migrations.cli.command.generate_database_migration'; - const SERVICE_COMMAND_GENERATE_FILE_MIGRATION = 'migrations.cli.command.generate_file_migration'; - const SERVICE_COMMAND_MIGRATE_DATABASE = 'migrations.cli.command.migrate_database'; - const SERVICE_COMMAND_MIGRATE_FILES = 'migrations.cli.command.migrate_files'; - const SERVICE_COMMAND_DATABASE_MIGRATION_STATUS = 'migrations.cli.command.database_status'; - const SERVICE_COMMAND_FILE_MIGRATION_STATUS = 'migrations.cli.command.file_status'; - const SERVICE_COMMAND_DATABASE_MIGRATION_VERSION = 'migrations.cli.command.database_version'; - const SERVICE_COMMAND_FILE_MIGRATION_VERSION = 'migrations.cli.command.file_version'; - const SERVICE_MIGRATION_GENERATOR = 'migrations.migration_generator'; - const SERVICE_MIGRATOR = 'migrations.migrator'; - const SERVICE_STATUS_OUTPUTTER = 'migrations.outputter.status'; - const SERVICE_VERSION_FILE_MANAGER = 'migrations.version.version_file_manager'; - const SERVICE_VERSION_FILE_MIGRATION_VERSION_STORAGE_FACTORY = 'migrations.version.file_migration_version_storage_factory'; - const SERVICE_VERSION_MANAGER = 'migrations.version.manager'; + public const PARAMETER_MIGRATIONS = 'migrations'; + public const SERVICE_CONFIGURATION_FACTORY = 'migrations.configuration.factory'; + public const SERVICE_CONNECTION_CONFIGURATION_LOADER = 'migrations.connection.configuration.loader'; + public const SERVICE_CONNECTION_CONFIGURATION_LOADER_INPUT_OPTION = 'migrations.connection.configuration.loader.input_option'; + public const SERVICE_CONNECTION_CONFIGURATION_LOADER_INPUT_QUESTION = 'migrations.connection.configuration.loader.input_question'; + public const SERVICE_CONNECTION_CONFIGURATION_LOADER_SYSTEM = 'migrations.connection.configuration.loader.system'; + public const SERVICE_CONNECTION_FACTORY = 'migrations.connection.factory'; + public const SERVICE_COMMAND_EXECUTE_DATABASE_MIGRATION = 'migrations.cli.command.execute_database_migration'; + public const SERVICE_COMMAND_EXECUTE_FILE_MIGRATION = 'migrations.cli.command.execute_file_migration'; + public const SERVICE_COMMAND_GENERATE_DATABASE_MIGRATION = 'migrations.cli.command.generate_database_migration'; + public const SERVICE_COMMAND_GENERATE_FILE_MIGRATION = 'migrations.cli.command.generate_file_migration'; + public const SERVICE_COMMAND_MIGRATE_DATABASE = 'migrations.cli.command.migrate_database'; + public const SERVICE_COMMAND_MIGRATE_FILES = 'migrations.cli.command.migrate_files'; + public const SERVICE_COMMAND_DATABASE_MIGRATION_STATUS = 'migrations.cli.command.database_status'; + public const SERVICE_COMMAND_FILE_MIGRATION_STATUS = 'migrations.cli.command.file_status'; + public const SERVICE_COMMAND_DATABASE_MIGRATION_VERSION = 'migrations.cli.command.database_version'; + public const SERVICE_COMMAND_FILE_MIGRATION_VERSION = 'migrations.cli.command.file_version'; + public const SERVICE_MIGRATION_GENERATOR = 'migrations.migration_generator'; + public const SERVICE_MIGRATOR = 'migrations.migrator'; + public const SERVICE_STATUS_OUTPUTTER = 'migrations.outputter.status'; + public const SERVICE_VERSION_FILE_MANAGER = 'migrations.version.version_file_manager'; + public const SERVICE_VERSION_FILE_MIGRATION_VERSION_STORAGE_FACTORY = 'migrations.version.file_migration_version_storage_factory'; + public const SERVICE_VERSION_MANAGER = 'migrations.version.manager'; /** * Returns the extension config key. diff --git a/src/Migrations/Version/FileMigrationVersion.php b/src/Migrations/Version/FileMigrationVersion.php index fa0a700a..03896a6c 100644 --- a/src/Migrations/Version/FileMigrationVersion.php +++ b/src/Migrations/Version/FileMigrationVersion.php @@ -20,7 +20,7 @@ class FileMigrationVersion extends Version * @param string $class * @param FileMigrationVersionStorage $versionStorage */ - public function __construct(Configuration $configuration, $version, $class, Executor $executor, FileMigrationVersionStorage $versionStorage = null) + public function __construct(Configuration $configuration, $version, $class, Executor $executor, ?FileMigrationVersionStorage $versionStorage = null) { parent::__construct($configuration, $version, $class, $executor); diff --git a/src/Migrations/Version/FileMigrationVersionStorageFactory.php b/src/Migrations/Version/FileMigrationVersionStorageFactory.php index 7061d053..03314560 100644 --- a/src/Migrations/Version/FileMigrationVersionStorageFactory.php +++ b/src/Migrations/Version/FileMigrationVersionStorageFactory.php @@ -6,7 +6,7 @@ class FileMigrationVersionStorageFactory { - const STORAGE_DIR = '.meteor/file-migrations'; + public const STORAGE_DIR = '.meteor/file-migrations'; /** * @var Filesystem diff --git a/src/Migrations/Version/VersionFileManager.php b/src/Migrations/Version/VersionFileManager.php index 0b19d2d5..fea0bc3e 100644 --- a/src/Migrations/Version/VersionFileManager.php +++ b/src/Migrations/Version/VersionFileManager.php @@ -4,8 +4,8 @@ class VersionFileManager { - const DATABASE_MIGRATION = 'MIGRATION_NUMBER'; - const FILE_MIGRATION = 'FILE_SYSTEM_MIGRATION_NUMBER'; + public const DATABASE_MIGRATION = 'MIGRATION_NUMBER'; + public const FILE_MIGRATION = 'FILE_SYSTEM_MIGRATION_NUMBER'; /** * @param string $path diff --git a/src/Migrations/Version/VersionManager.php b/src/Migrations/Version/VersionManager.php index 89596fcf..71c9b740 100644 --- a/src/Migrations/Version/VersionManager.php +++ b/src/Migrations/Version/VersionManager.php @@ -23,7 +23,7 @@ class VersionManager */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io + IOInterface $io, ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Package/Combined/CombinedPackageDependencyChecker.php b/src/Package/Combined/CombinedPackageDependencyChecker.php index 9a9a973b..2c74122f 100644 --- a/src/Package/Combined/CombinedPackageDependencyChecker.php +++ b/src/Package/Combined/CombinedPackageDependencyChecker.php @@ -11,9 +11,9 @@ class CombinedPackageDependencyChecker * @param string $tempDir * @param array $config * - * @throws CombinedPackageDependenciesException - * * @return bool + * + * @throws CombinedPackageDependenciesException */ public function check($tempDir, array $config) { diff --git a/src/Package/Combined/CombinedPackageProblem.php b/src/Package/Combined/CombinedPackageProblem.php index 530600f2..68a54968 100644 --- a/src/Package/Combined/CombinedPackageProblem.php +++ b/src/Package/Combined/CombinedPackageProblem.php @@ -4,8 +4,8 @@ class CombinedPackageProblem { - const REASON_MISSING = 0; - const REASON_VERSION = 1; + public const REASON_MISSING = 0; + public const REASON_VERSION = 1; /** * @var CombinedPackageRequirement diff --git a/src/Package/Combined/CombinedPackageResolver.php b/src/Package/Combined/CombinedPackageResolver.php index 5e6af199..b7aa7292 100644 --- a/src/Package/Combined/CombinedPackageResolver.php +++ b/src/Package/Combined/CombinedPackageResolver.php @@ -41,7 +41,7 @@ class CombinedPackageResolver * @param IOInterface $io * @param PackageProviderInterface $packageProvider */ - public function __construct(PackageCombiner $packageCombiner, CombinedPackageDependencyChecker $combinedPackageDependencyChecker, Filesystem $filesystem, IOInterface $io, PackageProviderInterface $packageProvider = null) + public function __construct(PackageCombiner $packageCombiner, CombinedPackageDependencyChecker $combinedPackageDependencyChecker, Filesystem $filesystem, IOInterface $io, ?PackageProviderInterface $packageProvider = null) { $this->packageCombiner = $packageCombiner; $this->combinedPackageDependencyChecker = $combinedPackageDependencyChecker; diff --git a/src/Package/Combined/PackageCombiner.php b/src/Package/Combined/PackageCombiner.php index 8bf0c610..0fd066f9 100644 --- a/src/Package/Combined/PackageCombiner.php +++ b/src/Package/Combined/PackageCombiner.php @@ -48,7 +48,7 @@ public function __construct( Filesystem $filesystem, PackageExtractor $packageExtractor, MigrationsCopier $migrationsCopier, - IOInterface $io + IOInterface $io, ) { $this->configurationLoader = $configurationLoader; $this->filesystem = $filesystem; diff --git a/src/Package/Composer/ComposerDependencyChecker.php b/src/Package/Composer/ComposerDependencyChecker.php index b11edf73..4efe51c8 100644 --- a/src/Package/Composer/ComposerDependencyChecker.php +++ b/src/Package/Composer/ComposerDependencyChecker.php @@ -45,9 +45,9 @@ public function getRequirements($workingDir) * @param string $workingDir * @param array $config * - * @throws ComposerDependenciesException - * * @return bool + * + * @throws ComposerDependenciesException */ public function check($workingDir, array $config) { diff --git a/src/Package/Composer/ComposerProblem.php b/src/Package/Composer/ComposerProblem.php index 9da4b175..2a2613fd 100644 --- a/src/Package/Composer/ComposerProblem.php +++ b/src/Package/Composer/ComposerProblem.php @@ -4,8 +4,8 @@ class ComposerProblem { - const REASON_MISSING = 0; - const REASON_CONSTRAINT = 1; + public const REASON_MISSING = 0; + public const REASON_CONSTRAINT = 1; /** * @var ComposerRequirement diff --git a/src/Package/PackageConstants.php b/src/Package/PackageConstants.php index f4f055a6..7f41720a 100644 --- a/src/Package/PackageConstants.php +++ b/src/Package/PackageConstants.php @@ -4,5 +4,5 @@ final class PackageConstants { - const PATCH_DIR = 'to_patch'; + public const PATCH_DIR = 'to_patch'; } diff --git a/src/Package/PackageCreator.php b/src/Package/PackageCreator.php index 5dc71bea..b4ab77ac 100644 --- a/src/Package/PackageCreator.php +++ b/src/Package/PackageCreator.php @@ -73,7 +73,7 @@ public function __construct( CombinedPackageResolver $combinedPackageResolver, ComposerDependencyChecker $composerDependencyChecker, ConfigurationWriter $configurationWriter, - IOInterface $io + IOInterface $io, ) { $this->filesystem = $filesystem; $this->packageArchiver = $packageArchiver; diff --git a/src/Package/PackageExtractor.php b/src/Package/PackageExtractor.php index 56e1268d..513b63ab 100644 --- a/src/Package/PackageExtractor.php +++ b/src/Package/PackageExtractor.php @@ -14,9 +14,9 @@ class PackageExtractor * @param string $packagePath * @param string $targetDir * - * @throws RuntimeException - * * @return string + * + * @throws RuntimeException */ public function extract($packagePath, $targetDir) { @@ -34,9 +34,9 @@ public function extract($packagePath, $targetDir) /** * @param string $path * - * @throws RuntimeException - * * @return string + * + * @throws RuntimeException */ private function findFirstDirectoryWithMeteorConfig($path) { diff --git a/src/Package/Provider/BasicHttp/ServiceContainer/BasicHttpPackageProviderExtension.php b/src/Package/Provider/BasicHttp/ServiceContainer/BasicHttpPackageProviderExtension.php index bdb40b28..672dd7b1 100644 --- a/src/Package/Provider/BasicHttp/ServiceContainer/BasicHttpPackageProviderExtension.php +++ b/src/Package/Provider/BasicHttp/ServiceContainer/BasicHttpPackageProviderExtension.php @@ -15,8 +15,8 @@ class BasicHttpPackageProviderExtension extends ExtensionBase implements ExtensionInterface { - const PROVIDER_NAME = 'http'; - const PARAMETER_BASE_URLS = 'http_package_provider.base_urls'; + public const PROVIDER_NAME = 'http'; + public const PARAMETER_BASE_URLS = 'http_package_provider.base_urls'; /** * Returns the extension config key. diff --git a/src/Package/Provider/Dummy/ServiceContainer/DummyPackageProviderExtension.php b/src/Package/Provider/Dummy/ServiceContainer/DummyPackageProviderExtension.php index 4e60a98c..4cfd94af 100644 --- a/src/Package/Provider/Dummy/ServiceContainer/DummyPackageProviderExtension.php +++ b/src/Package/Provider/Dummy/ServiceContainer/DummyPackageProviderExtension.php @@ -12,7 +12,7 @@ class DummyPackageProviderExtension extends ExtensionBase implements ExtensionInterface { - const PROVIDER_NAME = 'dummy'; + public const PROVIDER_NAME = 'dummy'; /** * Returns the extension config key. diff --git a/src/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtension.php b/src/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtension.php index d8aadb99..cb8212fd 100644 --- a/src/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtension.php +++ b/src/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtension.php @@ -15,9 +15,9 @@ class GoogleDrivePackageProviderExtension extends ExtensionBase implements ExtensionInterface { - const PROVIDER_NAME = 'gdrive'; - const PARAMETER_BINARY = 'gdrive_package_provider.binary'; - const PARAMETER_FOLDERS = 'gdrive_package_provider.folders'; + public const PROVIDER_NAME = 'gdrive'; + public const PARAMETER_BINARY = 'gdrive_package_provider.binary'; + public const PARAMETER_FOLDERS = 'gdrive_package_provider.folders'; /** * Returns the extension config key. diff --git a/src/Package/ServiceContainer/PackageExtension.php b/src/Package/ServiceContainer/PackageExtension.php index 343430ce..9b689c50 100644 --- a/src/Package/ServiceContainer/PackageExtension.php +++ b/src/Package/ServiceContainer/PackageExtension.php @@ -29,19 +29,19 @@ class PackageExtension extends ExtensionBase implements ExtensionInterface { - const PARAMETER_PROVIDER = 'package.provider'; - const SERVICE_COMBINED_PACKAGE_DEPENDENCY_CHECKER = 'package.combined.package_dependency_checker'; - const SERVICE_COMBINED_PACKAGE_COMBINER = 'package.combined.package_combiner'; - const SERVICE_COMBINED_PACKAGE_RESOLVER = 'package.combined.package_resolver'; - const SERVICE_COMMAND_PACKAGE = 'package.cli.command.package'; - const SERVICE_COMPOSER_DEPENDENCY_CHECKER = 'package.composer.dependency_checker'; - const SERVICE_MIGRATIONS_COPIER = 'package.migrations.copier'; - const SERVICE_PACKAGE_ARCHIVER = 'package.archiver'; - const SERVICE_PACKAGE_CREATOR = 'package.creator'; - const SERVICE_PACKAGE_EXTRACTOR = 'package.extractor'; - const SERVICE_PACKAGE_NAME_RESOLVER = 'package.name_resolver'; - const SERVICE_PROVIDER_PREFIX = 'package.provider'; - const SERVICE_PROVIDER = 'package.provider'; + public const PARAMETER_PROVIDER = 'package.provider'; + public const SERVICE_COMBINED_PACKAGE_DEPENDENCY_CHECKER = 'package.combined.package_dependency_checker'; + public const SERVICE_COMBINED_PACKAGE_COMBINER = 'package.combined.package_combiner'; + public const SERVICE_COMBINED_PACKAGE_RESOLVER = 'package.combined.package_resolver'; + public const SERVICE_COMMAND_PACKAGE = 'package.cli.command.package'; + public const SERVICE_COMPOSER_DEPENDENCY_CHECKER = 'package.composer.dependency_checker'; + public const SERVICE_MIGRATIONS_COPIER = 'package.migrations.copier'; + public const SERVICE_PACKAGE_ARCHIVER = 'package.archiver'; + public const SERVICE_PACKAGE_CREATOR = 'package.creator'; + public const SERVICE_PACKAGE_EXTRACTOR = 'package.extractor'; + public const SERVICE_PACKAGE_NAME_RESOLVER = 'package.name_resolver'; + public const SERVICE_PROVIDER_PREFIX = 'package.provider'; + public const SERVICE_PROVIDER = 'package.provider'; private $extensions; @@ -129,7 +129,7 @@ private function loadCombinedPackageCombiner(ContainerBuilder $container) { $container->setDefinition( self::SERVICE_COMBINED_PACKAGE_COMBINER, - new Definition(PackageCombiner::class, [ + new Definition(PackageCombiner::class, [ new Reference(ConfigurationExtension::SERVICE_LOADER), new Reference(FilesystemExtension::SERVICE_FILESYSTEM), new Reference(self::SERVICE_PACKAGE_EXTRACTOR), diff --git a/src/Patch/Cli/Command/ApplyCommand.php b/src/Patch/Cli/Command/ApplyCommand.php index 303e3ef5..6e00b894 100644 --- a/src/Patch/Cli/Command/ApplyCommand.php +++ b/src/Patch/Cli/Command/ApplyCommand.php @@ -97,7 +97,7 @@ public function __construct( ScriptRunner $scriptRunner, LoggerInterface $logger, PermissionSetter $permissionSetter, - $phpVersion = PHP_VERSION + $phpVersion = PHP_VERSION, ) { $this->taskBus = $taskBus; $this->strategy = $strategy; diff --git a/src/Patch/Cli/Command/RollbackCommand.php b/src/Patch/Cli/Command/RollbackCommand.php index c648214d..763e6bf6 100644 --- a/src/Patch/Cli/Command/RollbackCommand.php +++ b/src/Patch/Cli/Command/RollbackCommand.php @@ -97,7 +97,7 @@ public function __construct( EventDispatcherInterface $eventDispatcher, ScriptRunner $scriptRunner, LoggerInterface $logger, - PermissionSetter $permissionSetter + PermissionSetter $permissionSetter, ) { $this->versionComparer = $versionComparer; $this->backupFinder = $backupFinder; diff --git a/src/Patch/Event/PatchEvents.php b/src/Patch/Event/PatchEvents.php index af4849f4..5defd25b 100644 --- a/src/Patch/Event/PatchEvents.php +++ b/src/Patch/Event/PatchEvents.php @@ -4,8 +4,8 @@ final class PatchEvents { - const PRE_APPLY = 'patch.pre-apply'; - const POST_APPLY = 'patch.post-apply'; - const PRE_ROLLBACK = 'patch.pre-rollback'; - const POST_ROLLBACK = 'patch.post-rollback'; + public const PRE_APPLY = 'patch.pre-apply'; + public const POST_APPLY = 'patch.post-apply'; + public const PRE_ROLLBACK = 'patch.pre-rollback'; + public const POST_ROLLBACK = 'patch.post-rollback'; } diff --git a/src/Patch/Lock/Locker.php b/src/Patch/Lock/Locker.php index ea47c159..9966edda 100644 --- a/src/Patch/Lock/Locker.php +++ b/src/Patch/Lock/Locker.php @@ -6,7 +6,7 @@ class Locker { - const FILENAME = 'meteor.lock'; + public const FILENAME = 'meteor.lock'; /** * @param string $path diff --git a/src/Patch/Manifest/ManifestChecker.php b/src/Patch/Manifest/ManifestChecker.php index 5e62bef6..9945b165 100644 --- a/src/Patch/Manifest/ManifestChecker.php +++ b/src/Patch/Manifest/ManifestChecker.php @@ -6,7 +6,7 @@ class ManifestChecker { - const MANIFEST_FILENAME = 'meteor.manifest'; + public const MANIFEST_FILENAME = 'meteor.manifest'; /** * @var IOInterface diff --git a/src/Patch/ServiceContainer/PatchExtension.php b/src/Patch/ServiceContainer/PatchExtension.php index bdb5b8f0..c7378a97 100644 --- a/src/Patch/ServiceContainer/PatchExtension.php +++ b/src/Patch/ServiceContainer/PatchExtension.php @@ -53,34 +53,34 @@ class PatchExtension extends ExtensionBase implements ExtensionInterface, ScriptEventProviderInterface { - const PARAMETER_STRATEGY = 'patch.strategy'; - const SERVICE_BACKUP_FINDER = 'patch.backup.finder'; - const SERVICE_COMMAND_APPLY = 'patch.cli.command.apply'; - const SERVICE_COMMAND_VERIFY = 'patch.cli.command.verify'; - const SERVICE_COMMAND_CLEAR_LOCK = 'patch.cli.command.clear_lock'; - const SERVICE_COMMAND_ROLLBACK = 'patch.cli.command.rollback'; - const SERVICE_COMMAND_VERSION_INFO = 'patch.cli.command.version_info'; - const SERVICE_LOCKER = 'patch.locker'; - const SERVICE_MANIFEST_CHECKER = 'patch.manifest_checker'; - const SERVICE_STRATEGY_PREFIX = 'patch.strategy'; - const SERVICE_STRATEGY = 'patch.strategy'; - const SERVICE_TASK_BUS = 'patch.task_bus'; - const SERVICE_TASK_BACKUP_FILES_HANDLER = 'patch.task.backup_files_handler'; - const SERVICE_TASK_LIMIT_BACKUPS_HANDLER = 'patch.task.limit_backups_handler'; - const SERVICE_TASK_CHECK_DATABASE_CONNECTION_HANDLER = 'patch.task.check_database_connection_handler'; - const SERVICE_TASK_CHECK_DISK_SPACE_HANDLER = 'patch.task.check_disk_space_handler'; - const SERVICE_TASK_CHECK_MODULE_CMS_DEPENDENCY_HANDLER = 'patch.task.check_module_cms_dependency_handler'; - const SERVICE_TASK_CHECK_VERSION_HANDLER = 'patch.task.check_version_handler'; - const SERVICE_TASK_CHECK_WRITE_PERMISSION_HANDLER = 'patch.task.check_write_permission_handler'; - const SERVICE_TASK_COPY_FILES_HANDLER = 'patch.task.copy_files_handler'; - const SERVICE_TASK_DELETE_BACKUP_HANDLER = 'patch.task.delete_backup_handler'; - const SERVICE_TASK_DISPLAY_VERSION_INFO_HANDLER = 'patch.task.display_version_info_handler'; - const SERVICE_TASK_MIGRATE_DOWN_HANDLER = 'patch.task.migrate_down_handler'; - const SERVICE_TASK_MIGRATE_UP_HANDLER = 'patch.task.migrate_up_handler'; - const SERVICE_TASK_SET_PERMISSIONS_HANDLER = 'patch.task.set_permissions_handler'; - const SERVICE_TASK_UPDATE_MIGRATION_VERSION_FILES_HANDLER = 'patch.task.update_database_migration_version_files_handler'; - const SERVICE_VERSION_COMPARER = 'patch.version.comparer'; - const TAG_TASK_HANDLER = 'patch.task_handler'; + public const PARAMETER_STRATEGY = 'patch.strategy'; + public const SERVICE_BACKUP_FINDER = 'patch.backup.finder'; + public const SERVICE_COMMAND_APPLY = 'patch.cli.command.apply'; + public const SERVICE_COMMAND_VERIFY = 'patch.cli.command.verify'; + public const SERVICE_COMMAND_CLEAR_LOCK = 'patch.cli.command.clear_lock'; + public const SERVICE_COMMAND_ROLLBACK = 'patch.cli.command.rollback'; + public const SERVICE_COMMAND_VERSION_INFO = 'patch.cli.command.version_info'; + public const SERVICE_LOCKER = 'patch.locker'; + public const SERVICE_MANIFEST_CHECKER = 'patch.manifest_checker'; + public const SERVICE_STRATEGY_PREFIX = 'patch.strategy'; + public const SERVICE_STRATEGY = 'patch.strategy'; + public const SERVICE_TASK_BUS = 'patch.task_bus'; + public const SERVICE_TASK_BACKUP_FILES_HANDLER = 'patch.task.backup_files_handler'; + public const SERVICE_TASK_LIMIT_BACKUPS_HANDLER = 'patch.task.limit_backups_handler'; + public const SERVICE_TASK_CHECK_DATABASE_CONNECTION_HANDLER = 'patch.task.check_database_connection_handler'; + public const SERVICE_TASK_CHECK_DISK_SPACE_HANDLER = 'patch.task.check_disk_space_handler'; + public const SERVICE_TASK_CHECK_MODULE_CMS_DEPENDENCY_HANDLER = 'patch.task.check_module_cms_dependency_handler'; + public const SERVICE_TASK_CHECK_VERSION_HANDLER = 'patch.task.check_version_handler'; + public const SERVICE_TASK_CHECK_WRITE_PERMISSION_HANDLER = 'patch.task.check_write_permission_handler'; + public const SERVICE_TASK_COPY_FILES_HANDLER = 'patch.task.copy_files_handler'; + public const SERVICE_TASK_DELETE_BACKUP_HANDLER = 'patch.task.delete_backup_handler'; + public const SERVICE_TASK_DISPLAY_VERSION_INFO_HANDLER = 'patch.task.display_version_info_handler'; + public const SERVICE_TASK_MIGRATE_DOWN_HANDLER = 'patch.task.migrate_down_handler'; + public const SERVICE_TASK_MIGRATE_UP_HANDLER = 'patch.task.migrate_up_handler'; + public const SERVICE_TASK_SET_PERMISSIONS_HANDLER = 'patch.task.set_permissions_handler'; + public const SERVICE_TASK_UPDATE_MIGRATION_VERSION_FILES_HANDLER = 'patch.task.update_database_migration_version_files_handler'; + public const SERVICE_VERSION_COMPARER = 'patch.version.comparer'; + public const TAG_TASK_HANDLER = 'patch.task_handler'; /** * Returns the extension config key. @@ -562,9 +562,9 @@ public function process(ContainerBuilder $container) } $container->getDefinition(self::SERVICE_TASK_BUS)->addMethodCall('registerHandler', [ - $attributes['task'], - new Reference($id), - ] + $attributes['task'], + new Reference($id), + ] ) ->setPublic(true); } diff --git a/src/Patch/Strategy/Dummy/ServiceContainer/DummyPatchStrategyExtension.php b/src/Patch/Strategy/Dummy/ServiceContainer/DummyPatchStrategyExtension.php index d5f4ed34..d0a3cc62 100644 --- a/src/Patch/Strategy/Dummy/ServiceContainer/DummyPatchStrategyExtension.php +++ b/src/Patch/Strategy/Dummy/ServiceContainer/DummyPatchStrategyExtension.php @@ -12,7 +12,7 @@ class DummyPatchStrategyExtension extends ExtensionBase implements ExtensionInterface { - const STRATEGY_NAME = 'dummy'; + public const STRATEGY_NAME = 'dummy'; /** * Returns the extension config key. diff --git a/src/Patch/Strategy/Overwrite/ServiceContainer/OverwritePatchStrategyExtension.php b/src/Patch/Strategy/Overwrite/ServiceContainer/OverwritePatchStrategyExtension.php index cdb56768..c6a7e28e 100644 --- a/src/Patch/Strategy/Overwrite/ServiceContainer/OverwritePatchStrategyExtension.php +++ b/src/Patch/Strategy/Overwrite/ServiceContainer/OverwritePatchStrategyExtension.php @@ -13,7 +13,7 @@ class OverwritePatchStrategyExtension extends ExtensionBase implements ExtensionInterface { - const STRATEGY_NAME = 'overwrite'; + public const STRATEGY_NAME = 'overwrite'; /** * Returns the extension config key. diff --git a/src/Patch/Task/CheckDiskSpaceHandler.php b/src/Patch/Task/CheckDiskSpaceHandler.php index 712e8d07..89c8b987 100644 --- a/src/Patch/Task/CheckDiskSpaceHandler.php +++ b/src/Patch/Task/CheckDiskSpaceHandler.php @@ -15,17 +15,17 @@ class CheckDiskSpaceHandler * Assuming required space is 300MB for backup and new files. Not checking the real package * size to avoid performance issues when checking the size of thousands of files. */ - const REQUIRED_BYTES = 314572800; + public const REQUIRED_BYTES = 314572800; /** * The required free space as a percentage. */ - const REQUIRED_FREE_SPACE_PERCENT = 10; + public const REQUIRED_FREE_SPACE_PERCENT = 10; /** * The maximum number of backups to keep when running low on disk space. */ - const MAX_BACKUPS = 2; + public const MAX_BACKUPS = 2; /** * @var BackupFinder diff --git a/src/Patch/Task/CheckModuleCmsDependencyHandler.php b/src/Patch/Task/CheckModuleCmsDependencyHandler.php index 162f01fc..9572997a 100644 --- a/src/Patch/Task/CheckModuleCmsDependencyHandler.php +++ b/src/Patch/Task/CheckModuleCmsDependencyHandler.php @@ -7,9 +7,9 @@ class CheckModuleCmsDependencyHandler { - const MODULE_CMS_DEPENDENCY_FILE = 'MODULE_CMS_DEPENDENCY'; + public const MODULE_CMS_DEPENDENCY_FILE = 'MODULE_CMS_DEPENDENCY'; - const CMS_VERSION_FILE = 'VERSION'; + public const CMS_VERSION_FILE = 'VERSION'; /** * @var IOInterface diff --git a/src/Patch/Task/CheckVersion.php b/src/Patch/Task/CheckVersion.php index 0ab00901..c1e20337 100644 --- a/src/Patch/Task/CheckVersion.php +++ b/src/Patch/Task/CheckVersion.php @@ -6,8 +6,8 @@ class CheckVersion { - const GREATER_THAN_OR_EQUAL = '>='; - const LESS_THAN_OR_EQUAL = '<='; + public const GREATER_THAN_OR_EQUAL = '>='; + public const LESS_THAN_OR_EQUAL = '<='; /** * @var string diff --git a/src/Permissions/PermissionLoader.php b/src/Permissions/PermissionLoader.php index de20ee15..2f33be96 100644 --- a/src/Permissions/PermissionLoader.php +++ b/src/Permissions/PermissionLoader.php @@ -6,7 +6,7 @@ class PermissionLoader { - const PERMISSIONS_CONFIG_DIR = '/config/permissions'; + public const PERMISSIONS_CONFIG_DIR = '/config/permissions'; /** * Load files permissions recursively from a given path. diff --git a/src/Permissions/PermissionSetter.php b/src/Permissions/PermissionSetter.php index 80688749..3a233563 100644 --- a/src/Permissions/PermissionSetter.php +++ b/src/Permissions/PermissionSetter.php @@ -40,7 +40,7 @@ class PermissionSetter public function __construct( PlatformInterface $platform, PermissionLoader $permissionLoader, - IOInterface $io + IOInterface $io, ) { $this->platform = $platform; $this->permissionLoader = $permissionLoader; diff --git a/src/Permissions/ServiceContainer/PermissionsExtension.php b/src/Permissions/ServiceContainer/PermissionsExtension.php index 2860fbd6..3e87b65d 100644 --- a/src/Permissions/ServiceContainer/PermissionsExtension.php +++ b/src/Permissions/ServiceContainer/PermissionsExtension.php @@ -17,9 +17,9 @@ class PermissionsExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_COMMAND_RESET_PERMISSIONS = 'permissions.cli.command.reset_permissions'; - const SERVICE_PERMISSION_LOADER = 'permissions.permission_loader'; - const SERVICE_PERMISSION_SETTER = 'permissions.permission_setter'; + public const SERVICE_COMMAND_RESET_PERMISSIONS = 'permissions.cli.command.reset_permissions'; + public const SERVICE_PERMISSION_LOADER = 'permissions.permission_loader'; + public const SERVICE_PERMISSION_SETTER = 'permissions.permission_setter'; /** * Returns the extension config key. diff --git a/src/Platform/ServiceContainer/PlatformExtension.php b/src/Platform/ServiceContainer/PlatformExtension.php index 896fd3ea..12dc6ef7 100644 --- a/src/Platform/ServiceContainer/PlatformExtension.php +++ b/src/Platform/ServiceContainer/PlatformExtension.php @@ -14,10 +14,10 @@ class PlatformExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_PLATFORM = 'platform'; - const SERVICE_PLATFORM_UNIX = 'platform.unix'; - const SERVICE_PLATFORM_WINDOWS = 'platform.windows'; - const SERVICE_UNIX_INSTALL_CONFIG_LOADER = 'platform.unix.install_config_loader'; + public const SERVICE_PLATFORM = 'platform'; + public const SERVICE_PLATFORM_UNIX = 'platform.unix'; + public const SERVICE_PLATFORM_WINDOWS = 'platform.windows'; + public const SERVICE_UNIX_INSTALL_CONFIG_LOADER = 'platform.unix.install_config_loader'; /** * Returns the extension config key. diff --git a/src/Platform/Unix/InstallConfigLoader.php b/src/Platform/Unix/InstallConfigLoader.php index 885ee0f2..241c283b 100644 --- a/src/Platform/Unix/InstallConfigLoader.php +++ b/src/Platform/Unix/InstallConfigLoader.php @@ -7,7 +7,7 @@ class InstallConfigLoader { - const CONFIG_NAME = 'install.conf'; + public const CONFIG_NAME = 'install.conf'; /** * @param string $path diff --git a/src/Process/PHPMemoryLimitSetter.php b/src/Process/PHPMemoryLimitSetter.php index dddd3a42..ef610b85 100644 --- a/src/Process/PHPMemoryLimitSetter.php +++ b/src/Process/PHPMemoryLimitSetter.php @@ -4,8 +4,8 @@ class PHPMemoryLimitSetter { - const RE_PHP_SCRIPT = '/^\s*?(php)/'; - const RE_MEMORY_LIMIT = '/([-]{1,2}(?:define|d)\s*(memory_limit))/'; + public const RE_PHP_SCRIPT = '/^\s*?(php)/'; + public const RE_MEMORY_LIMIT = '/([-]{1,2}(?:define|d)\s*(memory_limit))/'; /** * @param string $command diff --git a/src/Process/ProcessFactory.php b/src/Process/ProcessFactory.php index 3b2fa7a3..f0139a57 100644 --- a/src/Process/ProcessFactory.php +++ b/src/Process/ProcessFactory.php @@ -12,7 +12,7 @@ class ProcessFactory * * @return Process */ - public function create(string $command, string $cwd = null) + public function create(string $command, ?string $cwd = null) { return Process::fromShellCommandline($command, $cwd); } diff --git a/src/Process/ProcessRunner.php b/src/Process/ProcessRunner.php index 8b1812fb..003ccdce 100644 --- a/src/Process/ProcessRunner.php +++ b/src/Process/ProcessRunner.php @@ -7,7 +7,7 @@ class ProcessRunner { - const DEFAULT_TIMEOUT = 3600; + public const DEFAULT_TIMEOUT = 3600; /** * @var IOInterface @@ -25,7 +25,7 @@ class ProcessRunner */ public function __construct( IOInterface $io, - ProcessFactory $processFactory + ProcessFactory $processFactory, ) { $this->io = $io; $this->processFactory = $processFactory; @@ -37,11 +37,11 @@ public function __construct( * @param callable $callback * @param int $timeout * - * @throws RuntimeException - * * @return string + * + * @throws RuntimeException */ - public function run(string $command, string $cwd = null, $callback = null, $timeout = self::DEFAULT_TIMEOUT) + public function run(string $command, ?string $cwd = null, $callback = null, $timeout = self::DEFAULT_TIMEOUT) { if (PHPMemoryLimitSetter::isPHPScript($command) && !PHPMemoryLimitSetter::hasMemoryLimit($command)) { $command = PHPMemoryLimitSetter::setMemoryLimit($command); diff --git a/src/Process/ServiceContainer/ProcessExtension.php b/src/Process/ServiceContainer/ProcessExtension.php index f5b26e30..c29dd5bb 100644 --- a/src/Process/ServiceContainer/ProcessExtension.php +++ b/src/Process/ServiceContainer/ProcessExtension.php @@ -13,8 +13,8 @@ class ProcessExtension extends ExtensionBase implements ExtensionInterface { - const SERVICE_PROCESS_RUNNER = 'process.runner'; - const SERVICE_PROCESS_FACTORY = 'process.factory'; + public const SERVICE_PROCESS_RUNNER = 'process.runner'; + public const SERVICE_PROCESS_FACTORY = 'process.factory'; /** * Returns the extension config key. diff --git a/src/Scripts/ServiceContainer/ScriptsExtension.php b/src/Scripts/ServiceContainer/ScriptsExtension.php index e1e6d3f6..e4dafe38 100644 --- a/src/Scripts/ServiceContainer/ScriptsExtension.php +++ b/src/Scripts/ServiceContainer/ScriptsExtension.php @@ -23,10 +23,10 @@ class ScriptsExtension extends ExtensionBase implements ExtensionInterface { - const PARAMETER_SCRIPTS = 'scripts'; - const SERVICE_COMMAND_RUN = 'scripts.cli.command.run'; - const SERVICE_EVENT_LISTENER = 'scripts.event_listener'; - const SERVICE_SCRIPT_RUNNER = 'scripts.script_runner'; + public const PARAMETER_SCRIPTS = 'scripts'; + public const SERVICE_COMMAND_RUN = 'scripts.cli.command.run'; + public const SERVICE_EVENT_LISTENER = 'scripts.event_listener'; + public const SERVICE_SCRIPT_RUNNER = 'scripts.script_runner'; /** * @var array @@ -194,10 +194,10 @@ private function loadEventListener(ContainerBuilder $container) private function loadScriptRunner(ContainerBuilder $container) { $container->setDefinition(self::SERVICE_SCRIPT_RUNNER, new Definition(ScriptRunner::class, [ - new Reference(ProcessExtension::SERVICE_PROCESS_RUNNER), - new Reference(IOExtension::SERVICE_IO), - '%' . self::PARAMETER_SCRIPTS . '%', - ]) + new Reference(ProcessExtension::SERVICE_PROCESS_RUNNER), + new Reference(IOExtension::SERVICE_IO), + '%' . self::PARAMETER_SCRIPTS . '%', + ]) ) ->setPublic(true); } diff --git a/src/ServiceContainer/ContainerLoader.php b/src/ServiceContainer/ContainerLoader.php index dbe12f8a..32d93f26 100755 --- a/src/ServiceContainer/ContainerLoader.php +++ b/src/ServiceContainer/ContainerLoader.php @@ -7,7 +7,7 @@ class ContainerLoader { - const PARAMETER_CONFIG = 'config'; + public const PARAMETER_CONFIG = 'config'; /** * @var ConfigurationLoader diff --git a/tests/Migrations/Connection/Configuration/Loader/ChainedConfigurationLoaderTest.php b/tests/Migrations/Connection/Configuration/Loader/ChainedConfigurationLoaderTest.php index a19f04c3..647c6510 100644 --- a/tests/Migrations/Connection/Configuration/Loader/ChainedConfigurationLoaderTest.php +++ b/tests/Migrations/Connection/Configuration/Loader/ChainedConfigurationLoaderTest.php @@ -43,12 +43,12 @@ public function testFirstLoaderTakesPrecedence() $chainedLoader = new ChainedConfigurationLoader([$loader1, $loader2, $loader3]); static::assertSame([ - 'dbname' => 'db1', - 'user' => 'user1', - 'password' => 'password1', - 'host' => 'host1', - 'port' => 'port1', - 'driver' => 'driver1', + 'dbname' => 'db1', + 'user' => 'user1', + 'password' => 'password1', + 'host' => 'host1', + 'port' => 'port1', + 'driver' => 'driver1', ], $chainedLoader->load('/path', [])); } @@ -88,12 +88,12 @@ public function testIgnoresEmptyValues() $chainedLoader = new ChainedConfigurationLoader([$loader1, $loader2, $loader3]); static::assertSame([ - 'dbname' => 'db2', - 'user' => 'user1', - 'password' => 'password3', - 'host' => 'host1', - 'port' => 'port3', - 'driver' => 'driver2', + 'dbname' => 'db2', + 'user' => 'user1', + 'password' => 'password3', + 'host' => 'host1', + 'port' => 'port3', + 'driver' => 'driver2', ], $chainedLoader->load('/path', [])); } } diff --git a/tests/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtensionTest.php b/tests/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtensionTest.php index 4278cd9b..b7e10b0d 100644 --- a/tests/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtensionTest.php +++ b/tests/Package/Provider/GoogleDrive/ServiceContainer/GoogleDrivePackageProviderExtensionTest.php @@ -37,9 +37,9 @@ public function testAddsDefaultFolders() static::assertArrayHasKey('folders', $config['gdrive_package_provider']); static::assertEquals([ - 'jadu/cms' => '0B3tlQeNsllCKY2tzbFpUUkI2OGM', - 'jadu/xfp' => '0B2h2-RgE2WidOHRhZVNUbUc1Z0E', - ], + 'jadu/cms' => '0B3tlQeNsllCKY2tzbFpUUkI2OGM', + 'jadu/xfp' => '0B2h2-RgE2WidOHRhZVNUbUc1Z0E', + ], $config['gdrive_package_provider']['folders'] ); } diff --git a/tests/Process/PHPMemoryLimitSetterTest.php b/tests/Process/PHPMemoryLimitSetterTest.php index 15012da6..d40766d8 100644 --- a/tests/Process/PHPMemoryLimitSetterTest.php +++ b/tests/Process/PHPMemoryLimitSetterTest.php @@ -37,6 +37,7 @@ public function phpScriptDataProvider() /** * @param string $script * @param bool $hasLimit + * * @dataProvider memoryLimitDataProvider */ public function testHasMemoryLimitShouldReturnCorrectResult($script, $hasLimit) From 33a993e1ceaacb89d590837267ab5340c41f2765 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:16:56 +0000 Subject: [PATCH 11/20] Upgrade to upload and download artifact v4 --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 56bb890b..a55026bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,10 +106,11 @@ jobs: files: "bin/meteor.phar" fail: true - name: Store the artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: meteor.phar path: bin/meteor.phar + overwrite: true package-for-testing: name: Create test package @@ -125,7 +126,7 @@ jobs: url: "https://gist.githubusercontent.com/DenisYaschuk/d3ade2d88d058cf9c971cf9d1f580a0f/raw/871ee04ee0ee01a6a2e0f97e67ce0206f78e3179/migrations-update.php" target: tests/mock_project/package - name: Copy meteor to mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: meteor.phar path: "tests/mock_project/package" @@ -156,10 +157,11 @@ jobs: target: "tests/mock_project/package/output/github-action-test_2.0/github-action-test_2.0" - name: Store the mock project artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: mock_project path: tests/mock_project + overwrite: true functional-tests: name: Functional Tests @@ -184,7 +186,7 @@ jobs: php-version: ${{ matrix.php-version }} - name: Retrieve the mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: mock_project path: mock_project From e5d04b0aa86a1d004f2e5df1850b3d32d9475e56 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 3 Mar 2025 14:03:34 +0000 Subject: [PATCH 12/20] Use CS rules compatible with php 7.4 --- .php-cs-fixer.dist.php | 3 +++ src/Migrations/Configuration/ConfigurationFactory.php | 2 +- src/Migrations/Migrator.php | 2 +- src/Migrations/Outputter/StatusOutputter.php | 2 +- src/Migrations/Version/VersionManager.php | 2 +- src/Package/Combined/PackageCombiner.php | 2 +- src/Package/PackageCreator.php | 2 +- src/Patch/Cli/Command/ApplyCommand.php | 2 +- src/Patch/Cli/Command/RollbackCommand.php | 2 +- src/Permissions/PermissionSetter.php | 2 +- src/Process/ProcessRunner.php | 2 +- 11 files changed, 13 insertions(+), 10 deletions(-) diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php index 19ed2e42..46b31d1e 100644 --- a/.php-cs-fixer.dist.php +++ b/.php-cs-fixer.dist.php @@ -17,6 +17,9 @@ [ 'no_superfluous_phpdoc_tags' => false, 'fully_qualified_strict_types' => false, + 'trailing_comma_in_multiline' => [ + 'elements' => ['arrays'] + ], ] ) ); diff --git a/src/Migrations/Configuration/ConfigurationFactory.php b/src/Migrations/Configuration/ConfigurationFactory.php index e6797950..4209211e 100644 --- a/src/Migrations/Configuration/ConfigurationFactory.php +++ b/src/Migrations/Configuration/ConfigurationFactory.php @@ -43,7 +43,7 @@ public function __construct( ConnectionFactory $connectionFactory, FileMigrationVersionStorageFactory $fileMigrationVersionStorageFactory, VersionFileManager $versionFileManager, - IOInterface $io, + IOInterface $io ) { $this->connectionFactory = $connectionFactory; $this->fileMigrationVersionStorageFactory = $fileMigrationVersionStorageFactory; diff --git a/src/Migrations/Migrator.php b/src/Migrations/Migrator.php index f2759241..038896a7 100644 --- a/src/Migrations/Migrator.php +++ b/src/Migrations/Migrator.php @@ -25,7 +25,7 @@ class Migrator */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io, + IOInterface $io ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Migrations/Outputter/StatusOutputter.php b/src/Migrations/Outputter/StatusOutputter.php index 193a2797..9bbcd308 100644 --- a/src/Migrations/Outputter/StatusOutputter.php +++ b/src/Migrations/Outputter/StatusOutputter.php @@ -27,7 +27,7 @@ class StatusOutputter */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io, + IOInterface $io ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Migrations/Version/VersionManager.php b/src/Migrations/Version/VersionManager.php index 71c9b740..89596fcf 100644 --- a/src/Migrations/Version/VersionManager.php +++ b/src/Migrations/Version/VersionManager.php @@ -23,7 +23,7 @@ class VersionManager */ public function __construct( ConfigurationFactory $configurationFactory, - IOInterface $io, + IOInterface $io ) { $this->configurationFactory = $configurationFactory; $this->io = $io; diff --git a/src/Package/Combined/PackageCombiner.php b/src/Package/Combined/PackageCombiner.php index 0fd066f9..8bf0c610 100644 --- a/src/Package/Combined/PackageCombiner.php +++ b/src/Package/Combined/PackageCombiner.php @@ -48,7 +48,7 @@ public function __construct( Filesystem $filesystem, PackageExtractor $packageExtractor, MigrationsCopier $migrationsCopier, - IOInterface $io, + IOInterface $io ) { $this->configurationLoader = $configurationLoader; $this->filesystem = $filesystem; diff --git a/src/Package/PackageCreator.php b/src/Package/PackageCreator.php index b4ab77ac..5dc71bea 100644 --- a/src/Package/PackageCreator.php +++ b/src/Package/PackageCreator.php @@ -73,7 +73,7 @@ public function __construct( CombinedPackageResolver $combinedPackageResolver, ComposerDependencyChecker $composerDependencyChecker, ConfigurationWriter $configurationWriter, - IOInterface $io, + IOInterface $io ) { $this->filesystem = $filesystem; $this->packageArchiver = $packageArchiver; diff --git a/src/Patch/Cli/Command/ApplyCommand.php b/src/Patch/Cli/Command/ApplyCommand.php index 6e00b894..303e3ef5 100644 --- a/src/Patch/Cli/Command/ApplyCommand.php +++ b/src/Patch/Cli/Command/ApplyCommand.php @@ -97,7 +97,7 @@ public function __construct( ScriptRunner $scriptRunner, LoggerInterface $logger, PermissionSetter $permissionSetter, - $phpVersion = PHP_VERSION, + $phpVersion = PHP_VERSION ) { $this->taskBus = $taskBus; $this->strategy = $strategy; diff --git a/src/Patch/Cli/Command/RollbackCommand.php b/src/Patch/Cli/Command/RollbackCommand.php index 763e6bf6..c648214d 100644 --- a/src/Patch/Cli/Command/RollbackCommand.php +++ b/src/Patch/Cli/Command/RollbackCommand.php @@ -97,7 +97,7 @@ public function __construct( EventDispatcherInterface $eventDispatcher, ScriptRunner $scriptRunner, LoggerInterface $logger, - PermissionSetter $permissionSetter, + PermissionSetter $permissionSetter ) { $this->versionComparer = $versionComparer; $this->backupFinder = $backupFinder; diff --git a/src/Permissions/PermissionSetter.php b/src/Permissions/PermissionSetter.php index 3a233563..80688749 100644 --- a/src/Permissions/PermissionSetter.php +++ b/src/Permissions/PermissionSetter.php @@ -40,7 +40,7 @@ class PermissionSetter public function __construct( PlatformInterface $platform, PermissionLoader $permissionLoader, - IOInterface $io, + IOInterface $io ) { $this->platform = $platform; $this->permissionLoader = $permissionLoader; diff --git a/src/Process/ProcessRunner.php b/src/Process/ProcessRunner.php index 003ccdce..92780dc8 100644 --- a/src/Process/ProcessRunner.php +++ b/src/Process/ProcessRunner.php @@ -25,7 +25,7 @@ class ProcessRunner */ public function __construct( IOInterface $io, - ProcessFactory $processFactory, + ProcessFactory $processFactory ) { $this->io = $io; $this->processFactory = $processFactory; From 01305449f812734346f861c932e6a55695a0034a Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:16:56 +0000 Subject: [PATCH 13/20] Upgrade to upload and download artifact v4 --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 56bb890b..a55026bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,10 +106,11 @@ jobs: files: "bin/meteor.phar" fail: true - name: Store the artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: meteor.phar path: bin/meteor.phar + overwrite: true package-for-testing: name: Create test package @@ -125,7 +126,7 @@ jobs: url: "https://gist.githubusercontent.com/DenisYaschuk/d3ade2d88d058cf9c971cf9d1f580a0f/raw/871ee04ee0ee01a6a2e0f97e67ce0206f78e3179/migrations-update.php" target: tests/mock_project/package - name: Copy meteor to mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: meteor.phar path: "tests/mock_project/package" @@ -156,10 +157,11 @@ jobs: target: "tests/mock_project/package/output/github-action-test_2.0/github-action-test_2.0" - name: Store the mock project artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: mock_project path: tests/mock_project + overwrite: true functional-tests: name: Functional Tests @@ -184,7 +186,7 @@ jobs: php-version: ${{ matrix.php-version }} - name: Retrieve the mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: mock_project path: mock_project From 4553fbde403ea2beed2aa438368d983c6abbee9a Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Thu, 27 Feb 2025 10:16:56 +0000 Subject: [PATCH 14/20] Upgrade to upload and download artifact v4 --- .github/workflows/test.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 56bb890b..a55026bb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,10 +106,11 @@ jobs: files: "bin/meteor.phar" fail: true - name: Store the artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: meteor.phar path: bin/meteor.phar + overwrite: true package-for-testing: name: Create test package @@ -125,7 +126,7 @@ jobs: url: "https://gist.githubusercontent.com/DenisYaschuk/d3ade2d88d058cf9c971cf9d1f580a0f/raw/871ee04ee0ee01a6a2e0f97e67ce0206f78e3179/migrations-update.php" target: tests/mock_project/package - name: Copy meteor to mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: meteor.phar path: "tests/mock_project/package" @@ -156,10 +157,11 @@ jobs: target: "tests/mock_project/package/output/github-action-test_2.0/github-action-test_2.0" - name: Store the mock project artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: mock_project path: tests/mock_project + overwrite: true functional-tests: name: Functional Tests @@ -184,7 +186,7 @@ jobs: php-version: ${{ matrix.php-version }} - name: Retrieve the mock project - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: mock_project path: mock_project From abbca49c811c71ffbe091f09d88c2e3c2c9fcb4d Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 10 Mar 2025 19:59:14 +0000 Subject: [PATCH 15/20] Changes following review --- src/Filesystem/Filesystem.php | 2 +- src/IO/ConsoleIO.php | 13 ++++++++++ src/IO/IOInterface.php | 8 ++++++ src/IO/NullIO.php | 8 ++++++ src/Patch/Task/CheckDiskSpaceHandler.php | 25 +++---------------- tests/IO/ConsoleIOTest.php | 22 ++++++++++++++++ .../Patch/Task/CheckDiskSpaceHandlerTest.php | 12 ++++++++- 7 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/Filesystem/Filesystem.php b/src/Filesystem/Filesystem.php index 88b744b5..87ce7ec6 100644 --- a/src/Filesystem/Filesystem.php +++ b/src/Filesystem/Filesystem.php @@ -234,7 +234,7 @@ public function getDirectorySize($directory) $path = realpath($directory); - if ($path !== false && $path != '' && file_exists($path)) { + if ($path !== false && $path != '' && is_dir($path)) { foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS)) as $object) { if (!$object->isLink()) { $totalBytes += $object->getSize(); diff --git a/src/IO/ConsoleIO.php b/src/IO/ConsoleIO.php index 4fb3cc50..1de563b9 100644 --- a/src/IO/ConsoleIO.php +++ b/src/IO/ConsoleIO.php @@ -77,6 +77,19 @@ public function isInteractive() return $this->input->isInteractive(); } + /** + * {@inheritdoc} + */ + public function formatFileSize($bytes, $dec = 2) + { + $suffix = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; + + $base = 1024; + $class = min((int)log($bytes , $base) , count($suffix) - 1); + + return sprintf("%1.{$dec}f" , $bytes / pow($base, $class)) . ' ' . $suffix[$class]; + } + /** * {@inheritdoc} */ diff --git a/src/IO/IOInterface.php b/src/IO/IOInterface.php index 4ffe4297..51a0080b 100644 --- a/src/IO/IOInterface.php +++ b/src/IO/IOInterface.php @@ -11,6 +11,14 @@ interface IOInterface */ public function isInteractive(); + /** + * @param int $bytes + * @param int $dec + * + * @return string + */ + public function formatFileSize($bytes, $dec = 2); + /** * Gets argument by name. * diff --git a/src/IO/NullIO.php b/src/IO/NullIO.php index d8583f06..9c6aeaa8 100644 --- a/src/IO/NullIO.php +++ b/src/IO/NullIO.php @@ -15,6 +15,14 @@ public function isInteractive() return false; } + /** + * {@inheritdoc} + */ + public function formatFileSize($bytes, $dec = 2) + { + return ''; + } + /** * {@inheritdoc} */ diff --git a/src/Patch/Task/CheckDiskSpaceHandler.php b/src/Patch/Task/CheckDiskSpaceHandler.php index 45eccafa..fccbc217 100644 --- a/src/Patch/Task/CheckDiskSpaceHandler.php +++ b/src/Patch/Task/CheckDiskSpaceHandler.php @@ -67,8 +67,8 @@ public function handle(CheckDiskSpace $task, array $config) $this->io->warning(sprintf( 'There is not enough free disk space to apply this patch. Space required: %s, Space available: %s', - $this->formatFileSize($spaceRequired), - $this->formatFileSize(disk_free_space($task->installDir)) + $this->io->formatFileSize($spaceRequired), + $this->io->formatFileSize(disk_free_space($task->installDir)) )); // Try removing old backups @@ -106,12 +106,12 @@ private function hasFreeSpace($installDir, $spaceRequired) $this->io->debug(sprintf( 'Available disk space: %s', - $this->formatFileSize($freeSpace) + $this->io->formatFileSize($freeSpace) )); $this->io->debug(sprintf( 'Disk space required: %s', - $this->formatFileSize($spaceRequired) + $this->io->formatFileSize($spaceRequired) )); $resultingSpace = $freeSpace - $spaceRequired; @@ -134,21 +134,4 @@ private function removeOldBackups($backupsDir, $installDir, array $config) $this->removeBackups($backups, self::MAX_BACKUPS); } - - /** - * @param type $bytes - * @param int $dec - * - * @return string - */ - private function formatFileSize($bytes, $dec = 2) - { - $size = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; - $factor = floor((strlen($bytes) - 1) / 3); - if ($factor == 0) { - $dec = 0; - } - - return sprintf("%.{$dec}f %s", $bytes / (1024 ** $factor), $size[$factor]); - } } diff --git a/tests/IO/ConsoleIOTest.php b/tests/IO/ConsoleIOTest.php index 2e83e5bd..443c9d2a 100644 --- a/tests/IO/ConsoleIOTest.php +++ b/tests/IO/ConsoleIOTest.php @@ -153,4 +153,26 @@ public function testNewLine() static::assertSame("\n", $this->getOutput()); } + + /** + * @dataProvider formatFileSizeProvider + */ + public function testFormatFileSize($bytes, $dec, $expected) + { + $actual = $this->io->formatFileSize($bytes, $dec); + + static::assertEquals($expected, $actual); + } + + public function formatFileSizeProvider() + { + return [ + ['1024', 2, '1.00 KiB'], + ['1234', 2, '1.21 KiB'], + ['123456789', 2, '117.74 MiB'], + ['1048576', 2, '1.00 MiB'], + ['1048576', 0, '1 MiB'], + ['100456789012', 2, '93.56 GiB'], + ]; + } } diff --git a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php index c2f858d2..4f49a205 100644 --- a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php +++ b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php @@ -195,13 +195,23 @@ public function testWarningOutputWhenNotEnoughSpace() $io = Mockery::mock(\Meteor\IO\IOInterface::class, [ 'askConfirmation' => null, 'debug' => null, + 'formatFileSize' => '', ]); $this->handler = new CheckDiskSpaceHandler($this->backupFinder, $this->filesystem, $io); $io->shouldReceive('warning') ->once() - ->with('There is not enough free disk space to apply this patch. Space required: 825.00 MB, Space available: 1.91 MB'); + ->with('There is not enough free disk space to apply this patch. Space required: 825.00 MiB, Space available: 1.91 MiB'); + + $io->shouldReceive('formatFileSize') + ->with(static::PATCH_SIZE_BYTES * CheckDiskSpaceHandler::PATCH_SIZE_MULTIPLIER) + ->andReturn('825.00 MiB'); + + $io->shouldReceive('formatFileSize') + ->with($GLOBALS['disk_free_space']) + ->andReturn('1.91 MiB'); + static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } From ea2638e2ffd2f9c9f73ae9186418dcedd4644f23 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Mon, 10 Mar 2025 20:04:26 +0000 Subject: [PATCH 16/20] cs fix --- src/IO/ConsoleIO.php | 4 ++-- tests/Patch/Task/CheckDiskSpaceHandlerTest.php | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/IO/ConsoleIO.php b/src/IO/ConsoleIO.php index 1de563b9..470a1a6a 100644 --- a/src/IO/ConsoleIO.php +++ b/src/IO/ConsoleIO.php @@ -85,9 +85,9 @@ public function formatFileSize($bytes, $dec = 2) $suffix = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']; $base = 1024; - $class = min((int)log($bytes , $base) , count($suffix) - 1); + $class = min((int) log($bytes, $base), count($suffix) - 1); - return sprintf("%1.{$dec}f" , $bytes / pow($base, $class)) . ' ' . $suffix[$class]; + return sprintf("%1.{$dec}f", $bytes / pow($base, $class)) . ' ' . $suffix[$class]; } /** diff --git a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php index 4f49a205..c94d135e 100644 --- a/tests/Patch/Task/CheckDiskSpaceHandlerTest.php +++ b/tests/Patch/Task/CheckDiskSpaceHandlerTest.php @@ -212,7 +212,6 @@ public function testWarningOutputWhenNotEnoughSpace() ->with($GLOBALS['disk_free_space']) ->andReturn('1.91 MiB'); - static::assertFalse($this->handler->handle(new CheckDiskSpace('install', 'install/backups', '/path/to/patch'), $config)); } } From a0e653beed851d307775061e7f1d3e54ebe84ada Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Wed, 12 Mar 2025 17:07:15 +0000 Subject: [PATCH 17/20] Remove unnecessary isset --- src/Scripts/ScriptRunner.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Scripts/ScriptRunner.php b/src/Scripts/ScriptRunner.php index 62444d56..588e0ad3 100644 --- a/src/Scripts/ScriptRunner.php +++ b/src/Scripts/ScriptRunner.php @@ -63,7 +63,7 @@ public function setWorkingDir($workingDir) public function run($scriptName) { foreach ($this->scripts as $scripts) { - if (isset($scripts[$scriptName]) && !empty($scripts[$scriptName])) { + if (!empty($scripts[$scriptName])) { $this->io->text(sprintf('Running scripts for "%s"', $scriptName)); $this->io->progressStart(count($scripts[$scriptName])); $this->runScripts($scriptName, $scripts); From 357bde0aa1a2c0100551e6abb3b40f3f43112ab3 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Wed, 12 Mar 2025 17:14:41 +0000 Subject: [PATCH 18/20] cs fix --- tests/Migrations/Configuration/DatabaseConfigurationTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Migrations/Configuration/DatabaseConfigurationTest.php b/tests/Migrations/Configuration/DatabaseConfigurationTest.php index 29c89894..5bae14d4 100644 --- a/tests/Migrations/Configuration/DatabaseConfigurationTest.php +++ b/tests/Migrations/Configuration/DatabaseConfigurationTest.php @@ -18,7 +18,7 @@ protected function setUp(): void { $this->configuration = new DatabaseConfiguration(Mockery::mock(Connection::class, [ 'getSchemaManager' => Mockery::mock(AbstractSchemaManager::class), - 'getDatabasePlatform' => Mockery::mock(AbstractPlatform::class) + 'getDatabasePlatform' => Mockery::mock(AbstractPlatform::class), ])); } From ce07759ceaf9b84fb984ba64f3dd5924dcc1239c Mon Sep 17 00:00:00 2001 From: dgudgeon Date: Thu, 13 Mar 2025 13:49:25 +0000 Subject: [PATCH 19/20] Update CHANGELOG.md --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00d82690..d393ce8b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ +## v4.1.0 + +**Features** +* [MET-128] Added PHP 8.3 support ([#168](https://github.com/jadu/meteor/pull/168)) +* [MET-127] Required disk space check is now based on package size ([#170](https://github.com/jadu/meteor/pull/170)) +* [MET-129] Suppress output when running scripts and replace with progress bar ([#169](https://github.com/jadu/meteor/pull/169)) + +**Fixes** +* [MET-126] Updated references to MigrationException to prevent fatal error ([#167](https://github.com/jadu/meteor/pull/167)) +* [MET-130] Fix PHP CS Fixer in pipeline ([#171](https://github.com/jadu/meteor/pull/171)) + ## v4.0.0 * Added PHP 8 support From 2ab86d8dcfeb9cb3ac822e97c77540badf258293 Mon Sep 17 00:00:00 2001 From: Dave Gudgeon Date: Fri, 2 May 2025 10:21:27 +0100 Subject: [PATCH 20/20] Run github actions for tags --- .github/workflows/test.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 899ce66f..f91e0a8a 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,8 @@ on: push: branches: - "master" + tags: + - "*" pull_request: branches: - "master"