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 9579a81c..163b0458 100644 Binary files a/packages/mercurius-codegen/test/snapshots/index.test.ts.snap and b/packages/mercurius-codegen/test/snapshots/index.test.ts.snap differ