From 73eca65e69cc2f21fed510ef5ca85f722eabcd28 Mon Sep 17 00:00:00 2001 From: Ilya Plotnikov Date: Thu, 4 May 2023 20:06:23 +0600 Subject: [PATCH 01/10] Added methods for creating 7 and 8 versions of UUID to the UuidFactoryInterface --- src/UuidFactoryInterface.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/UuidFactoryInterface.php b/src/UuidFactoryInterface.php index d99fc9d..cf7e1cc 100644 --- a/src/UuidFactoryInterface.php +++ b/src/UuidFactoryInterface.php @@ -179,4 +179,34 @@ interface UuidFactoryInterface * version 6 UUID */ public function uuid6(?Hexadecimal $node = null, ?int $clockSeq = null): UuidInterface; + + /** + * Returns a version 7 (Unix Epoch time) UUID + * + * @param DateTimeInterface|null $dateTime An optional date/time from which + * to create the version 7 UUID. If not provided, the UUID is generated + * using the current date/time. + * + * @return UuidInterface A UuidInterface instance that represents a + * version 7 UUID + */ + public function uuid7(?DateTimeInterface $dateTime = null): UuidInterface; + + /** + * Returns a version 8 (Custom) UUID + * + * The bytes provided may contain any value according to your application's + * needs. Be aware, however, that other applications may not understand the + * semantics of the value. + * + * @param string $bytes A 16-byte octet string. This is an open blob + * of data that you may fill with 128 bits of information. Be aware, + * however, bits 48 through 51 will be replaced with the UUID version + * field, and bits 64 and 65 will be replaced with the UUID variant. You + * MUST NOT rely on these bits for your application needs. + * + * @return UuidInterface A UuidInterface instance that represents a + * version 8 UUID + */ + public function uuid8(string $bytes): UuidInterface; } From 0f15cb8e41043c377dfd21cbc5f36fdfedb0eb20 Mon Sep 17 00:00:00 2001 From: Ilya Plotnikov Date: Thu, 4 May 2023 23:06:41 +0600 Subject: [PATCH 02/10] Modify tests --- tests/ExpectedBehaviorTest.php | 6 ++++++ tests/UuidTest.php | 27 --------------------------- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/tests/ExpectedBehaviorTest.php b/tests/ExpectedBehaviorTest.php index 804239c..11f7822 100644 --- a/tests/ExpectedBehaviorTest.php +++ b/tests/ExpectedBehaviorTest.php @@ -444,6 +444,9 @@ class ExpectedBehaviorTest extends TestCase 'uuid3' => $uuid, 'uuid4' => $uuid, 'uuid5' => $uuid, + 'uuid6' => $uuid, + 'uuid7' => $uuid, + 'uuid8' => $uuid, 'fromBytes' => $uuid, 'fromString' => $uuid, 'fromInteger' => $uuid, @@ -455,6 +458,9 @@ class ExpectedBehaviorTest extends TestCase $this->assertSame($uuid, Uuid::uuid3(Uuid::NAMESPACE_URL, 'https://example.com/foo')); $this->assertSame($uuid, Uuid::uuid4()); $this->assertSame($uuid, Uuid::uuid5(Uuid::NAMESPACE_URL, 'https://example.com/foo')); + $this->assertSame($uuid, Uuid::uuid6()); + $this->assertSame($uuid, Uuid::uuid7()); + $this->assertSame($uuid, Uuid::uuid8(hex2bin('ffffffffffffffffffffffffffffffff'))); $this->assertSame($uuid, Uuid::fromBytes(hex2bin('ffffffffffffffffffffffffffffffff'))); $this->assertSame($uuid, Uuid::fromString('ffffffff-ffff-ffff-ffff-ffffffffffff')); $this->assertSame($uuid, Uuid::fromInteger('340282366920938463463374607431768211455')); diff --git a/tests/UuidTest.php b/tests/UuidTest.php index feea5a0..2868873 100644 --- a/tests/UuidTest.php +++ b/tests/UuidTest.php @@ -10,7 +10,6 @@ use Brick\Math\RoundingMode; use DateTimeImmutable; use DateTimeInterface; use Mockery; -use Mockery\MockInterface; use PHPUnit\Framework\MockObject\MockObject; use Ramsey\Uuid\Builder\DefaultUuidBuilder; use Ramsey\Uuid\Codec\StringCodec; @@ -782,19 +781,6 @@ class UuidTest extends TestCase $this->assertSame(7, $uuid->getVersion()); } - public function testUuid7ThrowsExceptionForUnsupportedFactory(): void - { - /** @var UuidFactoryInterface&MockInterface $factory */ - $factory = Mockery::mock(UuidFactoryInterface::class); - - Uuid::setFactory($factory); - - $this->expectException(UnsupportedOperationException::class); - $this->expectExceptionMessage('The provided factory does not support the uuid7() method'); - - Uuid::uuid7(); - } - public function testUuid7WithDateTime(): void { $dateTime = new DateTimeImmutable('@281474976710.655'); @@ -875,19 +861,6 @@ class UuidTest extends TestCase $this->assertSame(8, $uuid->getVersion()); } - public function testUuid8ThrowsExceptionForUnsupportedFactory(): void - { - /** @var UuidFactoryInterface&MockInterface $factory */ - $factory = Mockery::mock(UuidFactoryInterface::class); - - Uuid::setFactory($factory); - - $this->expectException(UnsupportedOperationException::class); - $this->expectExceptionMessage('The provided factory does not support the uuid8() method'); - - Uuid::uuid8("\x00\x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa\xbb\xcc\xdd\xee\xff"); - } - /** * Tests known version-3 UUIDs * From 3ee3bfbd35edf13f9de18654e092d0cc7d1be57f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Oct 2025 16:07:16 -0500 Subject: [PATCH 03/10] chore(deps-dev): bump sebastian/recursion-context from 4.0.5 to 4.0.6 --- composer.lock | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index 65f5b05..726f7a2 100644 --- a/composer.lock +++ b/composer.lock @@ -4107,16 +4107,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.5", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", - "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/539c6691e0623af6dc6f9c20384c120f963465a0", + "reference": "539c6691e0623af6dc6f9c20384c120f963465a0", "shasum": "" }, "require": { @@ -4158,15 +4158,27 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.6" }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context", + "type": "tidelift" } ], - "time": "2023-02-03T06:07:39+00:00" + "time": "2025-08-10T06:57:39+00:00" }, { "name": "sebastian/resource-operations", From a2882fa6dd0edc1699a6012dee23ea1fa6cbba54 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sat, 13 Dec 2025 19:53:16 -0600 Subject: [PATCH 04/10] Remove explicit int cast to avoid warning in PHP 8.5 --- src/Converter/Time/PhpTimeConverter.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Converter/Time/PhpTimeConverter.php b/src/Converter/Time/PhpTimeConverter.php index 67dbf88..371a66b 100644 --- a/src/Converter/Time/PhpTimeConverter.php +++ b/src/Converter/Time/PhpTimeConverter.php @@ -110,7 +110,7 @@ class PhpTimeConverter implements TimeConverterInterface // Convert the 100-nanosecond intervals into seconds and microseconds. $splitTime = $this->splitTime( - ((int) $timestamp->toString() - self::GREGORIAN_TO_UNIX_INTERVALS) / self::SECOND_INTERVALS, + ($timestamp->toString() - self::GREGORIAN_TO_UNIX_INTERVALS) / self::SECOND_INTERVALS, ); if (count($splitTime) === 0) { From 440dc5c784047e862bd7931179dc8d003491ee23 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sat, 13 Dec 2025 19:54:15 -0600 Subject: [PATCH 05/10] Ignore PHPStan errors about possibly impure method calls --- src/Math/BrickMathCalculator.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Math/BrickMathCalculator.php b/src/Math/BrickMathCalculator.php index 649f580..740391f 100644 --- a/src/Math/BrickMathCalculator.php +++ b/src/Math/BrickMathCalculator.php @@ -49,10 +49,11 @@ final class BrickMathCalculator implements CalculatorInterface $sum = BigInteger::of($augend->toString()); foreach ($addends as $addend) { + /** @phpstan-ignore possiblyImpure.methodCall */ $sum = $sum->plus($addend->toString()); } - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ return new IntegerObject((string) $sum); } @@ -61,10 +62,11 @@ final class BrickMathCalculator implements CalculatorInterface $difference = BigInteger::of($minuend->toString()); foreach ($subtrahends as $subtrahend) { + /** @phpstan-ignore possiblyImpure.methodCall */ $difference = $difference->minus($subtrahend->toString()); } - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ return new IntegerObject((string) $difference); } @@ -73,10 +75,11 @@ final class BrickMathCalculator implements CalculatorInterface $product = BigInteger::of($multiplicand->toString()); foreach ($multipliers as $multiplier) { + /** @phpstan-ignore possiblyImpure.methodCall */ $product = $product->multipliedBy($multiplier->toString()); } - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ return new IntegerObject((string) $product); } @@ -92,22 +95,23 @@ final class BrickMathCalculator implements CalculatorInterface $quotient = BigDecimal::of($dividend->toString()); foreach ($divisors as $divisor) { + /** @phpstan-ignore possiblyImpure.methodCall */ $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); } if ($scale === 0) { - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall, possiblyImpure.methodCall */ return new IntegerObject((string) $quotient->toBigInteger()); } - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ return new Decimal((string) $quotient); } public function fromBase(string $value, int $base): IntegerObject { try { - /** @phpstan-ignore possiblyImpure.new */ + /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ return new IntegerObject((string) BigInteger::fromBase($value, $base)); } catch (MathException | \InvalidArgumentException $exception) { throw new InvalidArgumentException( @@ -121,6 +125,7 @@ final class BrickMathCalculator implements CalculatorInterface public function toBase(IntegerObject $value, int $base): string { try { + /** @phpstan-ignore possiblyImpure.methodCall */ return BigInteger::of($value->toString())->toBase($base); } catch (MathException | \InvalidArgumentException $exception) { throw new InvalidArgumentException( From 2487e2dee94230e73152148195324597d582270d Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sat, 13 Dec 2025 20:19:54 -0600 Subject: [PATCH 06/10] Update brick/math for static analysis but downgrade in tests for PHP 8.0 --- .github/workflows/continuous-integration.yml | 4 ++ composer.lock | 43 +++++++++----------- src/Math/BrickMathCalculator.php | 17 +++----- 3 files changed, 29 insertions(+), 35 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 4a25c72..5336e20 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -194,6 +194,10 @@ jobs: coverage: "none" ini-values: "memory_limit=-1" + - name: "Downgrade brick/math in lock file for PHP 8.0" + run: | + composer update brick/math:"0.8.8" + - name: "Install dependencies (Composer)" uses: "ramsey/composer-install@v3" with: diff --git a/composer.lock b/composer.lock index 726f7a2..5001cf3 100644 --- a/composer.lock +++ b/composer.lock @@ -8,26 +8,25 @@ "packages": [ { "name": "brick/math", - "version": "0.9.3", + "version": "0.14.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/f05858549e5f9d7bb45875a75583240a38a281d0", + "reference": "f05858549e5f9d7bb45875a75583240a38a281d0", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^8.2" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpstan/phpstan": "2.1.22", + "phpunit/phpunit": "^11.5" }, "type": "library", "autoload": { @@ -47,24 +46,25 @@ "arithmetic", "bigdecimal", "bignum", + "bignumber", "brick", - "math" + "decimal", + "integer", + "math", + "mathematics", + "rational" ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.14.1" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2025-11-24T14:40:29+00:00" }, { "name": "ramsey/collection", @@ -2633,16 +2633,11 @@ }, { "name": "phpstan/phpstan", - "version": "2.1.22", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4" - }, + "version": "2.1.33", "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/41600c8379eb5aee63e9413fe9e97273e25d57e4", - "reference": "41600c8379eb5aee63e9413fe9e97273e25d57e4", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f", + "reference": "9e800e6bee7d5bd02784d4c6069b48032d16224f", "shasum": "" }, "require": { @@ -2687,7 +2682,7 @@ "type": "github" } ], - "time": "2025-08-04T19:17:37+00:00" + "time": "2025-12-05T10:24:31+00:00" }, { "name": "phpstan/phpstan-mockery", diff --git a/src/Math/BrickMathCalculator.php b/src/Math/BrickMathCalculator.php index 740391f..649f580 100644 --- a/src/Math/BrickMathCalculator.php +++ b/src/Math/BrickMathCalculator.php @@ -49,11 +49,10 @@ final class BrickMathCalculator implements CalculatorInterface $sum = BigInteger::of($augend->toString()); foreach ($addends as $addend) { - /** @phpstan-ignore possiblyImpure.methodCall */ $sum = $sum->plus($addend->toString()); } - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new IntegerObject((string) $sum); } @@ -62,11 +61,10 @@ final class BrickMathCalculator implements CalculatorInterface $difference = BigInteger::of($minuend->toString()); foreach ($subtrahends as $subtrahend) { - /** @phpstan-ignore possiblyImpure.methodCall */ $difference = $difference->minus($subtrahend->toString()); } - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new IntegerObject((string) $difference); } @@ -75,11 +73,10 @@ final class BrickMathCalculator implements CalculatorInterface $product = BigInteger::of($multiplicand->toString()); foreach ($multipliers as $multiplier) { - /** @phpstan-ignore possiblyImpure.methodCall */ $product = $product->multipliedBy($multiplier->toString()); } - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new IntegerObject((string) $product); } @@ -95,23 +92,22 @@ final class BrickMathCalculator implements CalculatorInterface $quotient = BigDecimal::of($dividend->toString()); foreach ($divisors as $divisor) { - /** @phpstan-ignore possiblyImpure.methodCall */ $quotient = $quotient->dividedBy($divisor->toString(), $scale, $brickRounding); } if ($scale === 0) { - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new IntegerObject((string) $quotient->toBigInteger()); } - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new Decimal((string) $quotient); } public function fromBase(string $value, int $base): IntegerObject { try { - /** @phpstan-ignore possiblyImpure.new, possiblyImpure.methodCall */ + /** @phpstan-ignore possiblyImpure.new */ return new IntegerObject((string) BigInteger::fromBase($value, $base)); } catch (MathException | \InvalidArgumentException $exception) { throw new InvalidArgumentException( @@ -125,7 +121,6 @@ final class BrickMathCalculator implements CalculatorInterface public function toBase(IntegerObject $value, int $base): string { try { - /** @phpstan-ignore possiblyImpure.methodCall */ return BigInteger::of($value->toString())->toBase($base); } catch (MathException | \InvalidArgumentException $exception) { throw new InvalidArgumentException( From 53814f1bbc629bc64cfe3d283463b6ddf13e9695 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sat, 13 Dec 2025 20:29:30 -0600 Subject: [PATCH 07/10] Set lowest brick/math version to 0.8.16 for BigInteger::toBytes() --- .github/workflows/continuous-integration.yml | 2 +- composer.json | 2 +- composer.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 5336e20..61194dc 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -196,7 +196,7 @@ jobs: - name: "Downgrade brick/math in lock file for PHP 8.0" run: | - composer update brick/math:"0.8.8" + composer update brick/math:"0.8.16" - name: "Install dependencies (Composer)" uses: "ramsey/composer-install@v3" diff --git a/composer.json b/composer.json index b34d9b1..178019f 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,7 @@ ], "require": { "php": "^8.0", - "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", "ramsey/collection": "^1.2 || ^2.0" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 5001cf3..56fa3c0 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": "d8895fd90557f65b9066b8606c4912ff", + "content-hash": "bb087ab286c5dc749e589e7bb6eb96c1", "packages": [ { "name": "brick/math", From cadb40415197b4dcb99fde02f2f5bb9a3741dd2e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 13 Dec 2025 20:36:25 -0600 Subject: [PATCH 08/10] chore(deps): bump actions/checkout from 5 to 6 --- .github/workflows/continuous-integration.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 61194dc..2b37824 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -28,7 +28,7 @@ jobs: steps: - name: "Checkout repository" - uses: "actions/checkout@v5" + uses: "actions/checkout@v6" - name: "Install PHP" uses: "shivammathur/setup-php@v2" @@ -53,7 +53,7 @@ jobs: steps: - name: "Checkout repository" - uses: "actions/checkout@v5" + uses: "actions/checkout@v6" - name: "Install PHP" uses: "shivammathur/setup-php@v2" @@ -86,7 +86,7 @@ jobs: steps: - name: "Checkout repository" - uses: "actions/checkout@v5" + uses: "actions/checkout@v6" - name: "Install dependencies (apt)" run: | @@ -116,7 +116,7 @@ jobs: steps: - name: "Checkout repository" - uses: "actions/checkout@v5" + uses: "actions/checkout@v6" - name: "Install dependencies (apt)" run: | @@ -178,7 +178,7 @@ jobs: git config --system core.eol lf - name: "Checkout repository" - uses: "actions/checkout@v5" + uses: "actions/checkout@v6" - name: "Install dependencies (apt)" if: ${{ matrix.operating-system == 'ubuntu-latest' }} From 898f9a6c8afe8f5669c24190084ccee071d97572 Mon Sep 17 00:00:00 2001 From: Ben Ramsey Date: Sat, 13 Dec 2025 20:50:34 -0600 Subject: [PATCH 09/10] Update ergebnis/composer-normalize in lock file --- composer.lock | 113 +++++++++++++++++++++++++++----------------------- 1 file changed, 62 insertions(+), 51 deletions(-) diff --git a/composer.lock b/composer.lock index 56fa3c0..5ce3d12 100644 --- a/composer.lock +++ b/composer.lock @@ -803,16 +803,16 @@ }, { "name": "ergebnis/composer-normalize", - "version": "2.47.0", + "version": "2.48.2", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "ed24b9f8901f8fbafeca98f662eaca39427f0544" + "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/ed24b9f8901f8fbafeca98f662eaca39427f0544", - "reference": "ed24b9f8901f8fbafeca98f662eaca39427f0544", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b", + "reference": "86dc9731b8320f49e9be9ad6d8e4de9b8b0e9b8b", "shasum": "" }, "require": { @@ -822,30 +822,31 @@ "ergebnis/json-printer": "^3.7.0", "ext-json": "*", "justinrainbow/json-schema": "^5.2.12 || ^6.0.0", - "localheinz/diff": "^1.2.0", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "localheinz/diff": "^1.3.0", + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "composer/composer": "^2.8.3", - "ergebnis/license": "^2.6.0", - "ergebnis/php-cs-fixer-config": "^6.46.0", - "ergebnis/phpunit-slow-test-detector": "^2.19.1", + "ergebnis/license": "^2.7.0", + "ergebnis/php-cs-fixer-config": "^6.53.0", + "ergebnis/phpstan-rules": "^2.11.0", + "ergebnis/phpunit-slow-test-detector": "^2.20.0", "fakerphp/faker": "^1.24.1", "infection/infection": "~0.26.6", "phpstan/extension-installer": "^1.4.3", - "phpstan/phpstan": "^2.1.11", - "phpstan/phpstan-deprecation-rules": "^2.0.1", - "phpstan/phpstan-phpunit": "^2.0.6", - "phpstan/phpstan-strict-rules": "^2.0.4", + "phpstan/phpstan": "^2.1.17", + "phpstan/phpstan-deprecation-rules": "^2.0.3", + "phpstan/phpstan-phpunit": "^2.0.7", + "phpstan/phpstan-strict-rules": "^2.0.6", "phpunit/phpunit": "^9.6.20", - "rector/rector": "^2.0.11", + "rector/rector": "^2.1.4", "symfony/filesystem": "^5.4.41" }, "type": "composer-plugin", "extra": { "class": "Ergebnis\\Composer\\Normalize\\NormalizePlugin", "branch-alias": { - "dev-main": "2.44-dev" + "dev-main": "2.49-dev" }, "plugin-optional": true, "composer-normalize": { @@ -882,7 +883,7 @@ "security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/composer-normalize" }, - "time": "2025-04-15T11:09:27+00:00" + "time": "2025-09-06T11:42:34+00:00" }, { "name": "ergebnis/json", @@ -959,16 +960,16 @@ }, { "name": "ergebnis/json-normalizer", - "version": "4.9.0", + "version": "4.10.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "cc4dcf3890448572a2d9bea97133c4d860e59fb1" + "reference": "77961faf2c651c3f05977b53c6c68e8434febf62" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/cc4dcf3890448572a2d9bea97133c4d860e59fb1", - "reference": "cc4dcf3890448572a2d9bea97133c4d860e59fb1", + "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/77961faf2c651c3f05977b53c6c68e8434febf62", + "reference": "77961faf2c651c3f05977b53c6c68e8434febf62", "shasum": "" }, "require": { @@ -978,7 +979,7 @@ "ergebnis/json-schema-validator": "^4.2.0", "ext-json": "*", "justinrainbow/json-schema": "^5.2.12 || ^6.0.0", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "composer/semver": "^3.4.3", @@ -1003,7 +1004,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.8-dev" + "dev-main": "4.11-dev" }, "composer-normalize": { "indent-size": 2, @@ -1037,24 +1038,24 @@ "security": "https://github.com/ergebnis/json-normalizer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-normalizer" }, - "time": "2025-04-10T13:13:04+00:00" + "time": "2025-09-06T09:18:13+00:00" }, { "name": "ergebnis/json-pointer", - "version": "3.6.0", + "version": "3.7.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-pointer.git", - "reference": "4fc85d8edb74466d282119d8d9541ec7cffc0798" + "reference": "43bef355184e9542635e35dd2705910a3df4c236" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/4fc85d8edb74466d282119d8d9541ec7cffc0798", - "reference": "4fc85d8edb74466d282119d8d9541ec7cffc0798", + "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/43bef355184e9542635e35dd2705910a3df4c236", + "reference": "43bef355184e9542635e35dd2705910a3df4c236", "shasum": "" }, "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "ergebnis/composer-normalize": "^2.43.0", @@ -1075,7 +1076,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.8-dev" }, "composer-normalize": { "indent-size": 2, @@ -1110,28 +1111,29 @@ "security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-pointer" }, - "time": "2024-11-17T12:37:06+00:00" + "time": "2025-09-06T09:28:19+00:00" }, { "name": "ergebnis/json-printer", - "version": "3.7.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-printer.git", - "reference": "ced41fce7854152f0e8f38793c2ffe59513cdd82" + "reference": "211d73fc7ec6daf98568ee6ed6e6d133dee8503e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/ced41fce7854152f0e8f38793c2ffe59513cdd82", - "reference": "ced41fce7854152f0e8f38793c2ffe59513cdd82", + "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/211d73fc7ec6daf98568ee6ed6e6d133dee8503e", + "reference": "211d73fc7ec6daf98568ee6ed6e6d133dee8503e", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { + "ergebnis/composer-normalize": "^2.44.0", "ergebnis/data-provider": "^3.3.0", "ergebnis/license": "^2.5.0", "ergebnis/php-cs-fixer-config": "^6.37.0", @@ -1147,6 +1149,15 @@ "rector/rector": "^1.2.10" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.9-dev" + }, + "composer-normalize": { + "indent-size": 2, + "indent-style": "space" + } + }, "autoload": { "psr-4": { "Ergebnis\\Json\\Printer\\": "src/" @@ -1175,20 +1186,20 @@ "security": "https://github.com/ergebnis/json-printer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-printer" }, - "time": "2024-11-17T11:20:51+00:00" + "time": "2025-09-06T09:59:26+00:00" }, { "name": "ergebnis/json-schema-validator", - "version": "4.4.0", + "version": "4.5.1", "source": { "type": "git", "url": "https://github.com/ergebnis/json-schema-validator.git", - "reference": "85f90c81f718aebba1d738800af83eeb447dc7ec" + "reference": "b739527a480a9e3651360ad351ea77e7e9019df2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/85f90c81f718aebba1d738800af83eeb447dc7ec", - "reference": "85f90c81f718aebba1d738800af83eeb447dc7ec", + "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/b739527a480a9e3651360ad351ea77e7e9019df2", + "reference": "b739527a480a9e3651360ad351ea77e7e9019df2", "shasum": "" }, "require": { @@ -1196,7 +1207,7 @@ "ergebnis/json-pointer": "^3.4.0", "ext-json": "*", "justinrainbow/json-schema": "^5.2.12 || ^6.0.0", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" }, "require-dev": { "ergebnis/composer-normalize": "^2.44.0", @@ -1217,7 +1228,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.4-dev" + "dev-main": "4.6-dev" }, "composer-normalize": { "indent-size": 2, @@ -1252,7 +1263,7 @@ "security": "https://github.com/ergebnis/json-schema-validator/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-schema-validator" }, - "time": "2024-11-18T06:32:28+00:00" + "time": "2025-09-06T11:37:35+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -1357,26 +1368,26 @@ }, { "name": "justinrainbow/json-schema", - "version": "6.4.2", + "version": "6.6.3", "source": { "type": "git", "url": "https://github.com/jsonrainbow/json-schema.git", - "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02" + "reference": "134e98916fa2f663afa623970af345cd788e8967" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/ce1fd2d47799bb60668643bc6220f6278a4c1d02", - "reference": "ce1fd2d47799bb60668643bc6220f6278a4c1d02", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/134e98916fa2f663afa623970af345cd788e8967", + "reference": "134e98916fa2f663afa623970af345cd788e8967", "shasum": "" }, "require": { "ext-json": "*", - "marc-mabe/php-enum": "^4.0", + "marc-mabe/php-enum": "^4.4", "php": "^7.2 || ^8.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "3.3.0", - "json-schema/json-schema-test-suite": "1.2.0", + "json-schema/json-schema-test-suite": "^23.2", "marc-mabe/php-enum-phpstan": "^2.0", "phpspec/prophecy": "^1.19", "phpstan/phpstan": "^1.12", @@ -1426,9 +1437,9 @@ ], "support": { "issues": "https://github.com/jsonrainbow/json-schema/issues", - "source": "https://github.com/jsonrainbow/json-schema/tree/6.4.2" + "source": "https://github.com/jsonrainbow/json-schema/tree/6.6.3" }, - "time": "2025-06-03T18:27:04+00:00" + "time": "2025-12-02T10:21:33+00:00" }, { "name": "localheinz/diff", From 9265c6e7f0d6f673ea0566262995ccba9abcf2d8 Mon Sep 17 00:00:00 2001 From: chris Date: Sun, 14 Dec 2025 04:01:59 +0100 Subject: [PATCH 10/10] [ci] add tests for PHP 8.5 (#630) --- .github/workflows/continuous-integration.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/continuous-integration.yml b/.github/workflows/continuous-integration.yml index 2b37824..ba7e4b3 100644 --- a/.github/workflows/continuous-integration.yml +++ b/.github/workflows/continuous-integration.yml @@ -83,6 +83,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" steps: - name: "Checkout repository" @@ -163,6 +164,7 @@ jobs: - "8.2" - "8.3" - "8.4" + - "8.5" operating-system: - "ubuntu-latest" - "windows-latest"