From 0cf7d472ae7be666a45ba60276f96b36e3c46a12 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sun, 16 Jun 2024 20:28:21 +1000 Subject: [PATCH 1/2] Add generated resolversMap to ts-resolvers plugin meta --- .../src/base-resolvers-visitor.ts | 17 +++-- .../plugins/typescript/resolvers/src/index.ts | 7 +- .../resolvers/tests/ts-resolvers.spec.ts | 67 ++++++++++++------- 3 files changed, 61 insertions(+), 30 deletions(-) diff --git a/packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts b/packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts index 69956220a84..89b8a65d1b1 100644 --- a/packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts +++ b/packages/plugins/other/visitor-plugin-common/src/base-resolvers-visitor.ts @@ -1264,12 +1264,18 @@ export class BaseResolversVisitor< return this._hasFederation; } - public getRootResolver(): { content: string; generatedResolverTypes: Record } { + public getRootResolver(): { + content: string; + generatedResolverTypes: { + resolversMap: { name: string }; + userDefined: Record; + }; + } { const name = this.convertName(this.config.allResolversTypeName); const declarationKind = 'type'; const contextType = ``; - const generatedResolverTypes: Record = {}; + const userDefinedTypes: Record = {}; const content = [ new DeclarationBlock(this._declarationBlockConfig) .export() @@ -1281,7 +1287,7 @@ export class BaseResolversVisitor< const resolverType = this._collectedResolvers[schemaTypeName]; if (resolverType.baseGeneratedTypename) { - generatedResolverTypes[schemaTypeName] = { name: resolverType.baseGeneratedTypename }; + userDefinedTypes[schemaTypeName] = { name: resolverType.baseGeneratedTypename }; } return indent(this.formatRootResolver(schemaTypeName, resolverType.typename, declarationKind)); @@ -1292,7 +1298,10 @@ export class BaseResolversVisitor< return { content, - generatedResolverTypes, + generatedResolverTypes: { + resolversMap: { name }, + userDefined: userDefinedTypes, + }, }; } diff --git a/packages/plugins/typescript/resolvers/src/index.ts b/packages/plugins/typescript/resolvers/src/index.ts index 70dabc18423..2c546bb75a2 100644 --- a/packages/plugins/typescript/resolvers/src/index.ts +++ b/packages/plugins/typescript/resolvers/src/index.ts @@ -14,7 +14,12 @@ const capitalize = (s: string): string => s.charAt(0).toUpperCase() + s.slice(1) export const plugin: PluginFunction< TypeScriptResolversPluginConfig, - Types.ComplexPluginOutput<{ generatedResolverTypes: Record }> + Types.ComplexPluginOutput<{ + generatedResolverTypes: { + resolversMap: { name: string }; + userDefined: Record; + }; + }> > = (schema: GraphQLSchema, documents: Types.DocumentFile[], config: TypeScriptResolversPluginConfig) => { const imports = []; if (!config.customResolveInfo) { diff --git a/packages/plugins/typescript/resolvers/tests/ts-resolvers.spec.ts b/packages/plugins/typescript/resolvers/tests/ts-resolvers.spec.ts index bbc4ce32677..2cac594c04b 100644 --- a/packages/plugins/typescript/resolvers/tests/ts-resolvers.spec.ts +++ b/packages/plugins/typescript/resolvers/tests/ts-resolvers.spec.ts @@ -3092,6 +3092,18 @@ export type ResolverFn = ( { outputFile: '' } ); + expect(result.content).toBeSimilarStringTo(` + export type resolvers = { + Query?: query_resolvers; + Mutation?: mutation_resolvers; + Node?: node_resolvers; + Post?: post_resolvers; + User?: user_resolvers; + CreateUserOk?: create_user_ok_resolvers; + CreateUserError?: create_user_error_resolvers; + CreateUserPayload?: create_user_payload_resolvers; + ErrorType?: error_type_resolvers; + };`); expect(result.content).toContain(`export type create_user_error_resolvers`); expect(result.content).toContain(`export type create_user_ok_resolvers`); expect(result.content).toContain(`export type create_user_payload_resolvers`); @@ -3105,32 +3117,37 @@ export type ResolverFn = ( expect(result.meta).toMatchInlineSnapshot(` Object { "generatedResolverTypes": Object { - "CreateUserError": Object { - "name": "create_user_error_resolvers", - }, - "CreateUserOk": Object { - "name": "create_user_ok_resolvers", - }, - "CreateUserPayload": Object { - "name": "create_user_payload_resolvers", - }, - "ErrorType": Object { - "name": "error_type_resolvers", - }, - "Mutation": Object { - "name": "mutation_resolvers", - }, - "Node": Object { - "name": "node_resolvers", - }, - "Post": Object { - "name": "post_resolvers", - }, - "Query": Object { - "name": "query_resolvers", + "resolversMap": Object { + "name": "resolvers", }, - "User": Object { - "name": "user_resolvers", + "userDefined": Object { + "CreateUserError": Object { + "name": "create_user_error_resolvers", + }, + "CreateUserOk": Object { + "name": "create_user_ok_resolvers", + }, + "CreateUserPayload": Object { + "name": "create_user_payload_resolvers", + }, + "ErrorType": Object { + "name": "error_type_resolvers", + }, + "Mutation": Object { + "name": "mutation_resolvers", + }, + "Node": Object { + "name": "node_resolvers", + }, + "Post": Object { + "name": "post_resolvers", + }, + "Query": Object { + "name": "query_resolvers", + }, + "User": Object { + "name": "user_resolvers", + }, }, }, } From 4555bc46e3e4ee1c6e0744437585b0e50da232b8 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sun, 16 Jun 2024 20:43:41 +1000 Subject: [PATCH 2/2] Add changeset --- .changeset/forty-cooks-build.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/forty-cooks-build.md diff --git a/.changeset/forty-cooks-build.md b/.changeset/forty-cooks-build.md new file mode 100644 index 00000000000..93cbc1be32a --- /dev/null +++ b/.changeset/forty-cooks-build.md @@ -0,0 +1,6 @@ +--- +'@graphql-codegen/visitor-plugin-common': minor +'@graphql-codegen/typescript-resolvers': minor +--- + +Add generated resolvers map type name to typescript-resolvers plugin meta