Skip to content

Mapped types are dropped when combined with unions at non-trivial depth. #5998

Open
@jacob-indieocean

Description

@jacob-indieocean

Issue workflow progress

Progress of the issue based on the Contributor Workflow

Make sure to fork this template and run yarn generate in the terminal.

Please make sure the Codegen and plugins version under package.json matches yours.

  • 2. A failing test has been provided

  • 3. A local solution has been provided

  • 4. A pull request is pending review


Describe the bug
The resolver type for a type that contains a type that contains a union of types that are mapped, drops knowledge of the mapped type.

That a mouthful, but here is a minimal reproduction:

To Reproduce
LIve Code Sandbox: https://codesandbox.io/s/inspiring-shape-ts0t5

  1. My GraphQL schema:
type Query {
    feed: FeedConnection!
}

type FeedConnection {
    edge:FeedEdge
}

type FeedEdge {
    node: FeedNode
}

union FeedNode = PostFeedNode | PhotoFeedNode

type PostFeedNode {
    text:String
}

type PhotoFeedNode {
    url:String
}
  1. My GraphQL operations:
    N/A

  2. My codegen.yml config file:

schema: schema.graphql
generates:
  types.ts:
    plugins:
      - typescript
      - typescript-resolvers
    config:
      mappers:
        PostFeedNode: ./model#PostFeedNodeModel
        PhotoFeedNode: ./model#PhotoFeedNodeModel

Expected behavior
The resolver type should be:
FeedConnection:ResolverTypeWrapper<Omit<FeedConnection, 'edge'> & { node?: Maybe<ResolversTypes['FeedEdge']> }>;

But the generated type is:
FeedConnection: ResolverTypeWrapper<FeedConnection>;

Metadata

Metadata

Assignees

No one assigned

    Labels

    coreRelated to codegen core/clihelp wantedExtra attention is neededstage/1-reproductionA reproduction exists

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions