FieldWrapper not applied to fields in union resolver type
#5,776 建立於 2021年3月31日
描述
Hi! First thanks to @dotansimha for his great effort on this project!
Describe the bug
I've run into a bit of an issue with a circular type definition in a union field, a custom field wrapper and the typescript-resolvers plugin. I would expect the parent field in the example below to be wrapped with FieldWrapper like it is the original type. As I'm using the same resolver(that looks like my FieldWrapper type) for two separate generated types, this currently results in a type error when using the generated ResolverTypes directly. A workaround is to override the Comment type with a mapper.
To Reproduce Repo: https://codesandbox.io/s/exciting-bhaskara-s9qze Steps to reproduce the behavior:
- My GraphQL schema:
type Query {
comment(id: ID!): Comment!
}
union CommentParent = Comment
type Comment {
id: ID!
parent: CommentParent!
}
- My GraphQL operations:
# No operations
- My
codegen.ymlconfig file:
schema: schema.graphql
documents: {}
generates:
types.ts:
plugins:
- typescript
- typescript-resolvers
config:
wrapFieldDefinitions: true
fieldWrapperValue: |
T | Promise<T> | ((args: unknown, context: GraphQLContext, info: GraphQLResolveInfo) => Promise<T> | T)
Expected behavior A field that does get resolved to another resolver type should also be wrapped with the custom field wrapper.
I would expect this
type ResolversTypes = {
Comment: ResolverTypeWrapper<Omit<Comment, 'parent'> & { parent: FieldWrapper<ResolversTypes['CommentParent']> }>;
CommentParent: ResolversTypes['Comment'];
}
as opposed to the original:
type ResolversTypes = {
Comment: ResolverTypeWrapper<Omit<Comment, 'parent'> & { parent: ResolversTypes['CommentParent'] }>;
CommentParent: ResolversTypes['Comment'];
}
Environment:
- @graphql-codegen/add 2.0.2
- @graphql-codegen/cli 1.20.1
- @graphql-codegen/typescript 1.21.0
- @graphql-codegen/typescript-resolvers 1.19.0
Additional context