eliashaeussler / composer-update-check

📦 Composer Plugin to check outdated packages, based on their requirements
https://composer-update-check.elias-haeussler.de/
GNU General Public License v3.0
2 stars 2 forks source link

[TASK] Update cuyz/valinor to v1.13.0 #161

Closed renovate[bot] closed 1 month ago

renovate[bot] commented 1 month ago

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
cuyz/valinor 1.7.0 -> 1.13.0 age adoption passing confidence

Release Notes

CuyZ/Valinor (cuyz/valinor) ### [`v1.13.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.13.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.12.0...1.13.0) #### Notable changes **Microseconds support for timestamp format** Prior to this patch, this would require a custom constructor in the form of: ```php static fn(float | int $timestamp): DateTimeImmutable => new DateTimeImmutable(sprintf("@​%d", $timestamp)), ``` This bypasses the datetime format support of Valinor entirely. This is required because the library does not support floats as valid `DateTimeInterface` input values. This commit adds support for floats and registers `timestamp.microseconds` (`U.u`) as a valid default format. **Support for `value-of` type** This type can be used as follows: ```php enum Suit: string { case Hearts = 'H'; case Diamonds = 'D'; case Clubs = 'C'; case Spades = 'S'; } $suit = (new \CuyZ\Valinor\MapperBuilder()) ->mapper() ->map('value-of', 'D'); // $suit === 'D' ``` **Object constructors parameters types inferring improvements** The collision system that checks object constructors parameters types is now way more clever, as it no longer checks for parameters' names only. Types are now also checked, and only true collision will be detected, for instance when two constructors share a parameter with the same name and type. Note that when two parameters share the same name, the following type priority operates: 1. Non-scalar type 2. Integer type 3. Float type 4. String type 5. Boolean type With this change, the code below is now valid: ```php final readonly class Money { private function __construct( public int $value, ) {} #[\CuyZ\Valinor\Mapper\Object\Constructor] public static function fromInt(int $value): self { return new self($value); } #[\CuyZ\Valinor\Mapper\Object\Constructor] public static function fromString(string $value): self { if (! preg_match('/^\d+€$/', $value)) { throw new \InvalidArgumentException('Invalid money format'); } return new self((int)rtrim($value, '€')); } } $mapper = (new \CuyZ\Valinor\MapperBuilder())->mapper(); $mapper->map(Money::class, 42); // ✅ $mapper->map(Money::class, '42€'); // ✅ ``` ##### Features - Add microseconds support to timestamp format ([02bd2e](https://redirect.github.com/CuyZ/Valinor/commit/02bd2e5e0f0e7d4daf234852464085bcdd1a0eb2)) - Add support for `value-of` type ([b1017c](https://redirect.github.com/CuyZ/Valinor/commit/b1017ce55729f0698c7629d57a3d3a30c0f9bff3)) - Improve object constructors parameters types inferring ([2150dc](https://redirect.github.com/CuyZ/Valinor/commit/2150dcad4ce821bfe36c3718346ccc412e37832a)) ##### Bug Fixes - Allow any constant in class constant type ([694275](https://redirect.github.com/CuyZ/Valinor/commit/6942755865f91c80af8ea97fde2faa390478a6b8)) - Allow docblock for transformer callable type ([69e0e3](https://redirect.github.com/CuyZ/Valinor/commit/69e0e3a5f1de6a5eedcfa4125d8639be91f0c303)) - Do not override invalid variadic parameter type ([c5860f](https://redirect.github.com/CuyZ/Valinor/commit/c5860f0e5b3f59f49900bfbb20ca4493916eca7a)) - Handle interface generics ([40e6fa](https://redirect.github.com/CuyZ/Valinor/commit/40e6fa340819961068b8be178e312a99c06cede2)) - Handle iterable objects as iterable during normalization ([436e3c](https://redirect.github.com/CuyZ/Valinor/commit/436e3c25532d5cf396b00354ec5459e812c2953e)) - Properly format empty object with JSON normalizer ([ba22b5](https://redirect.github.com/CuyZ/Valinor/commit/ba22b5233e80f0ffbbe9591a5099b9dd62715eb8)) - Properly handle nested local type aliases ([127839](https://redirect.github.com/CuyZ/Valinor/commit/1278392757a4e9dc9eee2ab642c5700e83ccf982)) ##### Other - Exclude unneeded attributes in class/function definitions ([1803d0](https://redirect.github.com/CuyZ/Valinor/commit/1803d094f08b256c64535f4f86e32ab35a07bbf1)) - Improve mapping performance for nullable union type ([6fad94](https://redirect.github.com/CuyZ/Valinor/commit/6fad94a46785dfb853c11c241e3f60bcf6a85ede)) - Move "float type accepting integer value" logic in `Shell` ([047953](https://redirect.github.com/CuyZ/Valinor/commit/0479532fbc96fca35dcbfb4c1f5a9ef63e7625c5)) - Move setting values in shell ([84b1ff](https://redirect.github.com/CuyZ/Valinor/commit/84b1ffbc8190a709d752a9882f71f6f419ad0434)) - Reorganize type resolver services ([86fb7b](https://redirect.github.com/CuyZ/Valinor/commit/86fb7b6303b15b54da6ac02ca8a7008b23c8bcff)) ### [`v1.12.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.12.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.11.0...1.12.0) #### Notable changes **Introduce unsealed shaped array syntax** This syntax enables an extension of the shaped array type by allowing additional values that must respect a certain type. ```php $mapper = (new \CuyZ\Valinor\MapperBuilder())->mapper(); // Default syntax can be used like this: $mapper->map( 'array{foo: string, ...array}', [ 'foo' => 'foo', 'bar' => 'bar', // ✅ valid additional value ] ); $mapper->map( 'array{foo: string, ...array}', [ 'foo' => 'foo', 'bar' => 1337, // ❌ invalid value 1337 ] ); // Key type can be added as well: $mapper->map( 'array{foo: string, ...array}', [ 'foo' => 'foo', 42 => 'bar', // ✅ valid additional key ] ); $mapper->map( 'array{foo: string, ...array}', [ 'foo' => 'foo', 'bar' => 'bar' // ❌ invalid key ] ); // Advanced types can be used: $mapper->map( "array{ 'en_US': non-empty-string, ...array }", [ 'en_US' => 'Hello', 'fr_FR' => 'Salut', // ✅ valid additional value ] ); $mapper->map( "array{ 'en_US': non-empty-string, ...array }", [ 'en_US' => 'Hello', 'fr_FR' => '', // ❌ invalid value ] ); // If the permissive type is enabled, the following will work: (new \CuyZ\Valinor\MapperBuilder()) ->allowPermissiveTypes() ->mapper() ->map( 'array{foo: string, ...}', ['foo' => 'foo', 'bar' => 'bar', 42 => 1337] ); // ✅ ``` **Interface constructor registration** By default, the mapper cannot instantiate an interface, as it does not know which implementation to use. To do so, the `MapperBuilder::infer()` method can be used, but it is cumbersome in most cases. It is now also possible to register a constructor for an interface, in the same way as for a class. Because the mapper cannot automatically guess which implementation can be used for an interface, it is not possible to use the `Constructor` attribute, the `MapperBuilder::registerConstructor()` method must be used instead. In the example below, the mapper is taught how to instantiate an implementation of `UuidInterface` from package `ramsey/uuid`: ```php (new \CuyZ\Valinor\MapperBuilder()) ->registerConstructor( // The static method below has return type `UuidInterface`; // therefore, the mapper will build an instance of `Uuid` when // it needs to instantiate an implementation of `UuidInterface`. Ramsey\Uuid\Uuid::fromString(...) ) ->mapper() ->map( Ramsey\Uuid\UuidInterface::class, '663bafbf-c3b5-4336-b27f-1796be8554e0' ); ``` **JSON normalizer formatting options** — *contributed by [@​boesing](https://redirect.github.com/boesing)* By default, the JSON normalizer will only use `JSON_THROW_ON_ERROR` to encode non-boolean scalar values. There might be use-cases where projects will need flags like `JSON_JSON_PRESERVE_ZERO_FRACTION`. This can be achieved by passing these flags to the new `JsonNormalizer::withOptions()` method: ```php namespace My\App; $normalizer = (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::json()) ->withOptions(\JSON_PRESERVE_ZERO_FRACTION); $lowerManhattanAsJson = $normalizer->normalize( new \My\App\Coordinates( longitude: 40.7128, latitude: -74.0000 ) ); // `$lowerManhattanAsJson` is a valid JSON string representing the data: // {"longitude":40.7128,"latitude":-74.0000} ``` The method accepts an int-mask of the following `JSON_*` constant representations: - `JSON_HEX_QUOT` - `JSON_HEX_TAG` - `JSON_HEX_AMP` - `JSON_HEX_APOS` - `JSON_INVALID_UTF8_IGNORE` - `JSON_INVALID_UTF8_SUBSTITUTE` - `JSON_NUMERIC_CHECK` - `JSON_PRESERVE_ZERO_FRACTION` - `JSON_UNESCAPED_LINE_TERMINATORS` - `JSON_UNESCAPED_SLASHES` - `JSON_UNESCAPED_UNICODE` `JSON_THROW_ON_ERROR` is always enforced and thus is not accepted. See official doc for more information: https://www.php.net/manual/en/json.constants.php ##### Features - Allow JSON normalizer to set JSON formatting options ([cd5df9](https://redirect.github.com/CuyZ/Valinor/commit/cd5df97d45b2687b4a79bf01e4b03d7deee28dfa)) - Allow mapping to `array-key` type ([5020d6](https://redirect.github.com/CuyZ/Valinor/commit/5020d62e00e00fdb74ac26e83dd36b313e0a5ee1)) - Handle interface constructor registration ([13f69a](https://redirect.github.com/CuyZ/Valinor/commit/13f69a9e1b5ce7f7a2305933764a928adf08c7df)) - Handle type importation from interface ([3af22d](https://redirect.github.com/CuyZ/Valinor/commit/3af22d16f6a4034611859a5998e6d0317d61dc4f)) - Introduce unsealed shaped array syntax ([fa8bb0](https://redirect.github.com/CuyZ/Valinor/commit/fa8bb0020c8792a17eadc9df0559d44f908b5397)) ##### Bug Fixes - Handle class tokens only when needed during lexing ([c4be75](https://redirect.github.com/CuyZ/Valinor/commit/c4be75844bc71912fdbf34fac2523ca184d3c15f)) - Load needed information only during interface inferring ([c8e204](https://redirect.github.com/CuyZ/Valinor/commit/c8e204a4a3cdfc681e99f80e0c1632e663a32161)) ##### Other - Rename internal class ([4c62d8](https://redirect.github.com/CuyZ/Valinor/commit/4c62d87a68a7de4e60d070cb7298a19fd7ebad5a)) ### [`v1.11.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.11.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.10.0...1.11.0) #### Notable changes **Improvement of union types narrowing** The algorithm used by the mapper to narrow a union type has been greatly improved, and should cover more edge-cases that would previously prevent the mapper from performing well. If an interface, a class or a shaped array is matched by the input, it will take precedence over arrays or scalars. ```php (new \CuyZ\Valinor\MapperBuilder()) ->mapper() ->map( signature: 'array|' . Color::class, source: [ 'red' => 255, 'green' => 128, 'blue' => 64, ], ); // Returns an instance of `Color` ``` When superfluous keys are allowed, if the input matches several interfaces, classes or shaped array, the one with the most children node will be prioritized, as it is considered the most specific type: ```php (new \CuyZ\Valinor\MapperBuilder()) ->allowSuperfluousKeys() ->mapper() ->map( // Even if the first shaped array matches the input, the second one is // used because it's more specific. signature: 'array{foo: int}|array{foo: int, bar: int}', source: [ 'foo' => 42, 'bar' => 1337, ], ); ``` If the input matches several types within the union, a collision will occur and cause the mapper to fail: ```php (new \CuyZ\Valinor\MapperBuilder()) ->mapper() ->map( // Even if the first shaped array matches the input, the second one is // used because it's more specific. signature: 'array{red: int, green: int, blue: int}|' . Color::class, source: [ 'red' => 255, 'green' => 128, 'blue' => 64, ], ); // ⚠️ Invalid value array{red: 255, green: 128, blue: 64}, it matches at // least two types from union. ``` **Introducing `AsTransformer` attribute** After the introduction of the [`Constructor` attribute](https://redirect.github.com/CuyZ/Valinor/commit/d86295c2fe2e7ea7ed37d00fd39f20f31a694129) used for the mapper, the new `AsTransformer` attribute is now available for the normalizer to ease the registration of a transformer. ```php namespace My\App; #[\CuyZ\Valinor\Normalizer\AsTransformer] #[\Attribute(\Attribute::TARGET_PROPERTY)] final class DateTimeFormat { public function __construct(private string $format) {} public function normalize(\DateTimeInterface $date): string { return $date->format($this->format); } } final readonly class Event { public function __construct( public string $eventName, #[\My\App\DateTimeFormat('Y/m/d')] public \DateTimeInterface $date, ) {} } (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::array()) ->normalize(new \My\App\Event( eventName: 'Release of legendary album', date: new \DateTimeImmutable('1971-11-08'), )); // [ // 'eventName' => 'Release of legendary album', // 'date' => '1971/11/08', // ] ``` ##### Features - Improve union type narrowing during mapping ([f73158](https://redirect.github.com/CuyZ/Valinor/commit/f73158657c8e876e8b3142d6064878b6af1c3525)) - Introduce `AsTransformer` attribute ([13b6d0](https://redirect.github.com/CuyZ/Valinor/commit/13b6d0186adbaafdd4474fc1dbdc725aa3ad8585)) ##### Bug Fixes - Handle single array mapping when a superfluous value is present ([86d021](https://redirect.github.com/CuyZ/Valinor/commit/86d021a2fdd9932554a2e41a08d19d8801371f6f)) - Properly handle `ArrayObject` normalization ([4f555d](https://redirect.github.com/CuyZ/Valinor/commit/4f555d9bc9de996b5c577396076b674e17fbb429)) - Properly handle class type with matching name and namespace ([0f5e96](https://redirect.github.com/CuyZ/Valinor/commit/0f5e96e6a7567465c623914d038342ba56875595)) - Properly handle nested unresolvable type during mapping ([194706](https://redirect.github.com/CuyZ/Valinor/commit/19470614fa99b97341975a44fdf034ff6e9a6f6d)) - Strengthen type tokens extraction ([c9dc97](https://redirect.github.com/CuyZ/Valinor/commit/c9dc975357319ae77d352e17979888b08690ddbc)) ##### Other - Reduce number of calls to class autoloader during type parsing ([0f0e35](https://redirect.github.com/CuyZ/Valinor/commit/0f0e35e71925bfb31ecd916766aca5492f12863d)) - Refactor generic types parsing and checking ([ba6770](https://redirect.github.com/CuyZ/Valinor/commit/ba67703ed19f5bf35467cc54606ebfd373e6aedc)) - Separate native type and docblock type for property and parameter ([37993b](https://redirect.github.com/CuyZ/Valinor/commit/37993b64a6eb04dc0aee79e03f2ddb4f86ff9c3a)) ### [`v1.10.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.10.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.9.0...1.10.0) #### Notable changes **Dropping support for PHP 8.0** PHP 8.0 security support has ended [on the 26th of November 2023](https://www.php.net/supported-versions.php). Therefore, we are dropping support for PHP 8.0 in this version. If any security issue was to be found, we might consider backporting the fix to the 1.9.x version if people need it, but we strongly recommend upgrading your application to a supported PHP version. **Introducing `Constructor` attribute** A long awaited feature has landed in the library! The `Constructor` attribute can be assigned to any method inside an object, to automatically mark the method as a constructor for the class. This is a more convenient way of registering constructors than using the `MapperBuilder::registerConstructor` method, although it does not replace it. The method targeted by a `Constructor` attribute must be public, static and return an instance of the class it is part of. ```php final readonly class Email { // When another constructor is registered for the class, the native // constructor is disabled. To enable it again, it is mandatory to // explicitly register it again. #[\CuyZ\Valinor\Mapper\Object\Constructor] public function __construct(public string $value) {} #[\CuyZ\Valinor\Mapper\Object\Constructor] public static function createFrom( string $userName, string $domainName ): self { return new self($userName . '@​' . $domainName); } } (new \CuyZ\Valinor\MapperBuilder()) ->mapper() ->map(Email::class, [ 'userName' => 'john.doe', 'domainName' => 'example.com', ]); // john.doe@example.com ``` ##### Features - Introduce `Constructor` attribute ([d86295](https://redirect.github.com/CuyZ/Valinor/commit/d86295c2fe2e7ea7ed37d00fd39f20f31a694129)) ##### Bug Fixes - Properly encode scalar value in JSON normalization ([2107ea](https://redirect.github.com/CuyZ/Valinor/commit/2107ea1847aaa925a47ce3465974b72810b24bea)) - Properly handle list type when input contains superfluous keys ([1b8efa](https://redirect.github.com/CuyZ/Valinor/commit/1b8efa1a90e46107e25079ce520f08642ccd65c6)) ##### Other - Drop support for PHP 8.0 ([dafcc8](https://redirect.github.com/CuyZ/Valinor/commit/dafcc80c6d135535c1dbeba9bcee641f5d0c0801)) - Improve internal definitions string types ([105281](https://redirect.github.com/CuyZ/Valinor/commit/105281b203af9c7290d0a2bd98a709748d00dc9a)) - Refactor file system cache to improve performance ([e692f0](https://redirect.github.com/CuyZ/Valinor/commit/e692f0d20ac8d252c57e236e4926bc8d9a72679b)) - Remove unneeded closure conversion ([972e65](https://redirect.github.com/CuyZ/Valinor/commit/972e6572b899db72d09dfa68dc4eae87a05a51f1)) - Update dependencies ([c5627f](https://redirect.github.com/CuyZ/Valinor/commit/c5627ffe735395ebc8e031e7313a483119d5128d)) ### [`v1.9.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.9.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.8.2...1.9.0) #### Notable changes **JSON normalizer** The normalizer is able to normalize a data structure to JSON without using the native `json_encode()` function. Using the normalizer instead of the native `json_encode()` function offers some benefits: - Values will be recursively normalized using the default transformations - All registered transformers will be applied to the data before it is formatted - The JSON can be streamed to a PHP resource in a memory-efficient way Basic usage: ```php namespace My\App; $normalizer = (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::json()); $userAsJson = $normalizer->normalize( new \My\App\User( name: 'John Doe', age: 42, country: new \My\App\Country( name: 'France', code: 'FR', ), ) ); // `$userAsJson` is a valid JSON string representing the data: // {"name":"John Doe","age":42,"country":{"name":"France","code":"FR"}} ``` By default, the JSON normalizer will return a JSON string representing the data it was given. Instead of getting a string, it is possible to stream the JSON data to a PHP resource: ```php $file = fopen('path/to/some_file.json', 'w'); $normalizer = (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::json()) ->streamTo($file); $normalizer->normalize(/* … */); // The file now contains the JSON data ``` Another benefit of streaming the data to a PHP resource is that it may be more memory-efficient when using generators — for instance when querying a database: ```php // In this example, we assume that the result of the query below is a // generator, every entry will be yielded one by one, instead of // everything being loaded in memory at once. $users = $database->execute('SELECT * FROM users'); $file = fopen('path/to/some_file.json', 'w'); $normalizer = (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::json()) ->streamTo($file); // Even if there are thousands of users, memory usage will be kept low // when writing JSON into the file. $normalizer->normalize($users); ``` ##### Features - Introduce JSON normalizer ([959740](https://redirect.github.com/CuyZ/Valinor/commit/9597407db04ff9d6e59ac8c6b8895d5fcf9caaa5)) ##### Bug Fixes - Add default transformer for `DateTimeZone` ([acf097](https://redirect.github.com/CuyZ/Valinor/commit/acf0976ae0f63604fef28240531048a9f5633375)) - Detect circular references linearly through objects ([36aead](https://redirect.github.com/CuyZ/Valinor/commit/36aead96bd8b5696a321bc2df7386aa16264ab58)) ##### Other - Refactor attribute definition to include class definition ([4b8cf6](https://redirect.github.com/CuyZ/Valinor/commit/4b8cf65080088c77c5257ae2e7da2d1fdee2fb2e)) ### [`v1.8.2`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.8.2) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.8.1...1.8.2) ##### Bug Fixes - Allow callable type to be compiled ([4a9771f](https://redirect.github.com/CuyZ/Valinor/commit/4a9771f72f48a4ac924218ca997e6030fa114c8f)) ### [`v1.8.1`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.8.1) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.8.0...1.8.1) ##### Bug Fixes - Properly detect namespaced class in docblock ([6f7c77](https://redirect.github.com/romm/Valinor/commit/6f7c77c362dc65765dd9ff020ddbd05b611d48b3)) ### [`v1.8.0`](https://redirect.github.com/CuyZ/Valinor/releases/tag/1.8.0) [Compare Source](https://redirect.github.com/CuyZ/Valinor/compare/1.7.0...1.8.0) #### Notable changes **Normalizer service (serialization)** This new service can be instantiated with the `MapperBuilder`. It allows transformation of a given input into scalar and array values, while preserving the original structure. This feature can be used to share information with other systems that use a data format (JSON, CSV, XML, etc.). The normalizer will take care of recursively transforming the data into a format that can be serialized. Below is a basic example, showing the transformation of objects into an array of scalar values. ```php namespace My\App; $normalizer = (new \CuyZ\Valinor\MapperBuilder()) ->normalizer(\CuyZ\Valinor\Normalizer\Format::array()); $userAsArray = $normalizer->normalize( new \My\App\User( name: 'John Doe', age: 42, country: new \My\App\Country( name: 'France', countryCode: 'FR', ), ) ); // `$userAsArray` is now an array and can be manipulated much more // easily, for instance to be serialized to the wanted data format. // // [ // 'name' => 'John Doe', // 'age' => 42, // 'country' => [ // 'name' => 'France', // 'countryCode' => 'FR', // ], // ]; ``` A normalizer can be extended by using so-called transformers, which can be either an attribute or any callable object. In the example below, a global transformer is used to format any date found by the normalizer. ```php (new \CuyZ\Valinor\MapperBuilder()) ->registerTransformer( fn (\DateTimeInterface $date) => $date->format('Y/m/d') ) ->normalizer(\CuyZ\Valinor\Normalizer\Format::array()) ->normalize( new \My\App\Event( eventName: 'Release of legendary album', date: new \DateTimeImmutable('1971-11-08'), ) ); // [ // 'eventName' => 'Release of legendary album', // 'date' => '1971/11/08', // ] ``` This date transformer could have been an attribute for a more granular control, as shown below. ```php namespace My\App; #[\Attribute(\Attribute::TARGET_PROPERTY)] final class DateTimeFormat { public function __construct(private string $format) {} public function normalize(\DateTimeInterface $date): string { return $date->format($this->format); } } final readonly class Event { public function __construct( public string $eventName, #[\My\App\DateTimeFormat('Y/m/d')] public \DateTimeInterface $date, ) {} } (new \CuyZ\Valinor\MapperBuilder()) ->registerTransformer(\My\App\DateTimeFormat::class) ->normalizer(\CuyZ\Valinor\Normalizer\Format::array()) ->normalize( new \My\App\Event( eventName: 'Release of legendary album', date: new \DateTimeImmutable('1971-11-08'), ) ); // [ // 'eventName' => 'Release of legendary album', // 'date' => '1971/11/08', // ] ``` *** More features are available, details about it can be found in the documentation. ##### Features - Introduce normalizer service ([1c9368](https://redirect.github.com/CuyZ/Valinor/commit/1c9368d79eb0664049d3554fd13d9da8dff08c05)) ##### Bug Fixes - Allow leading zeros in numeric string in flexible mode ([f000c1](https://redirect.github.com/CuyZ/Valinor/commit/f000c10d07dba9f12d1b7a8e98ff7e5cba44dce8)) - Allow mapping union of scalars and classes ([4f4af0](https://redirect.github.com/CuyZ/Valinor/commit/4f4af0ac1b20c7b59bc913a7dfd808dff718b6e2)) - Properly handle single-namespaced classes ([a53ef9](https://redirect.github.com/CuyZ/Valinor/commit/a53ef931c565bd3b2917269ca1d79c7f3a5fb672)) - Properly parse class name in same single-namespace ([a462fe](https://redirect.github.com/CuyZ/Valinor/commit/a462fe1539a6553af26583fc99f09dfb33b49959))

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.



This PR was generated by Mend Renovate. View the repository job log.

renovate[bot] commented 1 month ago

Branch automerge failure

This PR was configured for branch automerge. However, this is not possible, so it has been raised as a PR instead.


coveralls commented 1 month ago

Pull Request Test Coverage Report for Build 11499991306

Details


Totals Coverage Status
Change from base Build 11499973928: 0.0%
Covered Lines: 373
Relevant Lines: 1835

💛 - Coveralls