@@ -47,7 +47,6 @@ import type {
4747} from '../type/definition' ;
4848
4949import {
50- assertNullableType ,
5150 GraphQLScalarType ,
5251 GraphQLObjectType ,
5352 GraphQLInterfaceType ,
@@ -92,31 +91,6 @@ export type BuildSchemaOptions = {
9291 commentDescriptions ?: boolean ,
9392} ;
9493
95- function buildWrappedType (
96- innerType : GraphQLType ,
97- inputTypeNode : TypeNode ,
98- ) : GraphQLType {
99- if ( inputTypeNode . kind === Kind . LIST_TYPE ) {
100- return GraphQLList ( buildWrappedType ( innerType , inputTypeNode . type ) ) ;
101- }
102- if ( inputTypeNode . kind === Kind . NON_NULL_TYPE ) {
103- const wrappedType = buildWrappedType ( innerType , inputTypeNode . type ) ;
104- return GraphQLNonNull ( assertNullableType ( wrappedType ) ) ;
105- }
106- return innerType ;
107- }
108-
109- function getNamedTypeNode ( typeNode : TypeNode ) : NamedTypeNode {
110- let namedType = typeNode ;
111- while (
112- namedType . kind === Kind . LIST_TYPE ||
113- namedType . kind === Kind . NON_NULL_TYPE
114- ) {
115- namedType = namedType . type ;
116- }
117- return namedType ;
118- }
119-
12094/**
12195 * This takes the ast of a schema document produced by the parse function in
12296 * src/language/parser.js.
@@ -190,7 +164,6 @@ export function buildASTSchema(
190164 } ,
191165 ) ;
192166
193- const types = definitionBuilder . buildTypes ( typeDefs ) ;
194167 const directives = directiveDefs . map ( def =>
195168 definitionBuilder . buildDirective ( def ) ,
196169 ) ;
@@ -221,7 +194,7 @@ export function buildASTSchema(
221194 subscription : operationTypes . subscription
222195 ? ( definitionBuilder . buildType ( operationTypes . subscription ) : any )
223196 : null ,
224- types,
197+ types : typeDefs . map ( node => definitionBuilder . buildType ( node ) ) ,
225198 directives,
226199 astNode : schemaDef ,
227200 assumeValid : options && options . assumeValid ,
@@ -271,9 +244,7 @@ export class ASTDefinitionBuilder {
271244 ) ;
272245 }
273246
274- buildTypes (
275- nodes : $ReadOnlyArray < NamedTypeNode | TypeDefinitionNode > ,
276- ) : Array < GraphQLNamedType > {
247+ buildTypes ( nodes : $ReadOnlyArray < NamedTypeNode > ) : Array < GraphQLNamedType > {
277248 return nodes . map ( node => this . buildType ( node ) ) ;
278249 }
279250
@@ -293,8 +264,16 @@ export class ASTDefinitionBuilder {
293264 }
294265
295266 _buildWrappedType ( typeNode : TypeNode ) : GraphQLType {
296- const typeDef = this . buildType ( getNamedTypeNode ( typeNode ) ) ;
297- return buildWrappedType ( typeDef , typeNode ) ;
267+ if ( typeNode . kind === Kind . LIST_TYPE ) {
268+ return GraphQLList ( this . _buildWrappedType ( typeNode . type ) ) ;
269+ }
270+ if ( typeNode . kind === Kind . NON_NULL_TYPE ) {
271+ return GraphQLNonNull (
272+ // Note: GraphQLNonNull constructor validates this type
273+ ( this . _buildWrappedType ( typeNode . type ) : any ) ,
274+ ) ;
275+ }
276+ return this . buildType ( typeNode ) ;
298277 }
299278
300279 buildDirective ( directiveNode : DirectiveDefinitionNode ) : GraphQLDirective {
@@ -366,10 +345,9 @@ export class ASTDefinitionBuilder {
366345 }
367346
368347 _makeTypeDef ( def : ObjectTypeDefinitionNode ) {
369- const typeName = def . name . value ;
370348 const interfaces = def . interfaces ;
371349 return new GraphQLObjectType ( {
372- name : typeName ,
350+ name : def . name . value ,
373351 description : getDescription ( def , this . _options ) ,
374352 fields : ( ) => this . _makeFieldDefMap ( def ) ,
375353 // Note: While this could make early assertions to get the correctly
0 commit comments