dotansimha/graphql-code-generator

source option

Open

#6363 opened on Jul 25, 2021

View on GitHub
 (1 comment) (0 reactions) (0 assignees)TypeScript (10,341 stars) (1,295 forks)batch import
corehelp wantedkind/enhancement

Description

Is your feature request related to a problem? Please describe.

When testing it's useful to get an operation's source

import { NoParamQuery } from '../codegen/schema';

describe('with NoParamQuery script child', function() {
  let element;
  beforeEach(async function() {
    element = await getElement();
    element.innerHTML = `<script type="application/graphql">${NoParamQuery.loc!.source.body}</script>`;
    await nextFrame();
  });

  it('sets query property', function() {
    expect(element?.query).to.deep.equal(gql(NoParamQuery.loc!.source.body));
  });
});

Describe the solution you'd like .graphqlrc.yml

extensions:
  codegen:
    config:
      dedupeOperationSuffix: true
      namingConvention: keep
      documentVariableSuffix: ''
      source: true

    generates:
      test/schema.ts:
        schema: test/graphql/test.schema.graphql
        plugins:
          - typescript
          - typescript-operations
          - typed-document-node

        documents:
          - test/graphql/*.query.graphql
          - test/graphql/*.mutation.graphql
          - test/graphql/*.subscription.graphql
          - test/graphql/*.fragment.graphql

Describe alternatives you've considered build-time transformers like rollup-plugin-graphql etc.

Additional context source could be boolean|string[] to provide users with an allowlist of operations to include sources for, if they need source at runtime for some reason but want to lower bundle sizes.

source:
  - NoParamQuery
  - SourcyMutation

Contributor guide