Skip to content

Latest commit

 

History

History
915 lines (610 loc) · 31.3 KB

File metadata and controls

915 lines (610 loc) · 31.3 KB

@graphql-codegen/typescript

4.0.6

Patch Changes

  • Updated dependencies [920b443, ed9c205]:
    • @graphql-codegen/visitor-plugin-common@5.1.0

4.0.5

Patch Changes

  • Updated dependencies [53f270a]:
    • @graphql-codegen/visitor-plugin-common@5.0.0

4.0.4

Patch Changes

  • #9813 4e69568 Thanks @saihaj! - bumping for a release

  • Updated dependencies [4e69568]:

    • @graphql-codegen/visitor-plugin-common@4.1.2
    • @graphql-codegen/schema-ast@4.0.2
    • @graphql-codegen/plugin-helpers@5.0.3

4.0.3

Patch Changes

  • Updated dependencies [7718a8113]:
    • @graphql-codegen/visitor-plugin-common@4.1.1

4.0.2

Patch Changes

4.0.1

Patch Changes

  • #9497 2276708d0 Thanks @eddeee888! - Revert default ID scalar input type to string

    We changed the ID Scalar input type from string to string | number in the latest major version of typescript plugin. This causes issues for server plugins (e.g. typescript-resolvers) that depends on typescript plugin. This is because the scalar type needs to be manually inverted on setup which is confusing.

  • Updated dependencies [2276708d0]:

    • @graphql-codegen/visitor-plugin-common@4.0.1

4.0.0

Major Changes

  • #9375 ba84a3a27 Thanks @eddeee888! - Implement Scalars with input/output types

    In GraphQL, Scalar types can be different for client and server. For example, given the native GraphQL ID:

    • A client may send string or number in the input
    • A client receives string in its selection set (i.e output)
    • A server receives string in the resolver (GraphQL parses string or number received from the client to string)
    • A server may return string or number (GraphQL serializes the value to string before sending it to the client )

    Currently, we represent every Scalar with only one type. This is what codegen generates as base type:

    export type Scalars = {
      ID: string;
    };

    Then, this is used in both input and output type e.g.

    export type Book = {
      __typename?: 'Book';
      id: Scalars['ID']; // Output's ID can be `string` 👍
    };
    
    export type QueryBookArgs = {
      id: Scalars['ID']; // Input's ID can be `string` or `number`. However, the type is only `string` here 👎
    };

    This PR extends each Scalar to have input and output:

    export type Scalars = {
      ID: {
        input: string | number;
        output: string;
      };
    };

    Then, each input/output GraphQL type can correctly refer to the correct input/output scalar type:

    export type Book = {
      __typename?: 'Book';
      id: Scalars['ID']['output']; // Output's ID can be `string` 👍
    };
    
    export type QueryBookArgs = {
      id: Scalars['ID']['input']; // Input's ID can be `string` or `number` 👍
    };

    Note that for typescript-resolvers, the type of ID needs to be inverted. However, the referenced types in GraphQL input/output types should still work correctly:

    export type Scalars = {
      ID: {
        input: string;
        output: string | number;
      }
    }
    
    export type Book = {
      __typename?: "Book";
      id: Scalars["ID"]['output']; // Resolvers can return `string` or `number` in ID fields 👍
    };
    
    export type QueryBookArgs = {
      id: Scalars["ID"]['input']; // Resolvers receive `string` in ID fields 👍
    };
    
    export type ResolversTypes = {
      ID: ID: ResolverTypeWrapper<Scalars['ID']['output']>; // Resolvers can return `string` or `number` in ID fields 👍
    }
    
    export type ResolversParentTypes = {
      ID: Scalars['ID']['output']; // Resolvers receive `string` or `number` from parents 👍
    };

    Config changes:

    1. Scalars option can now take input/output types:
    config: {
      scalars: {
        ID: {
          input: 'string',
          output: 'string | number'
        }
      }
    }
    1. If a string is given (instead of an object with input/output fields), it will be used as both input and output types:
    config: {
      scalars: {
        ID: 'string'; // This means `string` will be used for both ID's input and output types
      }
    }
    1. BREAKING CHANGE: External module Scalar types need to be an object with input/output fields
    config: {
      scalars: {
        ID: './path/to/scalar-module';
      }
    }

    If correctly, wired up, the following will be generated:

    // Previously, imported `ID` type can be a primitive type, now it must be an object with input/output fields
    import { ID } from './path/to/scalar-module';
    
    export type Scalars = {
      ID: { input: ID['input']; output: ID['output'] };
    };

    BREAKING CHANGE: This changes Scalar types which could be referenced in other plugins. If you are a plugin maintainer and reference Scalar, please update your plugin to use the correct input/output types.

  • bb66c2a31 Thanks @n1ru4l! - Require Node.js >= 16. Drop support for Node.js 14

