Skip to content

Commit 808ada5

Browse files
authored
Add generated resolversMap to typescript-resolvers plugin meta (#10007)
* Add generated resolversMap to ts-resolvers plugin meta * Add changeset
1 parent cac19e5 commit 808ada5

File tree

4 files changed

+67
-30
lines changed

4 files changed

+67
-30
lines changed

Diff for: .changeset/forty-cooks-build.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
'@graphql-codegen/visitor-plugin-common': minor
3+
'@graphql-codegen/typescript-resolvers': minor
4+
---
5+
6+
Add generated resolvers map type name to typescript-resolvers plugin meta

Diff for: packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts

+13-4
Original file line numberDiff line numberDiff line change
@@ -1264,12 +1264,18 @@ export class BaseResolversVisitor<
12641264
return this._hasFederation;
12651265
}
12661266

1267-
public getRootResolver(): { content: string; generatedResolverTypes: Record<string, { name: string }> } {
1267+
public getRootResolver(): {
1268+
content: string;
1269+
generatedResolverTypes: {
1270+
resolversMap: { name: string };
1271+
userDefined: Record<string, { name: string }>;
1272+
};
1273+
} {
12681274
const name = this.convertName(this.config.allResolversTypeName);
12691275
const declarationKind = 'type';
12701276
const contextType = `<ContextType = ${this.config.contextType.type}>`;
12711277

1272-
const generatedResolverTypes: Record<string, { name: string }> = {};
1278+
const userDefinedTypes: Record<string, { name: string }> = {};
12731279
const content = [
12741280
new DeclarationBlock(this._declarationBlockConfig)
12751281
.export()
@@ -1281,7 +1287,7 @@ export class BaseResolversVisitor<
12811287
const resolverType = this._collectedResolvers[schemaTypeName];
12821288

12831289
if (resolverType.baseGeneratedTypename) {
1284-
generatedResolverTypes[schemaTypeName] = { name: resolverType.baseGeneratedTypename };
1290+
userDefinedTypes[schemaTypeName] = { name: resolverType.baseGeneratedTypename };
12851291
}
12861292

12871293
return indent(this.formatRootResolver(schemaTypeName, resolverType.typename, declarationKind));
@@ -1292,7 +1298,10 @@ export class BaseResolversVisitor<
12921298

12931299
return {
12941300
content,
1295-
generatedResolverTypes,
1301+
generatedResolverTypes: {
1302+
resolversMap: { name },
1303+
userDefined: userDefinedTypes,
1304+
},
12961305
};
12971306
}
12981307

Diff for: packages/plugins/typescript/resolvers/src/index.ts

+6-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ const capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1)
1414

1515
export const plugin: PluginFunction<
1616
TypeScriptResolversPluginConfig,
17-
Types.ComplexPluginOutput<{ generatedResolverTypes: Record<string, { name: string }> }>
17+
Types.ComplexPluginOutput<{
18+
generatedResolverTypes: {
19+
resolversMap: { name: string };
20+
userDefined: Record<string, { name: string }>;
21+
};
22+
}>
1823
> = (schema: GraphQLSchema, documents: Types.DocumentFile[], config: TypeScriptResolversPluginConfig) => {
1924
const imports = [];
2025
if (!config.customResolveInfo) {

Diff for: packages/plugins/typescript/resolvers/tests/ts-resolvers.spec.ts

+42-25
Original file line numberDiff line numberDiff line change
@@ -3092,6 +3092,18 @@ export type ResolverFn<TResult, TParent, TContext, TArgs> = (
30923092
{ outputFile: '' }
30933093
);
30943094

3095+
expect(result.content).toBeSimilarStringTo(`
3096+
export type resolvers<ContextType = any> = {
3097+
Query?: query_resolvers<ContextType>;
3098+
Mutation?: mutation_resolvers<ContextType>;
3099+
Node?: node_resolvers<ContextType>;
3100+
Post?: post_resolvers<ContextType>;
3101+
User?: user_resolvers<ContextType>;
3102+
CreateUserOk?: create_user_ok_resolvers<ContextType>;
3103+
CreateUserError?: create_user_error_resolvers<ContextType>;
3104+
CreateUserPayload?: create_user_payload_resolvers<ContextType>;
3105+
ErrorType?: error_type_resolvers;
3106+
};`);
30953107
expect(result.content).toContain(`export type create_user_error_resolvers`);
30963108
expect(result.content).toContain(`export type create_user_ok_resolvers`);
30973109
expect(result.content).toContain(`export type create_user_payload_resolvers`);
@@ -3105,32 +3117,37 @@ export type ResolverFn<TResult, TParent, TContext, TArgs> = (
31053117
expect(result.meta).toMatchInlineSnapshot(`
31063118
Object {
31073119
"generatedResolverTypes": Object {
3108-
"CreateUserError": Object {
3109-
"name": "create_user_error_resolvers",
3110-
},
3111-
"CreateUserOk": Object {
3112-
"name": "create_user_ok_resolvers",
3113-
},
3114-
"CreateUserPayload": Object {
3115-
"name": "create_user_payload_resolvers",
3116-
},
3117-
"ErrorType": Object {
3118-
"name": "error_type_resolvers",
3119-
},
3120-
"Mutation": Object {
3121-
"name": "mutation_resolvers",
3122-
},
3123-
"Node": Object {
3124-
"name": "node_resolvers",
3125-
},
3126-
"Post": Object {
3127-
"name": "post_resolvers",
3128-
},
3129-
"Query": Object {
3130-
"name": "query_resolvers",
3120+
"resolversMap": Object {
3121+
"name": "resolvers",
31313122
},
3132-
"User": Object {
3133-
"name": "user_resolvers",
3123+
"userDefined": Object {
3124+
"CreateUserError": Object {
3125+
"name": "create_user_error_resolvers",
3126+
},
3127+
"CreateUserOk": Object {
3128+
"name": "create_user_ok_resolvers",
3129+
},
3130+
"CreateUserPayload": Object {
3131+
"name": "create_user_payload_resolvers",
3132+
},
3133+
"ErrorType": Object {
3134+
"name": "error_type_resolvers",
3135+
},
3136+
"Mutation": Object {
3137+
"name": "mutation_resolvers",
3138+
},
3139+
"Node": Object {
3140+
"name": "node_resolvers",
3141+
},
3142+
"Post": Object {
3143+
"name": "post_resolvers",
3144+
},
3145+
"Query": Object {
3146+
"name": "query_resolvers",
3147+
},
3148+
"User": Object {
3149+
"name": "user_resolvers",
3150+
},
31343151
},
31353152
},
31363153
}

0 commit comments

Comments
 (0)