Skip to content

Commit 1f0b159

Browse files
committed
Fix merge logic for allOf alternatives
1 parent 7fefe49 commit 1f0b159

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

.changeset/tame-months-knock.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@gitbook/react-openapi': patch
3+
---
4+
5+
Fix merge logic for allOf alternatives

packages/react-openapi/src/OpenAPISchema.tsx

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -556,8 +556,10 @@ function mergeAlternatives(
556556
schemaOrRef.enum
557557
) {
558558
const keys = Object.keys(schemaOrRef);
559-
if (keys.every((key) => ['type', 'enum', 'nullable'].includes(key))) {
560-
latest.enum = Array.from(new Set([...latest.enum, ...schemaOrRef.enum]));
559+
if (keys.some((key) => ['type', 'enum', 'nullable'].includes(key))) {
560+
latest.enum = Array.from(
561+
new Set([...(latest.enum || []), ...(schemaOrRef.enum || [])])
562+
);
561563
latest.nullable = latest.nullable || schemaOrRef.nullable;
562564
return acc;
563565
}
@@ -566,18 +568,20 @@ function mergeAlternatives(
566568
if (latest && latest.type === 'object' && schemaOrRef.type === 'object') {
567569
const keys = Object.keys(schemaOrRef);
568570
if (
569-
keys.every((key) =>
571+
keys.some((key) =>
570572
['type', 'properties', 'required', 'nullable'].includes(key)
571573
)
572574
) {
573575
latest.properties = {
574-
...latest.properties,
575-
...schemaOrRef.properties,
576+
...(latest.properties || {}),
577+
...(schemaOrRef.properties || {}),
576578
};
577579
latest.required = Array.from(
578580
new Set([
579-
...(Array.isArray(latest.required) ? latest.required : []),
580-
...(Array.isArray(schemaOrRef.required)
581+
...(latest.required && Array.isArray(latest.required)
582+
? latest.required
583+
: []),
584+
...(schemaOrRef.required && Array.isArray(schemaOrRef.required)
581585
? schemaOrRef.required
582586
: []),
583587
])

0 commit comments

Comments
 (0)