+10
-4
packages/openapi-ts/src/openApi/3.0.x/parser/schema.ts
+10
-4
packages/openapi-ts/src/openApi/3.0.x/parser/schema.ts
···
402
402
// Collect discriminator information to add after all compositions are processed
403
403
type DiscriminatorInfo = {
404
404
discriminator: NonNullable<SchemaObject['discriminator']>;
405
-
values: string[];
406
405
isRequired: boolean;
406
+
values: ReadonlyArray<string>;
407
407
};
408
408
const discriminatorsToAdd: DiscriminatorInfo[] = [];
409
409
const addedDiscriminators = new Set<string>();
···
486
486
487
487
discriminatorsToAdd.push({
488
488
discriminator,
489
-
values,
490
489
isRequired,
490
+
values,
491
491
});
492
492
addedDiscriminators.add(discriminator.propertyName);
493
493
}
···
497
497
}
498
498
499
499
// Now add discriminators after all compositions have been processed
500
-
for (const { discriminator, values, isRequired } of discriminatorsToAdd) {
500
+
for (const { discriminator, isRequired, values } of discriminatorsToAdd) {
501
501
// Get all discriminator values including children for union types
502
502
const allValues = getAllDiscriminatorValues({
503
503
context,
···
528
528
let inlineSchema: IR.SchemaObject | undefined;
529
529
for (let i = schemaItems.length - 1; i >= 0; i--) {
530
530
const item = schemaItems[i];
531
+
if (!item) {
532
+
continue;
533
+
}
531
534
// Check if this is not a $ref schema by looking for properties or checking if it came from an inline schema
532
535
if (item.type === 'object' || item.properties) {
533
536
inlineSchema = item;
···
548
551
inlineSchema.required = [];
549
552
}
550
553
if (!inlineSchema.required.includes(discriminator.propertyName)) {
551
-
inlineSchema.required.push(discriminator.propertyName);
554
+
inlineSchema.required = [
555
+
...inlineSchema.required,
556
+
discriminator.propertyName,
557
+
];
552
558
}
553
559
}
554
560
} else {
+10
-4
packages/openapi-ts/src/openApi/3.1.x/parser/schema.ts
+10
-4
packages/openapi-ts/src/openApi/3.1.x/parser/schema.ts
···
484
484
// Collect discriminator information to add after all compositions are processed
485
485
type DiscriminatorInfo = {
486
486
discriminator: NonNullable<SchemaObject['discriminator']>;
487
-
values: string[];
488
487
isRequired: boolean;
488
+
values: ReadonlyArray<string>;
489
489
};
490
490
const discriminatorsToAdd: DiscriminatorInfo[] = [];
491
491
const addedDiscriminators = new Set<string>();
···
567
567
568
568
discriminatorsToAdd.push({
569
569
discriminator,
570
-
values,
571
570
isRequired,
571
+
values,
572
572
});
573
573
addedDiscriminators.add(discriminator.propertyName);
574
574
}
···
578
578
}
579
579
580
580
// Now add discriminators after all compositions have been processed
581
-
for (const { discriminator, values, isRequired } of discriminatorsToAdd) {
581
+
for (const { discriminator, isRequired, values } of discriminatorsToAdd) {
582
582
// Get all discriminator values including children for union types
583
583
const allValues = getAllDiscriminatorValues({
584
584
context,
···
609
609
let inlineSchema: IR.SchemaObject | undefined;
610
610
for (let i = schemaItems.length - 1; i >= 0; i--) {
611
611
const item = schemaItems[i];
612
+
if (!item) {
613
+
continue;
614
+
}
612
615
// Check if this is not a $ref schema by looking for properties or checking if it came from an inline schema
613
616
if (item.type === 'object' || item.properties) {
614
617
inlineSchema = item;
···
629
632
inlineSchema.required = [];
630
633
}
631
634
if (!inlineSchema.required.includes(discriminator.propertyName)) {
632
-
inlineSchema.required.push(discriminator.propertyName);
635
+
inlineSchema.required = [
636
+
...inlineSchema.required,
637
+
discriminator.propertyName,
638
+
];
633
639
}
634
640
}
635
641
} else {