From c35e429c06874edf1f20e5fa02eeb5e822a79603 Mon Sep 17 00:00:00 2001 From: Luca Del Puppo Date: Mon, 1 Jan 2024 14:53:23 +0100 Subject: [PATCH] add resolveReference --- .../mercurius-codegen/src/mercuriusLoaders.ts | 9 ++++++++- packages/mercurius-codegen/test/generated.ts | 2 ++ .../test/snapshots/index.test.ts.md | 14 +++++++++++--- .../test/snapshots/index.test.ts.snap | Bin 3499 -> 3543 bytes 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/mercurius-codegen/src/mercuriusLoaders.ts b/packages/mercurius-codegen/src/mercuriusLoaders.ts index 88292840..8af5d32f 100644 --- a/packages/mercurius-codegen/src/mercuriusLoaders.ts +++ b/packages/mercurius-codegen/src/mercuriusLoaders.ts @@ -124,7 +124,14 @@ export const MercuriusLoadersPlugin: CodegenPlugin if (type instanceof GraphQLObjectType) { const fields = type.getFields() - const typeCode: Record = {} + const typeCode: Record = { + __resolveReference: `LoaderResolver<${namespacedImportPrefix}${ + config.loadersCustomParentTypes?.[type.name] || type.name + },${namespacedImportPrefix}${ + config.loadersCustomParentTypes?.[type.name] || type.name + },{}, TContext>`, + } + Object.entries(fields).forEach(([key, value]) => { const tsType = fieldToType(value) diff --git a/packages/mercurius-codegen/test/generated.ts b/packages/mercurius-codegen/test/generated.ts index 76b20080..81ec3619 100644 --- a/packages/mercurius-codegen/test/generated.ts +++ b/packages/mercurius-codegen/test/generated.ts @@ -306,6 +306,7 @@ export interface Loaders< } > { Human?: { + __resolveReference?: LoaderResolver name?: LoaderResolver father?: LoaderResolver, Human, {}, TContext> hasSon?: LoaderResolver< @@ -342,6 +343,7 @@ export interface Loaders< } NArray?: { + __resolveReference?: LoaderResolver nArray?: LoaderResolver< Maybe>>>>, NArray, diff --git a/packages/mercurius-codegen/test/snapshots/index.test.ts.md b/packages/mercurius-codegen/test/snapshots/index.test.ts.md index ab95178d..0f837693 100644 --- a/packages/mercurius-codegen/test/snapshots/index.test.ts.md +++ b/packages/mercurius-codegen/test/snapshots/index.test.ts.md @@ -27,11 +27,11 @@ Generated by [AVA](https://avajs.dev). }␊ export interface Loaders {␊ Human?: {␊ - name?: LoaderResolver;father?: LoaderResolver,TP_Types.Human,{}, TContext>;hasSon?: LoaderResolver,TP_Types.Human,TP_Types.HumanhasSonArgs, TContext>;sons?: LoaderResolver>,TP_Types.Human,TP_Types.HumansonsArgs, TContext>;confirmedSonsNullable?: LoaderResolver>,TP_Types.Human,TP_Types.HumanconfirmedSonsNullableArgs, TContext>;confirmedSonsNonNullItems?: LoaderResolver,TP_Types.Human,TP_Types.HumanconfirmedSonsNonNullItemsArgs, TContext>;sonNames?: LoaderResolver>>,TP_Types.Human,{}, TContext>;nonNullssonNames?: LoaderResolver,TP_Types.Human,{}, TContext>;␊ + __resolveReference?: LoaderResolver;name?: LoaderResolver;father?: LoaderResolver,TP_Types.Human,{}, TContext>;hasSon?: LoaderResolver,TP_Types.Human,TP_Types.HumanhasSonArgs, TContext>;sons?: LoaderResolver>,TP_Types.Human,TP_Types.HumansonsArgs, TContext>;confirmedSonsNullable?: LoaderResolver>,TP_Types.Human,TP_Types.HumanconfirmedSonsNullableArgs, TContext>;confirmedSonsNonNullItems?: LoaderResolver,TP_Types.Human,TP_Types.HumanconfirmedSonsNonNullItemsArgs, TContext>;sonNames?: LoaderResolver>>,TP_Types.Human,{}, TContext>;nonNullssonNames?: LoaderResolver,TP_Types.Human,{}, TContext>;␊ };␊ ␊ NArray?: {␊ - nArray?: LoaderResolver>>>>,TP_Types.NArray,{}, TContext>;␊ + __resolveReference?: LoaderResolver;nArray?: LoaderResolver>>>>,TP_Types.NArray,{}, TContext>;␊ };␊ }` @@ -346,6 +346,7 @@ Generated by [AVA](https://avajs.dev). }␊ > {␊ Human?: {␊ + __resolveReference?: LoaderResolver␊ name?: LoaderResolver␊ father?: LoaderResolver, Human, {}, TContext>␊ hasSon?: LoaderResolver<␊ @@ -382,6 +383,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ NArray?: {␊ + __resolveReference?: LoaderResolver␊ nArray?: LoaderResolver<␊ Maybe>>>>,␊ NArray,␊ @@ -399,7 +401,7 @@ Generated by [AVA](https://avajs.dev). ## supports addUnderscoreToArgsType config option -> addUnderscoreToArgsType code +> generated code `import type {␊ GraphQLResolveInfo,␊ @@ -708,6 +710,7 @@ Generated by [AVA](https://avajs.dev). }␊ > {␊ Human?: {␊ + __resolveReference?: LoaderResolver␊ name?: LoaderResolver␊ father?: LoaderResolver, Human, {}, TContext>␊ hasSon?: LoaderResolver<␊ @@ -744,6 +747,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ NArray?: {␊ + __resolveReference?: LoaderResolver␊ nArray?: LoaderResolver<␊ Maybe>>>>,␊ NArray,␊ @@ -1089,6 +1093,7 @@ Generated by [AVA](https://avajs.dev). }␊ > {␊ Human?: {␊ + __resolveReference?: LoaderResolver␊ name?: LoaderResolver␊ father?: LoaderResolver, Human, {}, TContext>␊ hasSon?: LoaderResolver<␊ @@ -1125,6 +1130,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ NArray?: {␊ + __resolveReference?: LoaderResolver␊ nArray?: LoaderResolver<␊ Maybe>>>>,␊ NArray,␊ @@ -1468,6 +1474,7 @@ Generated by [AVA](https://avajs.dev). }␊ > {␊ Human?: {␊ + __resolveReference?: LoaderResolver␊ name?: LoaderResolver␊ father?: LoaderResolver, Human, {}, TContext>␊ hasSon?: LoaderResolver<␊ @@ -1504,6 +1511,7 @@ Generated by [AVA](https://avajs.dev). }␊ ␊ NArray?: {␊ + __resolveReference?: LoaderResolver␊ nArray?: LoaderResolver<␊ Maybe>>>>,␊ NArray,␊ diff --git a/packages/mercurius-codegen/test/snapshots/index.test.ts.snap b/packages/mercurius-codegen/test/snapshots/index.test.ts.snap index 9579a81c02db63e775983970a291984ab2affcd9..163b0458d841e7ec752d79a1598826e4ca86c6db 100644 GIT binary patch literal 3543 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 literal 3499 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