@@ -556,8 +556,10 @@ function mergeAlternatives(
556
556
schemaOrRef . enum
557
557
) {
558
558
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
+ ) ;
561
563
latest . nullable = latest . nullable || schemaOrRef . nullable ;
562
564
return acc ;
563
565
}
@@ -566,18 +568,20 @@ function mergeAlternatives(
566
568
if ( latest && latest . type === 'object' && schemaOrRef . type === 'object' ) {
567
569
const keys = Object . keys ( schemaOrRef ) ;
568
570
if (
569
- keys . every ( ( key ) =>
571
+ keys . some ( ( key ) =>
570
572
[ 'type' , 'properties' , 'required' , 'nullable' ] . includes ( key )
571
573
)
572
574
) {
573
575
latest . properties = {
574
- ...latest . properties ,
575
- ...schemaOrRef . properties ,
576
+ ...( latest . properties || { } ) ,
577
+ ...( schemaOrRef . properties || { } ) ,
576
578
} ;
577
579
latest . required = Array . from (
578
580
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 )
581
585
? schemaOrRef . required
582
586
: [ ] ) ,
583
587
] )
0 commit comments