Minor Changes

  • #9196 3848a2b73 Thanks @beerose! - Add @defer directive support

    When a query includes a deferred fragment field, the server will return a partial response with the non-deferred fields first, followed by the remaining fields once they have been resolved.

    Once start using the @defer directive in your queries, the generated code will automatically include support for the directive.

    // src/index.tsx
    import { graphql } from './gql';
    const OrdersFragment = graphql(`
      fragment OrdersFragment on User {
        orders {
          id
          total
        }
      }
    `);
    const GetUserQuery = graphql(`
      query GetUser($id: ID!) {
        user(id: $id) {
          id
          name
          ...OrdersFragment @defer
        }
      }
    `);

    The generated type for GetUserQuery will have information that the fragment is incremental, meaning it may not be available right away.

    // gql/graphql.ts
    export type GetUserQuery = { __typename?: 'Query'; id: string; name: string } & ({
      __typename?: 'Query';
    } & {
      ' $fragmentRefs'?: { OrdersFragment: Incremental<OrdersFragment> };
    });

    Apart from generating code that includes support for the @defer directive, the Codegen also exports a utility function called isFragmentReady. You can use it to conditionally render components based on whether the data for a deferred fragment is available:

    const OrdersList = (props: { data: FragmentType<typeof OrdersFragment> }) => {
      const data = useFragment(OrdersFragment, props.data);
      return (
        // render orders list
      )
    };
    
    function App() {
      const { data } = useQuery(GetUserQuery);
      return (
        {data && (
          <>
            {isFragmentReady(GetUserQuery, OrdersFragment, data)
    					&& <OrdersList data={data} />}
          </>
        )}
      );
    }
    export default App;
  • #9304 e1dc75f3c Thanks @esfomeado! - Added support for disabling suffixes on Enums.

Patch Changes

3.0.4

Patch Changes

  • Updated dependencies [386cf9044, 402cb8ac0]:
    • @graphql-codegen/visitor-plugin-common@3.1.1

3.0.3

Patch Changes

3.0.2

Patch Changes

3.0.1

Patch Changes

3.0.0

Major Changes

Patch Changes

  • Updated dependencies [fc79b65d4, fd0b0c813]:
    • @graphql-codegen/visitor-plugin-common@3.0.0
    • @graphql-codegen/plugin-helpers@4.0.0
    • @graphql-codegen/schema-ast@3.0.0

2.8.8

Patch Changes

  • Updated dependencies [a98198524]:
    • @graphql-codegen/visitor-plugin-common@2.13.8

2.8.7

Patch Changes

  • Updated dependencies [eb454d06c]:
    • @graphql-codegen/visitor-plugin-common@2.13.7

2.8.6

Patch Changes

  • Updated dependencies [ed87c782b, ed87c782b, ed87c782b, 6c6b6f2df]:
    • @graphql-codegen/plugin-helpers@3.1.2
    • @graphql-codegen/schema-ast@2.6.1
    • @graphql-codegen/visitor-plugin-common@2.13.6

