@@ -1047,9 +1047,9 @@ function completeAbstractValue(
1047
1047
path: ResponsePath,
1048
1048
result: mixed
1049
1049
): mixed {
1050
- const runtimeType = exeContext.typeResolver(
1051
- result, exeContext, info, returnType
1052
- );
1050
+ const runtimeType = returnType.resolveType ?
1051
+ returnType.resolveType( result, exeContext.contextValue , info) :
1052
+ defaultResolveTypeFn(result, exeContext, info, returnType );
1053
1053
1054
1054
const promise = getPromise(runtimeType);
1055
1055
if (promise) {
@@ -1215,10 +1215,11 @@ function collectAndExecuteSubfields(
1215
1215
*/
1216
1216
function defaultResolveTypeFn (
1217
1217
value : mixed ,
1218
- context : mixed ,
1218
+ exeContext : ExecutionContext ,
1219
1219
info : GraphQLResolveInfo ,
1220
1220
abstractType : GraphQLAbstractType
1221
- ) : ?GraphQLObjectType | Promise < ?GraphQLObjectType > {
1221
+ ) : ?GraphQLObjectType | string | Promise < ?GraphQLObjectType | string > {
1222
+ const context = exeContext . contextValue ;
1222
1223
const possibleTypes = info . schema . getPossibleTypes ( abstractType ) ;
1223
1224
const promisedIsTypeOfResults = [ ] ;
1224
1225
@@ -1246,6 +1247,8 @@ function defaultResolveTypeFn(
1246
1247
}
1247
1248
} ) ;
1248
1249
}
1250
+
1251
+ return exeContext . typeResolver ( value , context , info ) ;
1249
1252
}
1250
1253
1251
1254
/**
@@ -1267,14 +1270,14 @@ function (source, args, context, info) {
1267
1270
} ;
1268
1271
1269
1272
export const defaultTypeResolver : GraphQLTypeResolver < any , * > =
1270
- function ( result , context , info , returnType ) {
1271
- if ( result && result . __typename ) {
1272
- return result . __typename ;
1273
+ function ( result , context , info ) {
1274
+ if ( typeof result === 'object' && result . __typename ) {
1275
+ const typename = result . __typename ;
1276
+ if ( typeof typename === 'function' ) {
1277
+ return result . __typename ( context , info ) ;
1278
+ }
1279
+ return typename ;
1273
1280
}
1274
-
1275
- return returnType . resolveType ?
1276
- returnType . resolveType ( result , context . contextValue , info ) :
1277
- defaultResolveTypeFn ( result , context . contextValue , info , returnType ) ;
1278
1281
} ;
1279
1282
1280
1283
/**
0 commit comments