From ddbb7e1a14f70d554ebf38b9d626c2ca1bd14641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=AF=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Fri, 14 Jul 2023 18:54:59 +0300 Subject: [PATCH 1/9] Add: attr emptyToNull. InvalidArgumentException --- composer.json | 2 +- composer.lock | 2 +- src/ArgumentsRepository.php | 2 +- src/Attributes/EmptyToNull.php | 16 +++++++++++ src/CacheGenerator/CacheGenerator.php | 1 + src/ClassRepository.php | 11 +++----- src/Contracts/ReflectionClassRepository.php | 2 +- src/Contracts/ReflectionProperty.php | 9 +++++-- src/Reflection/CacheReflectionClass.php | 5 ++-- src/Reflection/CacheReflectionProperty.php | 18 +++++++++++++ src/Reflection/RuntimeReflectionProperty.php | 15 ++++++++--- src/Reflection/Types/ArrayType.php | 2 ++ src/Reflection/Types/EnumType.php | 1 + src/Reflection/Types/PropertyType.php | 3 ++- src/Reflection/Types/PropertyTypeFactory.php | 22 ++++++++++----- src/Reflection/Types/ScalarType.php | 1 + src/Reflection/Types/TransformableType.php | 10 +++++++ src/ValueCasting.php | 28 +++++++++++++++++--- tests/Units/DTO/TypesDto.php | 3 +++ tests/Units/ValueCastingTest.php | 15 +++++++++++ 20 files changed, 139 insertions(+), 29 deletions(-) create mode 100644 src/Attributes/EmptyToNull.php diff --git a/composer.json b/composer.json index 3c12ac8..98984bd 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "yzen.dev/plain-to-class", - "version": "3.0.3", + "version": "3.0.4", "description": "Class-transformer to transform your dataset into a structured object", "minimum-stability": "dev", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index bc4682e..d23fbb9 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": "38393cf49708cbd2c627803180a174c8", + "content-hash": "fe8f42c900ac36a6eb10fd83777d6411", "packages": [], "packages-dev": [ { diff --git a/src/ArgumentsRepository.php b/src/ArgumentsRepository.php index 3da6161..efbcf2d 100644 --- a/src/ArgumentsRepository.php +++ b/src/ArgumentsRepository.php @@ -26,7 +26,7 @@ final class ArgumentsRepository /** * - * @param iterable|array ...$args + * @param iterable|object ...$args */ public function __construct(...$args) { diff --git a/src/Attributes/EmptyToNull.php b/src/Attributes/EmptyToNull.php new file mode 100644 index 0000000..7d64b79 --- /dev/null +++ b/src/Attributes/EmptyToNull.php @@ -0,0 +1,16 @@ +type, $property->hasSetMutator(), $property->notTransform(), + $property->convertEmptyToNull(), $property->getDocComment(), $args, $this->getAliases($args), diff --git a/src/ClassRepository.php b/src/ClassRepository.php index 6855b64..5ea9c06 100644 --- a/src/ClassRepository.php +++ b/src/ClassRepository.php @@ -3,8 +3,6 @@ namespace ClassTransformer; use ClassTransformer\Contracts\ReflectionProperty; -use ClassTransformer\Exceptions\ClassNotFoundException; -use ClassTransformer\Reflection\CacheReflectionProperty; use ClassTransformer\Contracts\ReflectionClassRepository; /** @@ -14,22 +12,21 @@ */ final class ClassRepository { - /** @var class-string $class */ + /** @var string $class */ private string $class; /** @var ReflectionClassRepository $class */ private ReflectionClassRepository $classRepository; /** - * @var array + * @var array */ private static array $propertiesTypesCache = []; /** - * @param class-string $class - * - * @throws ClassNotFoundException + * @param string $class + * @param ReflectionClassRepository $classRepository */ public function __construct( string $class, diff --git a/src/Contracts/ReflectionClassRepository.php b/src/Contracts/ReflectionClassRepository.php index 8ec6f8b..919f2fb 100644 --- a/src/Contracts/ReflectionClassRepository.php +++ b/src/Contracts/ReflectionClassRepository.php @@ -8,7 +8,7 @@ interface ReflectionClassRepository { /** - * @return array + * @return ReflectionProperty[] */ public function getProperties(): array; diff --git a/src/Contracts/ReflectionProperty.php b/src/Contracts/ReflectionProperty.php index 660e4ea..249f5f7 100644 --- a/src/Contracts/ReflectionProperty.php +++ b/src/Contracts/ReflectionProperty.php @@ -19,14 +19,14 @@ abstract class ReflectionProperty public PropertyType $type; /** - * @param string $name + * @param class-string $name * * @return mixed */ abstract public function getAttribute(string $name): mixed; /** - * @param string $name + * @param class-string $name * * @return null|array */ @@ -47,6 +47,11 @@ abstract public function hasSetMutator(): bool; */ abstract public function notTransform(): bool; + /** + * @return bool + */ + abstract public function convertEmptyToNull(): bool; + /** * @return array */ diff --git a/src/Reflection/CacheReflectionClass.php b/src/Reflection/CacheReflectionClass.php index fbbc976..e3d3b27 100644 --- a/src/Reflection/CacheReflectionClass.php +++ b/src/Reflection/CacheReflectionClass.php @@ -17,14 +17,15 @@ */ final class CacheReflectionClass implements ReflectionClassRepository { - /** @var class-string $class */ + /** @var string $class */ private string $class; /** @var array CacheReflectionProperty[] */ private array $properties; /** - * @param class-string $class + * @param string $class + * @param CacheReflectionProperty[] $properties */ public function __construct(string $class, array $properties) { diff --git a/src/Reflection/CacheReflectionProperty.php b/src/Reflection/CacheReflectionProperty.php index dee7514..c2ba740 100644 --- a/src/Reflection/CacheReflectionProperty.php +++ b/src/Reflection/CacheReflectionProperty.php @@ -14,6 +14,15 @@ final class CacheReflectionProperty extends \ClassTransformer\Contracts\ReflectionProperty { /** + * @param class-string $class + * @param class-string|string $name + * @param PropertyType $type + * @param bool $hasSetMutator + * @param bool $notTransform + * @param bool $convertEmptyToNull + * @param string $docComment + * @param array $attributes + * @param array $aliases */ public function __construct( public string $class, @@ -21,6 +30,7 @@ public function __construct( public PropertyType $type, public bool $hasSetMutator, public bool $notTransform, + public bool $convertEmptyToNull, public string $docComment, public array $attributes, public array $aliases, @@ -42,6 +52,14 @@ public function notTransform(): bool { return $this->notTransform; } + + /** + * @return bool + */ + public function convertEmptyToNull(): bool + { + return $this->convertEmptyToNull; + } /** * @param string $name diff --git a/src/Reflection/RuntimeReflectionProperty.php b/src/Reflection/RuntimeReflectionProperty.php index 9738174..e5f1709 100644 --- a/src/Reflection/RuntimeReflectionProperty.php +++ b/src/Reflection/RuntimeReflectionProperty.php @@ -4,6 +4,7 @@ namespace ClassTransformer\Reflection; +use ClassTransformer\Attributes\EmptyToNull; use ReflectionProperty; use ReflectionAttribute; use ClassTransformer\TransformUtils; @@ -58,7 +59,15 @@ public function notTransform(): bool } /** - * @param string $name + * @return bool + */ + public function convertEmptyToNull(): bool + { + return $this->getAttribute(EmptyToNull::class) !== null; + } + + /** + * @param class-string $name * * @template T * @return null|ReflectionAttribute @@ -77,11 +86,11 @@ public function getAttribute(string $name): ?ReflectionAttribute } /** - * @param string|null $name + * @param class-string $name * * @return null|array */ - public function getAttributeArguments(?string $name = null): ?array + public function getAttributeArguments(string $name): ?array { return $this->getAttribute($name)?->getArguments(); } diff --git a/src/Reflection/Types/ArrayType.php b/src/Reflection/Types/ArrayType.php index 4b1c7b2..a2bfe15 100644 --- a/src/Reflection/Types/ArrayType.php +++ b/src/Reflection/Types/ArrayType.php @@ -11,6 +11,8 @@ */ class ArrayType extends PropertyType { + /** @var string|class-string */ public string $itemsType; public bool $isScalarItems; + } diff --git a/src/Reflection/Types/EnumType.php b/src/Reflection/Types/EnumType.php index d8087e3..4c01eb3 100644 --- a/src/Reflection/Types/EnumType.php +++ b/src/Reflection/Types/EnumType.php @@ -5,6 +5,7 @@ /** * Class EnumType * + * @psalm-api * @author yzen.dev */ class EnumType extends PropertyType diff --git a/src/Reflection/Types/PropertyType.php b/src/Reflection/Types/PropertyType.php index e608e0b..05568ee 100644 --- a/src/Reflection/Types/PropertyType.php +++ b/src/Reflection/Types/PropertyType.php @@ -7,12 +7,13 @@ /** * Class PropertyType * + * @psalm-api * @author yzen.dev */ class PropertyType { /** - * @param string $name Name of type + * @param string|class-string $name Name of type * @param bool $isScalar * @param bool $isNullable */ diff --git a/src/Reflection/Types/PropertyTypeFactory.php b/src/Reflection/Types/PropertyTypeFactory.php index 245a112..2edd61c 100644 --- a/src/Reflection/Types/PropertyTypeFactory.php +++ b/src/Reflection/Types/PropertyTypeFactory.php @@ -32,7 +32,7 @@ public static function create(RuntimeReflectionProperty $property) $isNullable = true; if ($reflectionType instanceof ReflectionType) { - $type = $reflectionType; + $type = (string)$reflectionType; $isNullable = $reflectionType->allowsNull(); } if ($reflectionType instanceof ReflectionNamedType) { @@ -41,6 +41,14 @@ public static function create(RuntimeReflectionProperty $property) $isNullable = $reflectionType->allowsNull(); } + if ($property->notTransform()) { + return new ScalarType( + $type, + $isScalar, + $isNullable + ); + } + if ($type === TypeEnums::TYPE_ARRAY) { $arrayTypeAttr = $property->getAttributeArguments(ConvertArray::class); @@ -50,18 +58,19 @@ public static function create(RuntimeReflectionProperty $property) $arrayType = TransformUtils::getClassFromPhpDoc($property->getDocComment()); } $arrayType ??= TypeEnums::TYPE_MIXED; - $type = new ArrayType( + + $typeInstance = new ArrayType( $type, $isScalar, $isNullable ); - $type->itemsType = $arrayType ?? TypeEnums::TYPE_MIXED; - $type->isScalarItems = in_array($arrayType, [TypeEnums::TYPE_INTEGER, TypeEnums::TYPE_FLOAT, TypeEnums::TYPE_STRING, TypeEnums::TYPE_BOOLEAN, TypeEnums::TYPE_MIXED]); + $typeInstance->itemsType = $arrayType ?? TypeEnums::TYPE_MIXED; + $typeInstance->isScalarItems = in_array($arrayType, [TypeEnums::TYPE_INTEGER, TypeEnums::TYPE_FLOAT, TypeEnums::TYPE_STRING, TypeEnums::TYPE_BOOLEAN, TypeEnums::TYPE_MIXED]); - return $type; + return $typeInstance; } - if ($isScalar || $property->notTransform()) { + if ($isScalar) { return new ScalarType( $type, $isScalar, @@ -80,7 +89,6 @@ public static function create(RuntimeReflectionProperty $property) return new TransformableType( $type, $isScalar, - $isNullable ); } } diff --git a/src/Reflection/Types/ScalarType.php b/src/Reflection/Types/ScalarType.php index 98901b4..ea14aee 100644 --- a/src/Reflection/Types/ScalarType.php +++ b/src/Reflection/Types/ScalarType.php @@ -7,6 +7,7 @@ /** * Class ScalarType * + * @psalm-api * @author yzen.dev */ class ScalarType extends PropertyType diff --git a/src/Reflection/Types/TransformableType.php b/src/Reflection/Types/TransformableType.php index 244d3ca..eac1427 100644 --- a/src/Reflection/Types/TransformableType.php +++ b/src/Reflection/Types/TransformableType.php @@ -11,4 +11,14 @@ */ class TransformableType extends PropertyType { + /** + * @param class-string $name Name of type + * @param bool $isNullable + */ + public function __construct( + public string $name, + public bool $isNullable + ) { + parent::__construct($this->name, false, $isNullable); + } } diff --git a/src/ValueCasting.php b/src/ValueCasting.php index bebe006..5676c7e 100644 --- a/src/ValueCasting.php +++ b/src/ValueCasting.php @@ -10,7 +10,7 @@ use ClassTransformer\Reflection\Types\ArrayType; use ClassTransformer\Contracts\ReflectionProperty; use ClassTransformer\Exceptions\ClassNotFoundException; -use ClassTransformer\Reflection\Types\TransformableType; +use ClassTransformer\Exceptions\InvalidArgumentException; use function array_map; use function is_array; @@ -44,6 +44,7 @@ public function __construct(ReflectionProperty $property, HydratorConfig $config * * @return mixed * @throws ClassNotFoundException|RuntimeException + * @throws InvalidArgumentException */ public function castAttribute(mixed $value): mixed { @@ -51,7 +52,15 @@ public function castAttribute(mixed $value): mixed return null; } - if (($this->property->type->isScalar && !$this->property->type instanceof ArrayType) || $this->property->notTransform()) { + if (($value === '' || $value === []) && $this->property->convertEmptyToNull()) { + return null; + } + + if ($this->property->notTransform() || $this->property->type->name === TypeEnums::TYPE_MIXED) { + return $value; + } + + if (in_array($this->property->type->name, [TypeEnums::TYPE_STRING, TypeEnums::TYPE_INTEGER, TypeEnums::TYPE_FLOAT, TypeEnums::TYPE_BOOLEAN])) { return $this->castScalar($this->property->type->name, $value); } @@ -73,15 +82,23 @@ public function castAttribute(mixed $value): mixed * @param mixed $value * * @return mixed + * @throws InvalidArgumentException */ private function castScalar(string $type, mixed $value): mixed { + + $providedType = gettype($value); + + if ($this->property->type->name !== TypeEnums::TYPE_MIXED && !in_array($providedType, ['integer', 'string', 'boolean', 'double'])) { + throw new InvalidArgumentException('Parameter `' . $this->property->name . '` expected type `' . $type . '`, `' . $providedType . '` provided'); + } + return match ($type) { TypeEnums::TYPE_STRING => (string)$value, TypeEnums::TYPE_INTEGER => (int)$value, TypeEnums::TYPE_FLOAT => (float)$value, TypeEnums::TYPE_BOOLEAN => (bool)$value, - default => $value + TypeEnums::TYPE_MIXED => $value, }; } @@ -90,6 +107,7 @@ private function castScalar(string $type, mixed $value): mixed * * @return array|mixed * @throws ClassNotFoundException + * @throws InvalidArgumentException */ private function castArray($value): mixed { @@ -100,6 +118,10 @@ private function castArray($value): mixed return array_map(fn($el) => (new Hydrator($this->config))->create($this->property->type->itemsType, $el), $value); } + if ($this->property->type->itemsType === TypeEnums::TYPE_MIXED) { + return $value; + } + return array_map(fn($item) => $this->castScalar($this->property->type->itemsType, $item), $value); } diff --git a/tests/Units/DTO/TypesDto.php b/tests/Units/DTO/TypesDto.php index 4819397..96caeff 100644 --- a/tests/Units/DTO/TypesDto.php +++ b/tests/Units/DTO/TypesDto.php @@ -4,6 +4,7 @@ namespace Tests\Units\DTO; +use ClassTransformer\Attributes\EmptyToNull; use ClassTransformer\Attributes\WritingStyle; class TypesDto @@ -11,6 +12,8 @@ class TypesDto public ?int $nullableInt; public ?string $nullableString; + #[EmptyToNull] + public ?string $emptyString; public ?float $nullableFloat; public ?bool $nullableBool; diff --git a/tests/Units/ValueCastingTest.php b/tests/Units/ValueCastingTest.php index 320edd0..56eed06 100644 --- a/tests/Units/ValueCastingTest.php +++ b/tests/Units/ValueCastingTest.php @@ -2,6 +2,7 @@ namespace Tests\Units; +use ClassTransformer\Exceptions\InvalidArgumentException; use ClassTransformer\ValueCasting; use PHPUnit\Framework\TestCase; use Tests\Units\DTO\ExtendedDto; @@ -11,6 +12,15 @@ class ValueCastingTest extends TestCase { + public function testCreateNotValidProperty(): void + { + $this->expectException(InvalidArgumentException::class); + $caster = new ValueCasting( + new RuntimeReflectionProperty(new \ReflectionProperty(ExtendedDto::class, 'id')) + ); + $caster->castAttribute([1,2]); + } + public function testCreateProperty(): void { $caster = new ValueCasting( @@ -56,6 +66,10 @@ public function testCreateProperty(): void $caster = new ValueCasting(new RuntimeReflectionProperty(new \ReflectionProperty(TypesDto::class, 'nullableString'))); $value = $caster->castAttribute(null); $this->assertNull($value); + + $caster = new ValueCasting(new RuntimeReflectionProperty(new \ReflectionProperty(TypesDto::class, 'emptyString'))); + $value = $caster->castAttribute(''); + $this->assertNull($value); $caster = new ValueCasting(new RuntimeReflectionProperty(new \ReflectionProperty(TypesDto::class, 'nullableFloat'))); $value = $caster->castAttribute(null); @@ -64,6 +78,7 @@ public function testCreateProperty(): void $caster = new ValueCasting(new RuntimeReflectionProperty(new \ReflectionProperty(TypesDto::class, 'nullableBool'))); $value = $caster->castAttribute(null); $this->assertNull($value); + } public function testCreateArrayProperty(): void From 7ae15d52c4dc903dd25ba29e7e5871d809c5ea8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=AF=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Fri, 14 Jul 2023 18:56:39 +0300 Subject: [PATCH 2/9] fix code style --- src/Reflection/CacheReflectionProperty.php | 2 +- src/Reflection/Types/ArrayType.php | 1 - src/Reflection/Types/PropertyTypeFactory.php | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/Reflection/CacheReflectionProperty.php b/src/Reflection/CacheReflectionProperty.php index c2ba740..8de1b8f 100644 --- a/src/Reflection/CacheReflectionProperty.php +++ b/src/Reflection/CacheReflectionProperty.php @@ -52,7 +52,7 @@ public function notTransform(): bool { return $this->notTransform; } - + /** * @return bool */ diff --git a/src/Reflection/Types/ArrayType.php b/src/Reflection/Types/ArrayType.php index a2bfe15..f4c534d 100644 --- a/src/Reflection/Types/ArrayType.php +++ b/src/Reflection/Types/ArrayType.php @@ -14,5 +14,4 @@ class ArrayType extends PropertyType /** @var string|class-string */ public string $itemsType; public bool $isScalarItems; - } diff --git a/src/Reflection/Types/PropertyTypeFactory.php b/src/Reflection/Types/PropertyTypeFactory.php index 2edd61c..9b9931b 100644 --- a/src/Reflection/Types/PropertyTypeFactory.php +++ b/src/Reflection/Types/PropertyTypeFactory.php @@ -58,7 +58,7 @@ public static function create(RuntimeReflectionProperty $property) $arrayType = TransformUtils::getClassFromPhpDoc($property->getDocComment()); } $arrayType ??= TypeEnums::TYPE_MIXED; - + $typeInstance = new ArrayType( $type, $isScalar, From 593572f3ab6dcbaf2ae856dcabd19e896392c77c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Tatarynowicz?= Date: Tue, 1 Aug 2023 13:30:56 +0200 Subject: [PATCH 3/9] Fix first example in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index e216c7a..2fbbdf7 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ var_dump($dto); Result: ```php -object(\LoginDTO) +object(\CreateUserDTO) 'email' => string(13) "test@mail.com" 'balance' => float(128.41) ``` From add8ce1fe6a66cdd49aaa48b2d35704e8a415266 Mon Sep 17 00:00:00 2001 From: Volodymyr Hordiienko Date: Sat, 11 Nov 2023 18:48:37 +0200 Subject: [PATCH 4/9] Allow ConvertArray attribute target properties --- src/Attributes/ConvertArray.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Attributes/ConvertArray.php b/src/Attributes/ConvertArray.php index 15e5512..fe0ea8e 100644 --- a/src/Attributes/ConvertArray.php +++ b/src/Attributes/ConvertArray.php @@ -11,7 +11,7 @@ * * @psalm-api */ -#[Attribute(Attribute::TARGET_PARAMETER)] +#[Attribute(Attribute::TARGET_PARAMETER | Attribute::TARGET_PROPERTY)] final class ConvertArray { /** From 579fcb0fb839067e6d47cdc27b0860e4576ac5b7 Mon Sep 17 00:00:00 2001 From: Volodymyr Hordiienko Date: Sun, 12 Nov 2023 15:19:31 +0200 Subject: [PATCH 5/9] Update EmptyToNull.php --- src/Attributes/EmptyToNull.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Attributes/EmptyToNull.php b/src/Attributes/EmptyToNull.php index 7d64b79..ff7ba77 100644 --- a/src/Attributes/EmptyToNull.php +++ b/src/Attributes/EmptyToNull.php @@ -10,7 +10,7 @@ * * @psalm-api */ -#[Attribute(Attribute::TARGET_PARAMETER)] +#[Attribute(Attribute::TARGET_PARAMETER | Attribute::TARGET_PROPERTY)] final class EmptyToNull { } From 85469827982c4d113b01d6a461483caf2b7f6298 Mon Sep 17 00:00:00 2001 From: Volodymyr Hordiienko Date: Sun, 12 Nov 2023 15:19:41 +0200 Subject: [PATCH 6/9] Update FieldAlias.php --- src/Attributes/FieldAlias.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Attributes/FieldAlias.php b/src/Attributes/FieldAlias.php index fdd4abb..e2d7ae5 100644 --- a/src/Attributes/FieldAlias.php +++ b/src/Attributes/FieldAlias.php @@ -9,7 +9,7 @@ /** * @psalm-api */ -#[Attribute(Attribute::TARGET_PARAMETER)] +#[Attribute(Attribute::TARGET_PARAMETER | Attribute::TARGET_PROPERTY)] final class FieldAlias { /** From 1c8b38ec399d5603c0fda60736db92f1f1a671dd Mon Sep 17 00:00:00 2001 From: Volodymyr Hordiienko Date: Sun, 12 Nov 2023 15:19:51 +0200 Subject: [PATCH 7/9] Update NotTransform.php --- src/Attributes/NotTransform.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Attributes/NotTransform.php b/src/Attributes/NotTransform.php index 4e8f751..6d9d52e 100644 --- a/src/Attributes/NotTransform.php +++ b/src/Attributes/NotTransform.php @@ -11,7 +11,7 @@ * * @psalm-api */ -#[Attribute(Attribute::TARGET_PARAMETER)] +#[Attribute(Attribute::TARGET_PARAMETER | Attribute::TARGET_PROPERTY)] final class NotTransform { } From 26eafefce853c1d7d3b4371b3ec17ad43086c9b6 Mon Sep 17 00:00:00 2001 From: Volodymyr Hordiienko Date: Sun, 12 Nov 2023 15:20:02 +0200 Subject: [PATCH 8/9] Update WritingStyle.php --- src/Attributes/WritingStyle.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Attributes/WritingStyle.php b/src/Attributes/WritingStyle.php index 4d42e40..60c84a0 100644 --- a/src/Attributes/WritingStyle.php +++ b/src/Attributes/WritingStyle.php @@ -11,7 +11,7 @@ * * @psalm-api */ -#[Attribute(Attribute::TARGET_PARAMETER)] +#[Attribute(Attribute::TARGET_PARAMETER | Attribute::TARGET_PROPERTY)] final class WritingStyle { /** Check all possible styles */ From c094916743802e2bf025bda4623ebc6dbcabb3a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BD=D0=B4=D1=80=D0=B5=D0=B9=20=D0=AF=D1=86=D0=B5?= =?UTF-8?q?=D0=BD=D0=BA=D0=BE?= Date: Wed, 15 Nov 2023 18:32:39 +0300 Subject: [PATCH 9/9] composer update --- composer.json | 2 +- composer.lock | 392 ++++++++++++++++++++++++++------------------------ 2 files changed, 203 insertions(+), 191 deletions(-) diff --git a/composer.json b/composer.json index 98984bd..d9e1407 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "yzen.dev/plain-to-class", - "version": "3.0.4", + "version": "3.0.5", "description": "Class-transformer to transform your dataset into a structured object", "minimum-stability": "dev", "prefer-stable": true, diff --git a/composer.lock b/composer.lock index d23fbb9..8349b4f 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": "fe8f42c900ac36a6eb10fd83777d6411", + "content-hash": "0c65ba8a4a6a03d51bd17edabacb6623", "packages": [], "packages-dev": [ { @@ -266,16 +266,16 @@ }, { "name": "composer/pcre", - "version": "3.1.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2" + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", - "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2", + "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9", + "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9", "shasum": "" }, "require": { @@ -317,7 +317,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.0" + "source": "https://github.com/composer/pcre/tree/3.1.1" }, "funding": [ { @@ -333,20 +333,20 @@ "type": "tidelift" } ], - "time": "2022-11-17T09:50:14+00:00" + "time": "2023-10-11T07:11:09+00:00" }, { "name": "composer/semver", - "version": "3.3.2", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", - "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", + "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", "shasum": "" }, "require": { @@ -396,9 +396,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.0" }, "funding": [ { @@ -414,7 +414,7 @@ "type": "tidelift" } ], - "time": "2022-04-01T19:23:25+00:00" + "time": "2023-08-31T09:50:34+00:00" }, { "name": "composer/xdebug-handler", @@ -597,16 +597,16 @@ }, { "name": "doctrine/deprecations", - "version": "v1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", - "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931", + "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931", "shasum": "" }, "require": { @@ -638,9 +638,9 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" + "source": "https://github.com/doctrine/deprecations/tree/1.1.2" }, - "time": "2023-06-03T09:27:29+00:00" + "time": "2023-09-27T20:04:15+00:00" }, { "name": "doctrine/lexer", @@ -1243,16 +1243,16 @@ }, { "name": "justinrainbow/json-schema", - "version": "5.2.12", + "version": "v5.2.13", "source": { "type": "git", "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60" + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", - "reference": "ad87d5a5ca981228e0e205c2bc7dfb8e24559b60", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", + "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", "shasum": "" }, "require": { @@ -1307,9 +1307,9 @@ ], "support": { "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.12" + "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" }, - "time": "2022-04-13T08:02:27+00:00" + "time": "2023-09-26T02:20:38+00:00" }, { "name": "mockery/mockery", @@ -1495,16 +1495,16 @@ }, { "name": "nikic/php-parser", - "version": "v4.16.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/19526a33fb561ef417e822e85f08a00db4059c17", - "reference": "19526a33fb561ef417e822e85f08a00db4059c17", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -1545,38 +1545,38 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.16.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2023-06-25T14:52:30+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "ocramius/package-versions", - "version": "2.7.0", + "version": "2.8.0", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "065921ed7cb2a6861443d91138d0a4378316af8d" + "reference": "7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/065921ed7cb2a6861443d91138d0a4378316af8d", - "reference": "065921ed7cb2a6861443d91138d0a4378316af8d", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e", + "reference": "7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e", "shasum": "" }, "require": { "composer-runtime-api": "^2.2.0", - "php": "~8.1.0 || ~8.2.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0" }, "replace": { "composer/package-versions-deprecated": "*" }, "require-dev": { - "composer/composer": "^2.4.4", - "doctrine/coding-standard": "^10.0.0", + "composer/composer": "^2.6.3", + "doctrine/coding-standard": "^12.0.0", "ext-zip": "^1.15.0", - "phpunit/phpunit": "^9.5.26", - "roave/infection-static-analysis-plugin": "^1.25.0", - "vimeo/psalm": "^4.29.0" + "phpunit/phpunit": "^9.6.12", + "roave/infection-static-analysis-plugin": "^1.33", + "vimeo/psalm": "^5.15.0" }, "type": "library", "autoload": { @@ -1597,7 +1597,7 @@ "description": "Provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/Ocramius/PackageVersions/issues", - "source": "https://github.com/Ocramius/PackageVersions/tree/2.7.0" + "source": "https://github.com/Ocramius/PackageVersions/tree/2.8.0" }, "funding": [ { @@ -1609,7 +1609,7 @@ "type": "tidelift" } ], - "time": "2022-10-31T12:51:46+00:00" + "time": "2023-09-15T11:02:59+00:00" }, { "name": "ondram/ci-detector", @@ -1802,21 +1802,21 @@ }, { "name": "phpbench/container", - "version": "2.2.1", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/phpbench/container.git", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392" + "reference": "a59b929e00b87b532ca6d0edd8eca0967655af33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpbench/container/zipball/6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", - "reference": "6d555ff7174fca13f9b1ec0b4a089ed41d0ab392", + "url": "https://api.github.com/repos/phpbench/container/zipball/a59b929e00b87b532ca6d0edd8eca0967655af33", + "reference": "a59b929e00b87b532ca6d0edd8eca0967655af33", "shasum": "" }, "require": { "psr/container": "^1.0|^2.0", - "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0" + "symfony/options-resolver": "^4.2 || ^5.0 || ^6.0 || ^7.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.16", @@ -1847,9 +1847,9 @@ "description": "Simple, configurable, service container.", "support": { "issues": "https://github.com/phpbench/container/issues", - "source": "https://github.com/phpbench/container/tree/2.2.1" + "source": "https://github.com/phpbench/container/tree/2.2.2" }, - "time": "2022-01-25T10:17:35+00:00" + "time": "2023-10-30T13:38:26+00:00" }, { "name": "phpbench/dom", @@ -2104,16 +2104,16 @@ }, { "name": "phpdocumentor/type-resolver", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d" + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2fe4d22a5426f38e014855322200b97b5362c0d", - "reference": "b2fe4d22a5426f38e014855322200b97b5362c0d", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", + "reference": "3219c6ee25c9ea71e3d9bbaf39c67c9ebd499419", "shasum": "" }, "require": { @@ -2156,22 +2156,22 @@ "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.2" + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.7.3" }, - "time": "2023-05-30T18:13:47+00:00" + "time": "2023-08-12T11:01:26+00:00" }, { "name": "phpstan/phpdoc-parser", - "version": "1.22.1", + "version": "1.24.2", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0" + "reference": "bcad8d995980440892759db0c32acae7c8e79442" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/65c39594fbd8c67abfc68bb323f86447bab79cc0", - "reference": "65c39594fbd8c67abfc68bb323f86447bab79cc0", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bcad8d995980440892759db0c32acae7c8e79442", + "reference": "bcad8d995980440892759db0c32acae7c8e79442", "shasum": "" }, "require": { @@ -2203,22 +2203,22 @@ "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.22.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.2" }, - "time": "2023-06-29T20:46:06+00:00" + "time": "2023-09-26T12:28:12+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.2", + "version": "10.1.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" + "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", - "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/84838eed9ded511f61dc3e8b5944a52d9017b297", + "reference": "84838eed9ded511f61dc3e8b5944a52d9017b297", "shasum": "" }, "require": { @@ -2275,7 +2275,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.8" }, "funding": [ { @@ -2283,20 +2283,20 @@ "type": "github" } ], - "time": "2023-05-22T09:04:27+00:00" + "time": "2023-11-15T13:31:15+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.0.2", + "version": "4.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "5647d65443818959172645e7ed999217360654b6" + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", - "reference": "5647d65443818959172645e7ed999217360654b6", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", + "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", "shasum": "" }, "require": { @@ -2336,7 +2336,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" }, "funding": [ { @@ -2344,7 +2344,7 @@ "type": "github" } ], - "time": "2023-05-07T09:13:23+00:00" + "time": "2023-08-31T06:24:48+00:00" }, { "name": "phpunit/php-invoker", @@ -2411,16 +2411,16 @@ }, { "name": "phpunit/php-text-template", - "version": "3.0.0", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", - "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", "shasum": "" }, "require": { @@ -2458,7 +2458,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" }, "funding": [ { @@ -2466,7 +2467,7 @@ "type": "github" } ], - "time": "2023-02-03T06:56:46+00:00" + "time": "2023-08-31T14:07:24+00:00" }, { "name": "phpunit/php-timer", @@ -2833,31 +2834,37 @@ }, { "name": "sanmai/later", - "version": "0.1.2", + "version": "0.1.3", "source": { "type": "git", "url": "https://github.com/sanmai/later.git", - "reference": "9b659fecef2030193fd02402955bc39629d5606f" + "reference": "88a1d39965aa3659ceb96622e2801b9194d16e2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/later/zipball/9b659fecef2030193fd02402955bc39629d5606f", - "reference": "9b659fecef2030193fd02402955bc39629d5606f", + "url": "https://api.github.com/repos/sanmai/later/zipball/88a1d39965aa3659ceb96622e2801b9194d16e2c", + "reference": "88a1d39965aa3659ceb96622e2801b9194d16e2c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.13", - "infection/infection": ">=0.10.5", + "ergebnis/composer-normalize": "^2.8", + "friendsofphp/php-cs-fixer": "^3.35.1", + "infection/infection": ">=0.27.6", "phan/phan": ">=2", "php-coveralls/php-coveralls": "^2.0", - "phpstan/phpstan": ">=0.10", - "phpunit/phpunit": ">=7.4", + "phpstan/phpstan": ">=1.4.5", + "phpunit/phpunit": ">=9.5 <10", "vimeo/psalm": ">=2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.1.x-dev" + } + }, "autoload": { "files": [ "src/functions.php" @@ -2879,7 +2886,7 @@ "description": "Later: deferred wrapper object", "support": { "issues": "https://github.com/sanmai/later/issues", - "source": "https://github.com/sanmai/later/tree/0.1.2" + "source": "https://github.com/sanmai/later/tree/0.1.3" }, "funding": [ { @@ -2887,20 +2894,20 @@ "type": "github" } ], - "time": "2021-01-02T10:26:44+00:00" + "time": "2023-10-23T13:38:10+00:00" }, { "name": "sanmai/pipeline", - "version": "v6.8.1", + "version": "v6.9", "source": { "type": "git", "url": "https://github.com/sanmai/pipeline.git", - "reference": "2e88e466dd49f20c10a15330b3953d4d49c326e3" + "reference": "c48f45c22c3ce4140d071f7658fb151df1cc08ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/pipeline/zipball/2e88e466dd49f20c10a15330b3953d4d49c326e3", - "reference": "2e88e466dd49f20c10a15330b3953d4d49c326e3", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/c48f45c22c3ce4140d071f7658fb151df1cc08ea", + "reference": "c48f45c22c3ce4140d071f7658fb151df1cc08ea", "shasum": "" }, "require": { @@ -2944,7 +2951,7 @@ "description": "General-purpose collections pipeline", "support": { "issues": "https://github.com/sanmai/pipeline/issues", - "source": "https://github.com/sanmai/pipeline/tree/v6.8.1" + "source": "https://github.com/sanmai/pipeline/tree/v6.9" }, "funding": [ { @@ -2952,7 +2959,7 @@ "type": "github" } ], - "time": "2023-06-15T09:14:47+00:00" + "time": "2023-10-08T11:56:54+00:00" }, { "name": "sebastian/cli-parser", @@ -3123,16 +3130,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.0", + "version": "5.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" + "reference": "2db5010a484d53ebf536087a70b4a5423c102372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", - "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", + "reference": "2db5010a484d53ebf536087a70b4a5423c102372", "shasum": "" }, "require": { @@ -3143,7 +3150,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^10.3" }, "type": "library", "extra": { @@ -3187,7 +3194,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" }, "funding": [ { @@ -3195,20 +3203,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:16+00:00" + "time": "2023-08-14T13:18:12+00:00" }, { "name": "sebastian/complexity", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", - "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68cfb347a44871f01e33ab0ef8215966432f6957", + "reference": "68cfb347a44871f01e33ab0ef8215966432f6957", "shasum": "" }, "require": { @@ -3221,7 +3229,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-main": "3.1-dev" } }, "autoload": { @@ -3244,7 +3252,8 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/3.1.0" }, "funding": [ { @@ -3252,7 +3261,7 @@ "type": "github" } ], - "time": "2023-02-03T06:59:47+00:00" + "time": "2023-09-28T11:50:59+00:00" }, { "name": "sebastian/diff", @@ -3387,16 +3396,16 @@ }, { "name": "sebastian/exporter", - "version": "5.0.0", + "version": "5.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", - "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", "shasum": "" }, "require": { @@ -3410,7 +3419,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-main": "5.1-dev" } }, "autoload": { @@ -3452,7 +3461,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" }, "funding": [ { @@ -3460,20 +3470,20 @@ "type": "github" } ], - "time": "2023-02-03T07:06:49+00:00" + "time": "2023-09-24T13:22:09+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.0", + "version": "6.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "aab257c712de87b90194febd52e4d184551c2d44" + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", - "reference": "aab257c712de87b90194febd52e4d184551c2d44", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", "shasum": "" }, "require": { @@ -3513,7 +3523,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" }, "funding": [ { @@ -3521,20 +3532,20 @@ "type": "github" } ], - "time": "2023-02-03T07:07:38+00:00" + "time": "2023-07-19T07:19:23+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", - "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/649e40d279e243d985aa8fb6e74dd5bb28dc185d", + "reference": "649e40d279e243d985aa8fb6e74dd5bb28dc185d", "shasum": "" }, "require": { @@ -3570,7 +3581,8 @@ "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/2.0.0" + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.1" }, "funding": [ { @@ -3578,7 +3590,7 @@ "type": "github" } ], - "time": "2023-02-03T07:08:02+00:00" + "time": "2023-08-31T09:25:50+00:00" }, { "name": "sebastian/object-enumerator", @@ -3930,16 +3942,16 @@ }, { "name": "spatie/array-to-xml", - "version": "3.1.6", + "version": "3.2.2", "source": { "type": "git", "url": "https://github.com/spatie/array-to-xml.git", - "reference": "e210b98957987c755372465be105d32113f339a4" + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/e210b98957987c755372465be105d32113f339a4", - "reference": "e210b98957987c755372465be105d32113f339a4", + "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8", + "reference": "96be97e664c87613121d073ea39af4c74e57a7f8", "shasum": "" }, "require": { @@ -3977,7 +3989,7 @@ "xml" ], "support": { - "source": "https://github.com/spatie/array-to-xml/tree/3.1.6" + "source": "https://github.com/spatie/array-to-xml/tree/3.2.2" }, "funding": [ { @@ -3989,7 +4001,7 @@ "type": "github" } ], - "time": "2023-05-11T14:04:07+00:00" + "time": "2023-11-14T14:08:51+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -4049,16 +4061,16 @@ }, { "name": "symfony/console", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7" + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", - "reference": "8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7", + "url": "https://api.github.com/repos/symfony/console/zipball/0d14a9f6d04d4ac38a8cea1171f4554e325dae92", + "reference": "0d14a9f6d04d4ac38a8cea1171f4554e325dae92", "shasum": "" }, "require": { @@ -4119,7 +4131,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.3.0" + "source": "https://github.com/symfony/console/tree/v6.3.8" }, "funding": [ { @@ -4135,7 +4147,7 @@ "type": "tidelift" } ], - "time": "2023-05-29T12:49:39+00:00" + "time": "2023-10-31T08:09:35+00:00" }, { "name": "symfony/deprecation-contracts", @@ -4269,16 +4281,16 @@ }, { "name": "symfony/finder", - "version": "v6.3.0", + "version": "v6.3.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2" + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/d9b01ba073c44cef617c7907ce2419f8d00d75e2", - "reference": "d9b01ba073c44cef617c7907ce2419f8d00d75e2", + "url": "https://api.github.com/repos/symfony/finder/zipball/a1b31d88c0e998168ca7792f222cbecee47428c4", + "reference": "a1b31d88c0e998168ca7792f222cbecee47428c4", "shasum": "" }, "require": { @@ -4313,7 +4325,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.3.0" + "source": "https://github.com/symfony/finder/tree/v6.3.5" }, "funding": [ { @@ -4329,7 +4341,7 @@ "type": "tidelift" } ], - "time": "2023-04-02T01:25:41+00:00" + "time": "2023-09-26T12:56:25+00:00" }, { "name": "symfony/options-resolver", @@ -4400,16 +4412,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb" }, "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/ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", + "reference": "ea208ce43cbb04af6867b4fdddb1bdbf84cc28cb", "shasum": "" }, "require": { @@ -4424,7 +4436,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4462,7 +4474,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.28.0" }, "funding": [ { @@ -4478,20 +4490,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "511a08c03c1960e08a883f4cffcacd219b758354" + "reference": "875e90aeea2777b6f135677f618529449334a612" }, "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/875e90aeea2777b6f135677f618529449334a612", + "reference": "875e90aeea2777b6f135677f618529449334a612", "shasum": "" }, "require": { @@ -4503,7 +4515,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4543,7 +4555,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.28.0" }, "funding": [ { @@ -4559,20 +4571,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92" }, "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/8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", + "reference": "8c4ad05dd0120b6a53c1ca374dca2ad0a1c4ed92", "shasum": "" }, "require": { @@ -4584,7 +4596,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4627,7 +4639,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.28.0" }, "funding": [ { @@ -4643,20 +4655,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-01-26T09:26:14+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.27.0", + "version": "v1.28.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" + "reference": "42292d99c55abe617799667f454222c54c60e229" }, "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/42292d99c55abe617799667f454222c54c60e229", + "reference": "42292d99c55abe617799667f454222c54c60e229", "shasum": "" }, "require": { @@ -4671,7 +4683,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.27-dev" + "dev-main": "1.28-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4710,7 +4722,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.28.0" }, "funding": [ { @@ -4726,20 +4738,20 @@ "type": "tidelift" } ], - "time": "2022-11-03T14:55:06+00:00" + "time": "2023-07-28T09:04:16+00:00" }, { "name": "symfony/process", - "version": "v6.3.0", + "version": "v6.3.4", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628" + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/8741e3ed7fe2e91ec099e02446fb86667a0f1628", - "reference": "8741e3ed7fe2e91ec099e02446fb86667a0f1628", + "url": "https://api.github.com/repos/symfony/process/zipball/0b5c29118f2e980d455d2e34a5659f4579847c54", + "reference": "0b5c29118f2e980d455d2e34a5659f4579847c54", "shasum": "" }, "require": { @@ -4771,7 +4783,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.3.0" + "source": "https://github.com/symfony/process/tree/v6.3.4" }, "funding": [ { @@ -4787,7 +4799,7 @@ "type": "tidelift" } ], - "time": "2023-05-19T08:06:44+00:00" + "time": "2023-08-07T10:39:22+00:00" }, { "name": "symfony/service-contracts", @@ -4873,16 +4885,16 @@ }, { "name": "symfony/string", - "version": "v6.3.0", + "version": "v6.3.8", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f" + "reference": "13880a87790c76ef994c91e87efb96134522577a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/f2e190ee75ff0f5eced645ec0be5c66fac81f51f", - "reference": "f2e190ee75ff0f5eced645ec0be5c66fac81f51f", + "url": "https://api.github.com/repos/symfony/string/zipball/13880a87790c76ef994c91e87efb96134522577a", + "reference": "13880a87790c76ef994c91e87efb96134522577a", "shasum": "" }, "require": { @@ -4939,7 +4951,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.3.0" + "source": "https://github.com/symfony/string/tree/v6.3.8" }, "funding": [ { @@ -4955,7 +4967,7 @@ "type": "tidelift" } ], - "time": "2023-03-21T21:06:29+00:00" + "time": "2023-11-09T08:28:21+00:00" }, { "name": "symfony/var-dumper", @@ -5451,5 +5463,5 @@ "php": "^8.0" }, "platform-dev": [], - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.6.0" }