2.8.5

Patch Changes

  • 46f75304a Thanks @saihaj! - fix the version of @graphql-codegen/plugin-helpers@3.1.1

  • Updated dependencies [fedd71cbb, 307a5d350, 46f75304a]:

    • @graphql-codegen/schema-ast@2.6.0
    • @graphql-codegen/plugin-helpers@3.1.1
    • @graphql-codegen/visitor-plugin-common@2.13.5

2.8.4

Patch Changes

  • Updated dependencies [a6c2097f4, a6c2097f4, f79a00e8a, c802a0c0b]:
    • @graphql-codegen/plugin-helpers@3.0.0
    • @graphql-codegen/visitor-plugin-common@2.13.4
    • @graphql-codegen/schema-ast@2.5.2

2.8.3

Patch Changes

  • Updated dependencies [62f655452]:
    • @graphql-codegen/visitor-plugin-common@2.13.3

2.8.2

Patch Changes

  • #8586 ef4c2c9c2 Thanks @levrik! - Fix incompatibility between @oneOf input types and declaration kind other than type

  • Updated dependencies [ef4c2c9c2]:

    • @graphql-codegen/visitor-plugin-common@2.13.2

2.8.1

Patch Changes

  • Updated dependencies [63dc8f205]:
    • @graphql-codegen/visitor-plugin-common@2.13.1
    • @graphql-codegen/plugin-helpers@2.7.2

2.8.0

Minor Changes

2.7.5

Patch Changes

  • Updated dependencies [a46b8d99c]:
    • @graphql-codegen/visitor-plugin-common@2.13.0

2.7.4

Patch Changes

  • Updated dependencies [1bd7f771c]:
    • @graphql-codegen/visitor-plugin-common@2.12.2

2.7.3

Patch Changes

  • #8189 b408f8238 Thanks @n1ru4l! - Fix CommonJS TypeScript resolution with moduleResolution node16 or nodenext

  • Updated dependencies [b408f8238, 47d0a57e2]:

    • @graphql-codegen/schema-ast@2.5.1
    • @graphql-codegen/visitor-plugin-common@2.12.1
    • @graphql-codegen/plugin-helpers@2.6.2

2.7.2

Patch Changes

  • Updated dependencies [2cbcbb371]
    • @graphql-codegen/visitor-plugin-common@2.12.0
    • @graphql-codegen/plugin-helpers@2.6.0

2.7.1

Patch Changes

  • Updated dependencies [525ad580b]
    • @graphql-codegen/visitor-plugin-common@2.11.1

2.7.0

Minor Changes

Patch Changes

  • Updated dependencies [68bb30e19]
  • Updated dependencies [d84afec09]
  • Updated dependencies [a4fe5006b]
  • Updated dependencies [8e44df58b]
    • @graphql-codegen/visitor-plugin-common@2.11.0
    • @graphql-codegen/schema-ast@2.5.0
    • @graphql-codegen/plugin-helpers@2.5.0

2.6.0

Minor Changes

  • aa1e6eafd: Add @Deprecated support for input

Patch Changes

  • 8b10f22be: Ensure falsy enum values are still mapped
  • Updated dependencies [aa1e6eafd]
  • Updated dependencies [a42fcbfe4]
  • Updated dependencies [8b10f22be]
    • @graphql-codegen/visitor-plugin-common@2.10.0

2.5.1

Patch Changes

  • Updated dependencies [d16bebacb]
    • @graphql-codegen/visitor-plugin-common@2.9.1

2.5.0

Minor Changes

  • c3d7b7226: support the @oneOf directive on input types.

Patch Changes

  • Updated dependencies [c3d7b7226]
    • @graphql-codegen/visitor-plugin-common@2.9.0

2.4.11

Patch Changes

  • Updated dependencies [f1fb77bd4]
    • @graphql-codegen/visitor-plugin-common@2.8.0

