diff --git a/src/type/definition.js b/src/type/definition.js index 6f1b737498..739732cd5f 100644 --- a/src/type/definition.js +++ b/src/type/definition.js @@ -607,7 +607,7 @@ export class GraphQLScalarType { parseValue: GraphQLScalarValueParser, parseLiteral: GraphQLScalarLiteralParser, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { return { name: this.name, @@ -617,7 +617,7 @@ export class GraphQLScalarType { parseLiteral: this.parseLiteral, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], }; } @@ -745,7 +745,7 @@ export class GraphQLObjectType { interfaces: Array, fields: GraphQLFieldConfigMap, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { return { name: this.name, @@ -755,7 +755,7 @@ export class GraphQLObjectType { isTypeOf: this.isTypeOf, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes || [], }; } @@ -1055,7 +1055,7 @@ export class GraphQLInterfaceType { interfaces: Array, fields: GraphQLFieldConfigMap, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { return { name: this.name, @@ -1065,7 +1065,7 @@ export class GraphQLInterfaceType { resolveType: this.resolveType, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], }; } @@ -1158,7 +1158,7 @@ export class GraphQLUnionType { ...GraphQLUnionTypeConfig, types: Array, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { return { name: this.name, @@ -1167,7 +1167,7 @@ export class GraphQLUnionType { resolveType: this.resolveType, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], }; } @@ -1320,7 +1320,7 @@ export class GraphQLEnumType /* */ { toConfig(): {| ...GraphQLEnumTypeConfig, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { const values = keyValMap( this.getValues(), @@ -1340,7 +1340,7 @@ export class GraphQLEnumType /* */ { values, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], }; } @@ -1476,7 +1476,7 @@ export class GraphQLInputObjectType { ...GraphQLInputObjectTypeConfig, fields: GraphQLInputFieldConfigMap, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, |} { const fields = mapValue(this.getFields(), field => ({ description: field.description, @@ -1492,7 +1492,7 @@ export class GraphQLInputObjectType { fields, extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], }; } diff --git a/src/type/schema.js b/src/type/schema.js index 316b1c0b99..5cb5241547 100644 --- a/src/type/schema.js +++ b/src/type/schema.js @@ -345,7 +345,7 @@ export class GraphQLSchema { directives: this.getDirectives().slice(), extensions: this.extensions, astNode: this.astNode, - extensionASTNodes: this.extensionASTNodes, + extensionASTNodes: this.extensionASTNodes ?? [], assumeValid: this.__validationErrors !== undefined, }; } @@ -391,7 +391,7 @@ export type GraphQLSchemaNormalizedConfig = {| types: Array, directives: Array, extensions: ?ReadOnlyObjMap, - extensionASTNodes: ?$ReadOnlyArray, + extensionASTNodes: $ReadOnlyArray, assumeValid: boolean, |}; diff --git a/src/utilities/extendSchema.js b/src/utilities/extendSchema.js index a2b7202ea1..e76041c65e 100644 --- a/src/utilities/extendSchema.js +++ b/src/utilities/extendSchema.js @@ -228,10 +228,7 @@ export function extendSchemaImpl( ], extensions: undefined, astNode: schemaDef ?? schemaConfig.astNode, - extensionASTNodes: concatMaybeArrays( - schemaConfig.extensionASTNodes, - schemaExtensions, - ), + extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions), assumeValid: options?.assumeValid ?? false, }; @@ -305,10 +302,7 @@ export function extendSchemaImpl( })), ...buildInputFieldMap(extensions), }), - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -322,10 +316,7 @@ export function extendSchemaImpl( ...config.values, ...buildEnumValueMap(extensions), }, - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -335,10 +326,7 @@ export function extendSchemaImpl( return new GraphQLScalarType({ ...config, - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -356,10 +344,7 @@ export function extendSchemaImpl( ...mapValue(config.fields, extendField), ...buildFieldMap(extensions), }), - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -379,10 +364,7 @@ export function extendSchemaImpl( ...mapValue(config.fields, extendField), ...buildFieldMap(extensions), }), - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -396,10 +378,7 @@ export function extendSchemaImpl( ...type.getTypes().map(replaceNamedType), ...buildUnionTypes(extensions), ], - extensionASTNodes: concatMaybeArrays( - config.extensionASTNodes, - extensions, - ), + extensionASTNodes: config.extensionASTNodes.concat(extensions), }); } @@ -704,19 +683,6 @@ export function extendSchemaImpl( } } -function concatMaybeArrays( - maybeArrayA: ?$ReadOnlyArray, - maybeArrayB: ?$ReadOnlyArray, -): ?$ReadOnlyArray { - if (maybeArrayA == null) { - return maybeArrayB; - } - if (maybeArrayB == null) { - return maybeArrayA; - } - return maybeArrayA.concat(maybeArrayB); -} - const stdTypeMap = keyMap( specifiedScalarTypes.concat(introspectionTypes), type => type.name,