@@ -494,7 +494,20 @@ export function extendSchema(
494
494
? type . extensionASTNodes . concat ( typeExtensionsMap [ name ] )
495
495
: typeExtensionsMap [ name ]
496
496
: type . extensionASTNodes ;
497
- const unionTypes = type . getTypes ( ) . map ( extendNamedType ) ;
497
+ return new GraphQLUnionType ( {
498
+ name,
499
+ description : type . description ,
500
+ types : ( ) => extendPossibleTypes ( type ) ,
501
+ astNode : type . astNode ,
502
+ resolveType : type . resolveType ,
503
+ extensionASTNodes,
504
+ } ) ;
505
+ }
506
+
507
+ function extendPossibleTypes(
508
+ type: GraphQLUnionType,
509
+ ): Array< GraphQLObjectType > {
510
+ const possibleTypes = type . getTypes ( ) . map ( extendNamedType ) ;
498
511
499
512
// If there are any extensions to the union, apply those here.
500
513
const extensions = typeExtensionsMap [ type . name ] ;
@@ -504,19 +517,11 @@ export function extendSchema(
504
517
// Note: While this could make early assertions to get the correctly
505
518
// typed values, that would throw immediately while type system
506
519
// validation with validateSchema() will produce more actionable results.
507
- unionTypes . push ( ( astBuilder . buildType ( namedType ) : any ) ) ;
520
+ possibleTypes . push ( ( astBuilder . buildType ( namedType ) : any ) ) ;
508
521
}
509
522
}
510
523
}
511
-
512
- return new GraphQLUnionType ( {
513
- name,
514
- description : type . description ,
515
- types : unionTypes ,
516
- astNode : type . astNode ,
517
- resolveType : type . resolveType ,
518
- extensionASTNodes,
519
- } ) ;
524
+ return possibleTypes ;
520
525
}
521
526
522
527
function extendImplementedInterfaces(
0 commit comments