@@ -53,6 +53,7 @@ export class TypeInfo {
53
53
private _directive : Maybe < GraphQLDirective > ;
54
54
private _argument : Maybe < GraphQLArgument > ;
55
55
private _enumValue : Maybe < GraphQLEnumValue > ;
56
+ private _getFieldDef : GetFieldDefFn ;
56
57
57
58
constructor (
58
59
schema : GraphQLSchema ,
@@ -61,6 +62,9 @@ export class TypeInfo {
61
62
* beginning somewhere other than documents.
62
63
*/
63
64
initialType ?: Maybe < GraphQLType > ,
65
+
66
+ /** @deprecated will be removed in 17.0.0 */
67
+ getFieldDefFn ?: GetFieldDefFn ,
64
68
) {
65
69
this . _schema = schema ;
66
70
this . _typeStack = [ ] ;
@@ -71,6 +75,7 @@ export class TypeInfo {
71
75
this . _directive = null ;
72
76
this . _argument = null ;
73
77
this . _enumValue = null ;
78
+ this . _getFieldDef = getFieldDefFn ?? getFieldDef ;
74
79
if ( initialType ) {
75
80
if ( isInputType ( initialType ) ) {
76
81
this . _inputTypeStack . push ( initialType ) ;
@@ -155,7 +160,7 @@ export class TypeInfo {
155
160
let fieldDef ;
156
161
let fieldType : unknown ;
157
162
if ( parentType ) {
158
- fieldDef = getFieldDef ( schema , parentType , node ) ;
163
+ fieldDef = this . _getFieldDef ( schema , parentType , node ) ;
159
164
if ( fieldDef ) {
160
165
fieldType = fieldDef . type ;
161
166
}
@@ -286,34 +291,37 @@ export class TypeInfo {
286
291
}
287
292
}
288
293
294
+ type GetFieldDefFn = (
295
+ schema : GraphQLSchema ,
296
+ parentType : GraphQLType ,
297
+ fieldNode : FieldNode ,
298
+ ) => Maybe < GraphQLField < unknown , unknown > > ;
299
+
289
300
/**
290
301
* Not exactly the same as the executor's definition of getFieldDef, in this
291
302
* statically evaluated environment we do not always have an Object type,
292
303
* and need to handle Interface and Union types.
293
304
*/
294
305
function getFieldDef (
295
306
schema : GraphQLSchema ,
296
- parentType : GraphQLCompositeType ,
307
+ parentType : GraphQLType ,
297
308
fieldNode : FieldNode ,
298
309
) : Maybe < GraphQLField < unknown , unknown > > {
299
- const fieldName = fieldNode . name . value ;
310
+ const name = fieldNode . name . value ;
300
311
if (
301
- fieldName === SchemaMetaFieldDef . name &&
312
+ name === SchemaMetaFieldDef . name &&
302
313
schema . getQueryType ( ) === parentType
303
314
) {
304
315
return SchemaMetaFieldDef ;
305
316
}
306
- if (
307
- fieldName === TypeMetaFieldDef . name &&
308
- schema . getQueryType ( ) === parentType
309
- ) {
317
+ if ( name === TypeMetaFieldDef . name && schema . getQueryType ( ) === parentType ) {
310
318
return TypeMetaFieldDef ;
311
319
}
312
- if ( fieldName === TypeNameMetaFieldDef . name && isCompositeType ( parentType ) ) {
320
+ if ( name === TypeNameMetaFieldDef . name && isCompositeType ( parentType ) ) {
313
321
return TypeNameMetaFieldDef ;
314
322
}
315
323
if ( isObjectType ( parentType ) || isInterfaceType ( parentType ) ) {
316
- return parentType . getFields ( ) [ fieldName ] ;
324
+ return parentType . getFields ( ) [ name ] ;
317
325
}
318
326
}
319
327
0 commit comments