Skip to content

Commit a93797f

Browse files
fix(graphql): resolve type function should not always be async
1 parent 005d0d1 commit a93797f

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

packages/graphql/lib/schema-builder/factories/resolve-type.factory.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,20 @@ export class ResolveTypeFactory {
1313
public getResolveTypeFunction<TSource = any, TContext = any>(
1414
resolveType: ResolveTypeFn<TSource, TContext>,
1515
): GraphQLTypeResolver<TSource, TContext> {
16-
return async (...args) => {
17-
const resolvedType = await resolveType(...args);
18-
if (isString(resolvedType)) {
19-
return resolvedType;
20-
}
21-
const typeDef =
22-
this.typeDefinitionsStorage.getObjectTypeByTarget(resolvedType);
23-
return typeDef?.type?.name;
16+
return (...args) => {
17+
const typeToString = (resolvedType: Function | string) => {
18+
if (isString(resolvedType)) {
19+
return resolvedType;
20+
}
21+
const typeDef =
22+
this.typeDefinitionsStorage.getObjectTypeByTarget(resolvedType);
23+
return typeDef?.type?.name;
24+
};
25+
26+
const resolvedTypeOrPromise = resolveType(...args);
27+
return resolvedTypeOrPromise && resolvedTypeOrPromise instanceof Promise
28+
? resolvedTypeOrPromise.then(typeToString)
29+
: typeToString(resolvedTypeOrPromise);
2430
};
2531
}
2632
}

0 commit comments

Comments
 (0)