2.4.10

Patch Changes

  • 9a5f31cb6: New option onlyEnums for Typescript
  • Updated dependencies [9a5f31cb6]
    • @graphql-codegen/visitor-plugin-common@2.7.6

2.4.9

Patch Changes

  • Updated dependencies [2966686e9]
    • @graphql-codegen/visitor-plugin-common@2.7.5

2.4.8

Patch Changes

  • Updated dependencies [337fd4f77]
    • @graphql-codegen/visitor-plugin-common@2.7.4

2.4.7

Patch Changes

  • 54718c039: Improve @Deprecated Enum Type developer experience
  • Updated dependencies [54718c039]
    • @graphql-codegen/visitor-plugin-common@2.7.3

2.4.6

Patch Changes

  • Updated dependencies [11d05e361]
    • @graphql-codegen/visitor-plugin-common@2.7.2

2.4.5

Patch Changes

  • Updated dependencies [fd55e2039]
    • @graphql-codegen/visitor-plugin-common@2.7.1

2.4.4

Patch Changes

  • Updated dependencies [1479233df]
    • @graphql-codegen/visitor-plugin-common@2.7.0

2.4.3

Patch Changes

  • Updated dependencies [c8ef37ae0]
  • Updated dependencies [754a33715]
  • Updated dependencies [bef4376d5]
  • Updated dependencies [be7cb3a82]
    • @graphql-codegen/visitor-plugin-common@2.6.0
    • @graphql-codegen/plugin-helpers@2.4.0

2.4.2

Patch Changes

  • 6002feb3d: Fix exports in package.json files for react-native projects
  • Updated dependencies [6002feb3d]
    • @graphql-codegen/schema-ast@2.4.1
    • @graphql-codegen/visitor-plugin-common@2.5.2
    • @graphql-codegen/plugin-helpers@2.3.2

2.4.1

Patch Changes

  • Updated dependencies [a9f1f1594]
  • Updated dependencies [9ea6621ec]
    • @graphql-codegen/visitor-plugin-common@2.5.1

2.4.0

Minor Changes

  • 4c5c84c1b: Added InputMaybe, a different type of Maybe type for input/arguments

2.3.1

Patch Changes

  • 6c898efe5: list all dependencies used by the package in the package.json
  • Updated dependencies [f3833243d]
  • Updated dependencies [6c898efe5]
    • @graphql-codegen/schema-ast@2.4.0

2.3.0

Minor Changes

  • 97ddb487a: feat: GraphQL v16 compatibility

Patch Changes

  • Updated dependencies [97ddb487a]
    • @graphql-codegen/visitor-plugin-common@2.5.0
    • @graphql-codegen/plugin-helpers@2.3.0

2.2.4

Patch Changes

  • Updated dependencies [ad02cb9b8]
    • @graphql-codegen/visitor-plugin-common@2.4.0

2.2.3

Patch Changes

  • Updated dependencies [b9e85adae]
  • Updated dependencies [7c60e5acc]
  • Updated dependencies [3c2c847be]
    • @graphql-codegen/visitor-plugin-common@2.3.0
    • @graphql-codegen/plugin-helpers@2.2.0

2.2.2

Patch Changes

  • Updated dependencies [0b090e31a]
    • @graphql-codegen/visitor-plugin-common@2.2.1

2.2.1

Patch Changes

  • cfa0a8f80: Apply missing namingConvention when numericEnums is used

2.2.0

