diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bb15cc..6e79f4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [11.2.3] - 2026-09-28 +### Fixed +- Generated clients can no longer resolve dependency versions that raise PHP 8.4+ deprecations: the generated `composer.json` now requires `docler-labs/api-client-exception` `^1.0 || ^2.3.1` (was `^1.0 || ^2.0`) and, for the Guzzle HTTP message implementation, `guzzlehttp/psr7` `^1.6 || ^2.7` (was `^1.6 || ^2.6`). The 1.x lines stay allowed, so every `CLIENT_PHP_VERSION` target keeps resolving; on PHP 7.4+ Composer now picks only releases that run deprecation-free on PHP 8.5 + +### Changed +- Updated `docler-labs/api-client-exception` to 2.3.1 and `guzzlehttp/psr7` to 2.13.1 in the `example` and `example3_1` lockfiles, so the acceptance tests also run deprecation-free on PHP 8.5 +- Updated `composer/composer` to 2.2.30 (development dependency) + +Generated code is unchanged; only the generated `composer.json` constraints differ. + ## [11.2.2] - 2026-08-07 ### Security - Updated `guzzlehttp/guzzle` to 7.15.2, resolving CVE-2026-69246 (a noncanonical host can bypass host-based checks) along with the earlier 7.12.x–7.15.x advisories diff --git a/example/PetStoreClient/composer.json b/example/PetStoreClient/composer.json index c7fbd1e..8379b75 100644 --- a/example/PetStoreClient/composer.json +++ b/example/PetStoreClient/composer.json @@ -10,10 +10,10 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-dom": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/example/PetStoreClient/src/Serializer/BodySerializer.php b/example/PetStoreClient/src/Serializer/BodySerializer.php index b038a0f..5b9832c 100644 --- a/example/PetStoreClient/src/Serializer/BodySerializer.php +++ b/example/PetStoreClient/src/Serializer/BodySerializer.php @@ -15,11 +15,14 @@ use InvalidArgumentException; use OpenApi\PetStoreClient\Request\RequestInterface; use OpenApi\PetStoreClient\Serializer\ContentType\ContentTypeSerializerInterface; +use OpenApi\PetStoreClient\Serializer\ContentType\JsonContentTypeSerializer; use Psr\Http\Message\ResponseInterface; use Throwable; class BodySerializer { + private const JSON_SUFFIX = '+json'; + /** @var ContentTypeSerializerInterface[] */ private $contentTypeSerializers = []; @@ -66,11 +69,29 @@ public function unserializeResponse(ResponseInterface $response): array private function getContentTypeSerializer(string $contentType): ContentTypeSerializerInterface { - $contentType = strtolower(trim(explode(';', $contentType)[0])); - if (!isset($this->contentTypeSerializers[$contentType])) { - throw new InvalidArgumentException(sprintf('Serializer for `%s` is not found. Supported: %s', $contentType, json_encode(array_keys($this->contentTypeSerializers)))); + $normalizedContentType = $this->normalizeContentType($contentType); + if (isset($this->contentTypeSerializers[$normalizedContentType])) { + return $this->contentTypeSerializers[$normalizedContentType]; + } + // RFC 6839: +json suffix indicates JSON-based format, fall back to JSON serializer + if ($this->isJsonBasedContentType($normalizedContentType)) { + return $this->contentTypeSerializers[JsonContentTypeSerializer::MIME_TYPE]; } + throw new InvalidArgumentException(sprintf('Serializer for `%s` is not found. Supported: %s', $normalizedContentType, json_encode(array_keys($this->contentTypeSerializers)))); + } + + private function normalizeContentType(string $contentType): string + { + return strtolower(trim(explode(';', $contentType)[0])); + } - return $this->contentTypeSerializers[$contentType]; + private function isJsonBasedContentType(string $normalizedContentType): bool + { + return $this->endsWith($normalizedContentType, self::JSON_SUFFIX) && isset($this->contentTypeSerializers[JsonContentTypeSerializer::MIME_TYPE]); + } + + private function endsWith(string $haystack, string $needle): bool + { + return $needle === '' || substr($haystack, -strlen($needle)) === $needle; } } diff --git a/example/composer.lock b/example/composer.lock index 30d4ddd..ea1d012 100644 --- a/example/composer.lock +++ b/example/composer.lock @@ -8,22 +8,23 @@ "packages": [ { "name": "docler-labs/api-client-exception", - "version": "2.0.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/DoclerLabs/api-client-exception.git", - "reference": "a3ec4018885b9ae193f01e04d886038020d7855e" + "reference": "eb574734d32c2a624d1f8fe17dc1d5252ba252d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DoclerLabs/api-client-exception/zipball/a3ec4018885b9ae193f01e04d886038020d7855e", - "reference": "a3ec4018885b9ae193f01e04d886038020d7855e", + "url": "https://api.github.com/repos/DoclerLabs/api-client-exception/zipball/eb574734d32c2a624d1f8fe17dc1d5252ba252d6", + "reference": "eb574734d32c2a624d1f8fe17dc1d5252ba252d6", "shasum": "" }, "require": { + "fig/http-message-util": "^1.1", "php": "^7.4 || ^8.0", "psr/http-client": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "phpunit/phpunit": "^9.5" @@ -48,9 +49,65 @@ ], "support": { "issues": "https://github.com/DoclerLabs/api-client-exception/issues", - "source": "https://github.com/DoclerLabs/api-client-exception/tree/2.0.0" + "source": "https://github.com/DoclerLabs/api-client-exception/tree/2.3.1" + }, + "time": "2026-09-28T09:26:44+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" }, - "time": "2022-11-21T12:45:09+00:00" + "time": "2020-11-24T22:02:12+00:00" }, { "name": "guzzlehttp/guzzle", @@ -266,16 +323,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.13.0", + "version": "2.13.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dad89620b7a6edb60c15858442eb2e408b45d8f4" + "reference": "95e7828100de18b4e269fb1703be530082d5166d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dad89620b7a6edb60c15858442eb2e408b45d8f4", - "reference": "dad89620b7a6edb60c15858442eb2e408b45d8f4", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/95e7828100de18b4e269fb1703be530082d5166d", + "reference": "95e7828100de18b4e269fb1703be530082d5166d", "shasum": "" }, "require": { @@ -365,7 +422,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.13.0" + "source": "https://github.com/guzzle/psr7/tree/2.13.1" }, "funding": [ { @@ -381,7 +438,7 @@ "type": "tidelift" } ], - "time": "2026-07-16T22:23:49+00:00" + "time": "2026-08-24T09:13:11+00:00" }, { "name": "openapi/pet-store-client", @@ -389,13 +446,13 @@ "dist": { "type": "path", "url": "PetStoreClient", - "reference": "93ea26f4a1d5f4436e771c9a3fe34e3da0ee2010" + "reference": "913a168df8522adcead52b9c2e1287962df7b070" }, "require": { - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-dom": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "php": "^7.4 || ^8.0", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", diff --git a/example3_1/PetStoreClient/composer.json b/example3_1/PetStoreClient/composer.json index b52c117..5d9072f 100644 --- a/example3_1/PetStoreClient/composer.json +++ b/example3_1/PetStoreClient/composer.json @@ -10,10 +10,10 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-dom": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/example3_1/PetStoreClient/src/Serializer/BodySerializer.php b/example3_1/PetStoreClient/src/Serializer/BodySerializer.php index b038a0f..5b9832c 100644 --- a/example3_1/PetStoreClient/src/Serializer/BodySerializer.php +++ b/example3_1/PetStoreClient/src/Serializer/BodySerializer.php @@ -15,11 +15,14 @@ use InvalidArgumentException; use OpenApi\PetStoreClient\Request\RequestInterface; use OpenApi\PetStoreClient\Serializer\ContentType\ContentTypeSerializerInterface; +use OpenApi\PetStoreClient\Serializer\ContentType\JsonContentTypeSerializer; use Psr\Http\Message\ResponseInterface; use Throwable; class BodySerializer { + private const JSON_SUFFIX = '+json'; + /** @var ContentTypeSerializerInterface[] */ private $contentTypeSerializers = []; @@ -66,11 +69,29 @@ public function unserializeResponse(ResponseInterface $response): array private function getContentTypeSerializer(string $contentType): ContentTypeSerializerInterface { - $contentType = strtolower(trim(explode(';', $contentType)[0])); - if (!isset($this->contentTypeSerializers[$contentType])) { - throw new InvalidArgumentException(sprintf('Serializer for `%s` is not found. Supported: %s', $contentType, json_encode(array_keys($this->contentTypeSerializers)))); + $normalizedContentType = $this->normalizeContentType($contentType); + if (isset($this->contentTypeSerializers[$normalizedContentType])) { + return $this->contentTypeSerializers[$normalizedContentType]; + } + // RFC 6839: +json suffix indicates JSON-based format, fall back to JSON serializer + if ($this->isJsonBasedContentType($normalizedContentType)) { + return $this->contentTypeSerializers[JsonContentTypeSerializer::MIME_TYPE]; } + throw new InvalidArgumentException(sprintf('Serializer for `%s` is not found. Supported: %s', $normalizedContentType, json_encode(array_keys($this->contentTypeSerializers)))); + } + + private function normalizeContentType(string $contentType): string + { + return strtolower(trim(explode(';', $contentType)[0])); + } - return $this->contentTypeSerializers[$contentType]; + private function isJsonBasedContentType(string $normalizedContentType): bool + { + return $this->endsWith($normalizedContentType, self::JSON_SUFFIX) && isset($this->contentTypeSerializers[JsonContentTypeSerializer::MIME_TYPE]); + } + + private function endsWith(string $haystack, string $needle): bool + { + return $needle === '' || substr($haystack, -strlen($needle)) === $needle; } } diff --git a/example3_1/composer.lock b/example3_1/composer.lock index 629445d..1670374 100644 --- a/example3_1/composer.lock +++ b/example3_1/composer.lock @@ -8,22 +8,23 @@ "packages": [ { "name": "docler-labs/api-client-exception", - "version": "2.0.0", + "version": "2.3.1", "source": { "type": "git", "url": "https://github.com/DoclerLabs/api-client-exception.git", - "reference": "a3ec4018885b9ae193f01e04d886038020d7855e" + "reference": "eb574734d32c2a624d1f8fe17dc1d5252ba252d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/DoclerLabs/api-client-exception/zipball/a3ec4018885b9ae193f01e04d886038020d7855e", - "reference": "a3ec4018885b9ae193f01e04d886038020d7855e", + "url": "https://api.github.com/repos/DoclerLabs/api-client-exception/zipball/eb574734d32c2a624d1f8fe17dc1d5252ba252d6", + "reference": "eb574734d32c2a624d1f8fe17dc1d5252ba252d6", "shasum": "" }, "require": { + "fig/http-message-util": "^1.1", "php": "^7.4 || ^8.0", "psr/http-client": "^1.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "require-dev": { "phpunit/phpunit": "^9.5" @@ -48,9 +49,65 @@ ], "support": { "issues": "https://github.com/DoclerLabs/api-client-exception/issues", - "source": "https://github.com/DoclerLabs/api-client-exception/tree/2.0.0" + "source": "https://github.com/DoclerLabs/api-client-exception/tree/2.3.1" + }, + "time": "2026-09-28T09:26:44+00:00" + }, + { + "name": "fig/http-message-util", + "version": "1.1.5", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message-util.git", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", + "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "suggest": { + "psr/http-message": "The package containing the PSR-7 interfaces" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Fig\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "issues": "https://github.com/php-fig/http-message-util/issues", + "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" }, - "time": "2022-11-21T12:45:09+00:00" + "time": "2020-11-24T22:02:12+00:00" }, { "name": "guzzlehttp/guzzle", @@ -266,16 +323,16 @@ }, { "name": "guzzlehttp/psr7", - "version": "2.13.0", + "version": "2.13.1", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "dad89620b7a6edb60c15858442eb2e408b45d8f4" + "reference": "95e7828100de18b4e269fb1703be530082d5166d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/dad89620b7a6edb60c15858442eb2e408b45d8f4", - "reference": "dad89620b7a6edb60c15858442eb2e408b45d8f4", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/95e7828100de18b4e269fb1703be530082d5166d", + "reference": "95e7828100de18b4e269fb1703be530082d5166d", "shasum": "" }, "require": { @@ -365,7 +422,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.13.0" + "source": "https://github.com/guzzle/psr7/tree/2.13.1" }, "funding": [ { @@ -381,7 +438,7 @@ "type": "tidelift" } ], - "time": "2026-07-16T22:23:49+00:00" + "time": "2026-08-24T09:13:11+00:00" }, { "name": "openapi/pet-store-client", @@ -389,13 +446,13 @@ "dist": { "type": "path", "url": "PetStoreClient", - "reference": "1992c0e21d828e5dd34d8932268aa9675a70e19d" + "reference": "2118ab38791149b10d8e5159b400c5d5212740d7" }, "require": { - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-dom": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "php": "^7.4 || ^8.0", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", diff --git a/src/Generator/Implementation/HttpMessage/GuzzleHttpMessage.php b/src/Generator/Implementation/HttpMessage/GuzzleHttpMessage.php index 4f09fa2..97aca2e 100644 --- a/src/Generator/Implementation/HttpMessage/GuzzleHttpMessage.php +++ b/src/Generator/Implementation/HttpMessage/GuzzleHttpMessage.php @@ -18,7 +18,7 @@ public function getRequestMapperClassName(): string public function getPackages(): array { return [ - 'guzzlehttp/psr7' => '^1.6 || ^2.6', + 'guzzlehttp/psr7' => '^1.6 || ^2.7', ]; } diff --git a/src/Meta/ComposerJsonTemplate.php b/src/Meta/ComposerJsonTemplate.php index 015ca88..4c6aac2 100644 --- a/src/Meta/ComposerJsonTemplate.php +++ b/src/Meta/ComposerJsonTemplate.php @@ -56,7 +56,7 @@ public function render(Specification $specification, MetaFileCollection $fileReg private function getCommonPackages(): array { return [ - 'docler-labs/api-client-exception' => '^1.0 || ^2.0', + 'docler-labs/api-client-exception' => '^1.0 || ^2.3.1', 'psr/container' => '^1.0 || ^2.0', 'psr/http-client' => '^1.0', ]; diff --git a/test/suite/functional/Meta/ComposerJson/composer_default74.json b/test/suite/functional/Meta/ComposerJson/composer_default74.json index 614783e..80d3070 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_default74.json +++ b/test/suite/functional/Meta/ComposerJson/composer_default74.json @@ -9,9 +9,9 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_default80.json b/test/suite/functional/Meta/ComposerJson/composer_default80.json index 3cf7c63..00cc9b1 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_default80.json +++ b/test/suite/functional/Meta/ComposerJson/composer_default80.json @@ -9,9 +9,9 @@ }, "require": { "php": "^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_default81.json b/test/suite/functional/Meta/ComposerJson/composer_default81.json index cc46b6c..f1bbf3c 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_default81.json +++ b/test/suite/functional/Meta/ComposerJson/composer_default81.json @@ -9,9 +9,9 @@ }, "require": { "php": "^8.1", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_guzzle_message74.json b/test/suite/functional/Meta/ComposerJson/composer_guzzle_message74.json index 614783e..80d3070 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_guzzle_message74.json +++ b/test/suite/functional/Meta/ComposerJson/composer_guzzle_message74.json @@ -9,9 +9,9 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_guzzle_message80.json b/test/suite/functional/Meta/ComposerJson/composer_guzzle_message80.json index 3cf7c63..00cc9b1 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_guzzle_message80.json +++ b/test/suite/functional/Meta/ComposerJson/composer_guzzle_message80.json @@ -9,9 +9,9 @@ }, "require": { "php": "^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_nyholm_message74.json b/test/suite/functional/Meta/ComposerJson/composer_nyholm_message74.json index b83f5ef..318d40a 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_nyholm_message74.json +++ b/test/suite/functional/Meta/ComposerJson/composer_nyholm_message74.json @@ -9,7 +9,7 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", "nyholm/psr7": "^1.3", "pimple/pimple": "^3.5", diff --git a/test/suite/functional/Meta/ComposerJson/composer_nyholm_message80.json b/test/suite/functional/Meta/ComposerJson/composer_nyholm_message80.json index f1f4e98..e4dff6a 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_nyholm_message80.json +++ b/test/suite/functional/Meta/ComposerJson/composer_nyholm_message80.json @@ -9,7 +9,7 @@ }, "require": { "php": "^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-json": "*", "nyholm/psr7": "^1.3", "pimple/pimple": "^3.5", diff --git a/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement74.json b/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement74.json index 03e61ef..dde08e2 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement74.json +++ b/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement74.json @@ -9,10 +9,10 @@ }, "require": { "php": "^7.4 || ^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-intl": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0" diff --git a/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement80.json b/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement80.json index 3882fff..cfb4068 100644 --- a/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement80.json +++ b/test/suite/functional/Meta/ComposerJson/composer_with_intl_requirement80.json @@ -9,10 +9,10 @@ }, "require": { "php": "^8.0", - "docler-labs/api-client-exception": "^1.0 || ^2.0", + "docler-labs/api-client-exception": "^1.0 || ^2.3.1", "ext-intl": "*", "ext-json": "*", - "guzzlehttp/psr7": "^1.6 || ^2.6", + "guzzlehttp/psr7": "^1.6 || ^2.7", "pimple/pimple": "^3.5", "psr/container": "^1.0 || ^2.0", "psr/http-client": "^1.0"