Skip to content

Commit 4bdd4ff

Browse files
committed
fix: typing for attributes in web and node
1 parent 226c847 commit 4bdd4ff

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

src/SDK/Language/Node.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,19 @@ public function getTypeName(array $parameter, array $method = []): string
2929
case self::TYPE_NUMBER:
3030
return 'number';
3131
case self::TYPE_ARRAY:
32+
if (!empty($parameter['array']['x-anyOf'] ?? [])) {
33+
$unionTypes = [];
34+
foreach ($parameter['array']['x-anyOf'] as $refType) {
35+
if (isset($refType['$ref'])) {
36+
$refParts = explode('/', $refType['$ref']);
37+
$modelName = end($refParts);
38+
$unionTypes[] = 'Models.' . $this->toPascalCase($modelName);
39+
}
40+
}
41+
if (!empty($unionTypes)) {
42+
return '(' . implode(' | ', $unionTypes) . ')[]';
43+
}
44+
}
3245
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
3346
return $this->getTypeName($parameter['array']) . '[]';
3447
}

src/SDK/Language/Web.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,19 @@ public function getTypeName(array $parameter, array $method = []): string
194194
case self::TYPE_NUMBER:
195195
return 'number';
196196
case self::TYPE_ARRAY:
197+
if (!empty($parameter['array']['x-anyOf'] ?? [])) {
198+
$unionTypes = [];
199+
foreach ($parameter['array']['x-anyOf'] as $refType) {
200+
if (isset($refType['$ref'])) {
201+
$refParts = explode('/', $refType['$ref']);
202+
$modelName = end($refParts);
203+
$unionTypes[] = 'Models.' . $this->toPascalCase($modelName);
204+
}
205+
}
206+
if (!empty($unionTypes)) {
207+
return '(' . implode(' | ', $unionTypes) . ')[]';
208+
}
209+
}
197210
if (!empty(($parameter['array'] ?? [])['type']) && !\is_array($parameter['array']['type'])) {
198211
return $this->getTypeName($parameter['array']) . '[]';
199212
}

0 commit comments

Comments
 (0)