From 5efab0ee5c5a10fa9ef55d60339d3f8bd0015ffd Mon Sep 17 00:00:00 2001 From: Rick Bongers Date: Fri, 14 Nov 2025 15:24:35 +0100 Subject: [PATCH 1/3] enum support --- src/Types/Types.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Types/Types.php b/src/Types/Types.php index c26b9ef..23efda8 100644 --- a/src/Types/Types.php +++ b/src/Types/Types.php @@ -40,6 +40,7 @@ public function determineType(mixed $value) is_int($value) => self::NUMBER, is_float($value) => self::NUMBER, is_array($value) => $this->processArray($value), + $value instanceof \BackedEnum => $this->processEnum($value), $value instanceof ResourceCollection => TypescriptType::determineName($value->collects).'[]', $value instanceof JsonResource => TypescriptType::determineName(get_class($value)), $value instanceof Arrayable => $this->processArray($value->toArray()), // TODO: Test for this @@ -62,4 +63,9 @@ private function processArray(array $value) return $types->join('|').'[]'; } + + private function processEnum(\BackedEnum $value) + { + return join(' | ', Arr::map(array_column($value::cases(), 'value'), fn ($val) => is_string($val) ? "'$val'" : $val)); + } } From e4918a08feb6068c40e81f9aa347a5662917daa1 Mon Sep 17 00:00:00 2001 From: Rick Bongers Date: Fri, 14 Nov 2025 18:30:39 +0100 Subject: [PATCH 2/3] enum support --- tests/Fakes/Enums/TestEnum.php | 9 +++++++++ tests/Types/TypesTest.php | 2 ++ 2 files changed, 11 insertions(+) create mode 100644 tests/Fakes/Enums/TestEnum.php diff --git a/tests/Fakes/Enums/TestEnum.php b/tests/Fakes/Enums/TestEnum.php new file mode 100644 index 0000000..d441515 --- /dev/null +++ b/tests/Fakes/Enums/TestEnum.php @@ -0,0 +1,9 @@ + 'name', 'value' => 1], '{name:string,value:number}'], [['name' => 'name', 'values' => ['name' => 'value']], '{name:string,values:{name:string}}'], [(object) ['name' => 'name', 'value' => 1], '{name:string,value:number}'], + [TestEnum::VALUE_1, 'enum-value-1 | enum-value-2'], ]); From d204667428bbb99970d3e872a6a86e36f731d9c3 Mon Sep 17 00:00:00 2001 From: Rick Bongers Date: Thu, 15 Jan 2026 10:51:45 +0100 Subject: [PATCH 3/3] enum support --- tests/Types/TypesTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Types/TypesTest.php b/tests/Types/TypesTest.php index d735f56..11e614a 100644 --- a/tests/Types/TypesTest.php +++ b/tests/Types/TypesTest.php @@ -19,5 +19,5 @@ [['name' => 'name', 'value' => 1], '{name:string,value:number}'], [['name' => 'name', 'values' => ['name' => 'value']], '{name:string,values:{name:string}}'], [(object) ['name' => 'name', 'value' => 1], '{name:string,value:number}'], - [TestEnum::VALUE_1, 'enum-value-1 | enum-value-2'], + [TestEnum::VALUE_1, '\'enum-value-1\' | \'enum-value-2\''], ]);