Minor Changes

  • d6c2d4c09: Allow declaring Argument and InputType field mappings based on directive annotations.

    WARNING: Using this option does only change the type definitions.

    For actually ensuring that a type is correct at runtime you will have to use schema transforms (e.g. with @graphql-tools/utils mapSchema) that apply those rules! Otherwise, you might end up with a runtime type mismatch which could cause unnoticed bugs or runtime errors.

    Please use this configuration option with care!

    plugins:
      config:
        directiveArgumentAndInputFieldMappings:
          asNumber: number
    directive @asNumber on ARGUMENT_DEFINITION | INPUT_FIELD_DEFINITION
    
    input MyInput {
      id: ID! @asNumber
    }
    
    type User {
      id: ID!
    }
    
    type Query {
      user(id: ID! @asNumber): User
    }

    Usage e.g. with typescript-resolvers

    const Query: QueryResolvers = {
      user(_, args) {
        // args.id is of type 'number'
      },
    };
  • 8261e4161: Make futureProofEnums option work for all enum output types, (it worked only with enumsAsTypes)

Patch Changes

  • Updated dependencies [d6c2d4c09]
  • Updated dependencies [feeae1c66]
  • Updated dependencies [5086791ac]
    • @graphql-codegen/visitor-plugin-common@2.2.0

2.1.2

Patch Changes

  • Updated dependencies [6470e6cc9]
  • Updated dependencies [263570e50]
  • Updated dependencies [35199dedf]
    • @graphql-codegen/visitor-plugin-common@2.1.2
    • @graphql-codegen/plugin-helpers@2.1.1

2.1.1

Patch Changes

  • Updated dependencies [aabeff181]
    • @graphql-codegen/visitor-plugin-common@2.1.1

2.1.0

Minor Changes

  • 440172cfe: support ESM

Patch Changes

  • Updated dependencies [290170262]
  • Updated dependencies [24185985a]
  • Updated dependencies [39773f59b]
  • Updated dependencies [440172cfe]
    • @graphql-codegen/visitor-plugin-common@2.1.0
    • @graphql-codegen/plugin-helpers@2.1.0

2.0.0

Major Changes

  • b0cb13df4: Update to latest graphql-tools and graphql-config version.

    ‼️ ‼️ ‼️ Please note ‼️ ‼️ ‼️:

    This is a breaking change since Node 10 is no longer supported in graphql-tools, and also no longer supported for Codegen packages.

Patch Changes

  • Updated dependencies [d80efdec4]
  • Updated dependencies [d80efdec4]
  • Updated dependencies [b0cb13df4]
    • @graphql-codegen/visitor-plugin-common@2.0.0
    • @graphql-codegen/plugin-helpers@2.0.0

1.23.0

Minor Changes

  • 9005cc17: add allowEnumStringTypes option for allowing string literals as valid return types from resolvers in addition to enum values._

Patch Changes

  • Updated dependencies [df19a4ed]
  • Updated dependencies [470336a1]
  • Updated dependencies [9005cc17]
    • @graphql-codegen/visitor-plugin-common@1.22.0
    • @graphql-codegen/plugin-helpers@1.18.8

1.22.4

Patch Changes

  • Updated dependencies [6762aff5]
    • @graphql-codegen/visitor-plugin-common@1.21.3

1.22.3

Patch Changes

  • Updated dependencies [6aaecf1c]
    • @graphql-codegen/visitor-plugin-common@1.21.2

1.22.2

Patch Changes

  • Updated dependencies [cf1e5abc]
    • @graphql-codegen/visitor-plugin-common@1.21.1

1.22.1

Patch Changes

  • Updated dependencies [dfd25caf]
  • Updated dependencies [8da7dff6]
    • @graphql-codegen/visitor-plugin-common@1.21.0
    • @graphql-codegen/plugin-helpers@1.18.7

1.22.0

Minor Changes

  • f0b5ea53: Add entireFieldWrapperValue configuration option, to wrap arrays
  • 097bea2f: Added new configuration settings for scalars: strictScalars and defaultScalarType

Patch Changes

  • d9212aa0: fix(visitor-plugin-common): guard for a runtime type error
  • Updated dependencies [d9212aa0]
  • Updated dependencies [f0b5ea53]
  • Updated dependencies [097bea2f]
    • @graphql-codegen/visitor-plugin-common@1.20.0
    • @graphql-codegen/plugin-helpers@1.18.5

1.21.1

Patch Changes

  • e947f8e3: Allow to have declarationKind of type: class, interface: interface
  • 29b75b1e: enhance(namingConvention): use change-case-all instead of individual packages for naming convention
  • Updated dependencies [e947f8e3]
  • Updated dependencies [29b75b1e]
  • Updated dependencies [d4942d04]
  • Updated dependencies [1f6f3db6]
  • Updated dependencies [29b75b1e]
    • @graphql-codegen/visitor-plugin-common@1.19.0
    • @graphql-codegen/plugin-helpers@1.18.3

1.21.0

Minor Changes

  • 34b8087e: Adds futureProofUnion option to account for a possible unknown new type added to union types

Patch Changes

  • Updated dependencies [5749cb8a]
  • Updated dependencies [5a12fe58]
    • @graphql-codegen/visitor-plugin-common@1.18.3

1.20.2

Patch Changes

  • ca66569f: Fix issues with undefined calls for str.replace
  • Updated dependencies [ca66569f]
    • @graphql-codegen/visitor-plugin-common@1.18.2

1.20.1

Patch Changes

  • 4444348d: Correctly escape enum values defined in the GraphQLSchema object
  • Updated dependencies [63be0f40]
  • Updated dependencies [190482a1]
  • Updated dependencies [4444348d]
  • Updated dependencies [142b32b3]
  • Updated dependencies [42213fa0]
    • @graphql-codegen/visitor-plugin-common@1.18.1

1.20.0

Minor Changes

  • d95db95b: feat(typescript): bump visitor-plugin-common

1.19.0

Minor Changes

  • 1d6a593f: Added useImplementingTypes flag for generating code that uses implementing types instead of interfaces

Patch Changes

  • Updated dependencies [8356f8a2]
    • @graphql-codegen/visitor-plugin-common@1.17.21

1.18.1

Patch Changes

  • 1183d173: Bump all packages to resolve issues with shared dependencies
  • Updated dependencies [1183d173]
    • @graphql-codegen/visitor-plugin-common@1.17.20
    • @graphql-codegen/plugin-helpers@1.18.2

1.18.0

Minor Changes

  • 49242c20: Added a "defaultValue" option in the "avoidOptionals" config See #5112

Patch Changes

  • Updated dependencies [99819bf1]
  • Updated dependencies [c3b59e81]
    • @graphql-codegen/visitor-plugin-common@1.17.19

1.17.11

Patch Changes

  • 077cf064: Fixed reading of enumValues config values
  • 92d8f876: Fixed unquoted numeric enum identifiers
  • Updated dependencies [92d8f876]
    • @graphql-codegen/visitor-plugin-common@1.17.16

1.17.10

Patch Changes

  • 7ad7a1ae: Make non nullable input field with default value optional
  • Updated dependencies [d2cde3d5]
  • Updated dependencies [89a6aa80]
  • Updated dependencies [f603b8f8]
  • Updated dependencies [da8bdd17]
    • @graphql-codegen/visitor-plugin-common@1.17.15
    • @graphql-codegen/plugin-helpers@1.17.9

1.17.9

Patch Changes

  • 07f9b1b2: Fix a bug caused numeric enum values defined in the GraphQLSchema to be printed incorrectly
  • Updated dependencies [07f9b1b2]
  • Updated dependencies [35f67120]
    • @graphql-codegen/visitor-plugin-common@1.17.14

1.17.8

Patch Changes

  • 1d7c6432: Bump all packages to allow "^" in deps and fix compatibility issues
  • 1d7c6432: Bump versions of @graphql-tools/ packages to fix issues with loading schemas and SDL comments
  • Updated dependencies [1d7c6432]
  • Updated dependencies [1d7c6432]
    • @graphql-codegen/visitor-plugin-common@1.17.13
    • @graphql-codegen/plugin-helpers@1.17.8