From 6e3fd3809f9a13c6faf6e5ce138f53920f3225dc Mon Sep 17 00:00:00 2001 From: TheGuildBot <59414373+theguild-bot@users.noreply.github.com> Date: Tue, 4 Apr 2023 03:27:18 +0900 Subject: [PATCH] chore(release): update monorepo packages versions (#9132) Co-authored-by: github-actions[bot] --- ...codegen_client-preset-9137-dependencies.md | 5 - .changeset/blue-pans-protect.md | 63 ------- .changeset/brave-papayas-shout.md | 41 ---- .changeset/bright-impalas-try.md | 6 - .changeset/clean-files-begin.md | 5 - .changeset/gold-dragons-poke.md | 7 - .changeset/happy-queens-rescue.md | 5 - .changeset/sharp-clouds-peel.md | 5 - .changeset/spicy-worms-jam.md | 108 ----------- .../package.json | 4 +- examples/persisted-documents/package.json | 4 +- examples/programmatic-typescript/package.json | 10 +- .../apollo-client-swc-plugin/package.json | 4 +- examples/react/apollo-client/package.json | 4 +- examples/react/http-executor/package.json | 4 +- examples/react/nextjs-swr/package.json | 4 +- .../react/tanstack-react-query/package.json | 4 +- examples/react/urql/package.json | 4 +- examples/typescript-esm/package.json | 4 +- .../typescript-graphql-request/package.json | 4 +- examples/typescript-resolvers/package.json | 6 +- examples/vite/vite-react-cts/package.json | 4 +- examples/vite/vite-react-mts/package.json | 4 +- examples/vite/vite-react-ts/package.json | 4 +- examples/vue/apollo-composable/package.json | 4 +- examples/vue/urql/package.json | 4 +- examples/vue/villus/package.json | 4 +- examples/yoga-tests/package.json | 4 +- packages/graphql-codegen-cli/CHANGELOG.md | 46 +++++ packages/graphql-codegen-cli/package.json | 4 +- .../other/visitor-plugin-common/CHANGELOG.md | 174 +++++++++++++++++ .../other/visitor-plugin-common/package.json | 4 +- .../typescript/document-nodes/CHANGELOG.md | 8 + .../typescript/document-nodes/package.json | 6 +- .../gql-tag-operations/CHANGELOG.md | 12 ++ .../gql-tag-operations/package.json | 6 +- .../typescript/operations/CHANGELOG.md | 9 + .../typescript/operations/package.json | 8 +- .../plugins/typescript/resolvers/CHANGELOG.md | 176 ++++++++++++++++++ .../plugins/typescript/resolvers/package.json | 8 +- .../typed-document-node/CHANGELOG.md | 12 ++ .../typed-document-node/package.json | 6 +- .../typescript/typescript/CHANGELOG.md | 10 + .../typescript/typescript/package.json | 6 +- packages/presets/client/CHANGELOG.md | 18 ++ packages/presets/client/package.json | 14 +- packages/presets/graphql-modules/CHANGELOG.md | 8 + packages/presets/graphql-modules/package.json | 6 +- .../graphql-codegen-testing/CHANGELOG.md | 9 + .../graphql-codegen-testing/package.json | 4 +- packages/utils/plugins-helpers/CHANGELOG.md | 45 +++++ packages/utils/plugins-helpers/package.json | 2 +- website/package.json | 10 +- 53 files changed, 611 insertions(+), 329 deletions(-) delete mode 100644 .changeset/@graphql-codegen_client-preset-9137-dependencies.md delete mode 100644 .changeset/blue-pans-protect.md delete mode 100644 .changeset/brave-papayas-shout.md delete mode 100644 .changeset/bright-impalas-try.md delete mode 100644 .changeset/clean-files-begin.md delete mode 100644 .changeset/gold-dragons-poke.md delete mode 100644 .changeset/happy-queens-rescue.md delete mode 100644 .changeset/sharp-clouds-peel.md delete mode 100644 .changeset/spicy-worms-jam.md diff --git a/.changeset/@graphql-codegen_client-preset-9137-dependencies.md b/.changeset/@graphql-codegen_client-preset-9137-dependencies.md deleted file mode 100644 index c899084638a..00000000000 --- a/.changeset/@graphql-codegen_client-preset-9137-dependencies.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@graphql-codegen/client-preset": patch ---- -dependencies updates: - - Updated dependency [`@graphql-typed-document-node/core@3.2.0` ↗︎](https://www.npmjs.com/package/@graphql-typed-document-node/core/v/3.2.0) (from `3.1.2`, in `dependencies`) diff --git a/.changeset/blue-pans-protect.md b/.changeset/blue-pans-protect.md deleted file mode 100644 index 23f5d792dd2..00000000000 --- a/.changeset/blue-pans-protect.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -'@graphql-codegen/visitor-plugin-common': patch -'@graphql-codegen/typescript-resolvers': patch ---- - -Fix `ResolversUnionTypes` being used in `ResolversParentTypes` - -Previously, objects with mappable fields are converted to Omit format that references its own type group or `ResolversTypes` or `ResolversParentTypes` e.g. - -```ts -export type ResolversTypes = { - Book: ResolverTypeWrapper; - BookPayload: ResolversTypes["BookResult"] | ResolversTypes["StandardError"]; - // Note: `result` on the next line references `ResolversTypes["Book"]` - BookResult: ResolverTypeWrapper & { result?: Maybe }>; - StandardError: ResolverTypeWrapper; -}; - -export type ResolversParentTypes = { - Book: BookMapper; - BookPayload: ResolversParentTypes["BookResult"] | ResolversParentTypes["StandardError"]; - // Note: `result` on the next line references `ResolversParentTypes["Book"]` - BookResult: Omit & { result?: Maybe }; - StandardError: StandardError; -}; -``` - -In https://github.com/dotansimha/graphql-code-generator/pull/9069, we extracted resolver union types to its own group: - -```ts -export type ResolversUnionTypes = { - // Note: `result` on the next line references `ResolversTypes["Book"]` which is only correct for the `ResolversTypes` case - BookPayload: (Omit & { result?: Maybe }) | StandardError; -}; - -export type ResolversTypes = { - Book: ResolverTypeWrapper; - BookPayload: ResolverTypeWrapper; - BookResult: ResolverTypeWrapper & { result?: Maybe }>; - StandardError: ResolverTypeWrapper; -}; - -export type ResolversParentTypes = { - Book: BookMapper; - BookPayload: ResolversUnionTypes["BookPayload"]; - BookResult: Omit & { result?: Maybe }; - StandardError: StandardError; -}; -``` - -This change creates an extra `ResolversUnionParentTypes` that is referenced by `ResolversParentTypes` to ensure backwards compatibility: - -```ts -export type ResolversUnionTypes = { - BookPayload: (Omit & { result?: Maybe }) | StandardError; -}; - -// ... and the reference is changed in ResolversParentTypes: -export type ResolversParentTypes = { - // ... other fields - BookPayload: ResolversUnionParentTypes["BookPayload"]; -}; -``` diff --git a/.changeset/brave-papayas-shout.md b/.changeset/brave-papayas-shout.md deleted file mode 100644 index 0f1f22c8da5..00000000000 --- a/.changeset/brave-papayas-shout.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -'@graphql-codegen/plugin-helpers': minor -'@graphql-codegen/cli': minor ---- - -Add `watchPattern` config option for `generates` sections. - -By default, `watch` mode automatically watches all GraphQL schema and document files. This means when a change is detected, Codegen CLI is run. - -A user may want to run Codegen CLI when non-schema and non-document files are changed. Each `generates` section now has a `watchPattern` option to allow more file patterns to be added to the list of patterns to watch. - -In the example below, mappers are exported from `schema.mappers.ts` files. We want to re-run Codegen if the content of `*.mappers.ts` files change because they change the generated types file. To solve this, we can add mapper file patterns to watch using the glob pattern used for schema and document files. - -```ts -// codegen.ts -const config: CodegenConfig = { - schema: 'src/schema/**/*.graphql', - generates: { - 'src/schema/types.ts': { - plugins: ['typescript', 'typescript-resolvers'], - config: { - mappers: { - User: './user/schema.mappers#UserMapper', - Book: './book/schema.mappers#BookMapper', - }, - } - watchPattern: 'src/schema/**/*.mappers.ts', // Watches mapper files in `watch` mode. Use an array for multiple patterns e.g. `['src/*.pattern1.ts','src/*.pattern2.ts']` - }, - }, -}; -``` - -Then, run Codegen CLI in `watch` mode: - -```shell -yarn graphql-codegen --watch -``` - -Now, updating `*.mappers.ts` files re-runs Codegen! 🎉 - -Note: `watchPattern` is only used in `watch` mode i.e. running CLI with `--watch` flag. diff --git a/.changeset/bright-impalas-try.md b/.changeset/bright-impalas-try.md deleted file mode 100644 index 80c75cdd007..00000000000 --- a/.changeset/bright-impalas-try.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -'@graphql-codegen/typescript-resolvers': patch -'@graphql-codegen/plugin-helpers': patch ---- - -Resolve issue with nesting fields in `@provides` directive being prevented diff --git a/.changeset/clean-files-begin.md b/.changeset/clean-files-begin.md deleted file mode 100644 index 8018a47a176..00000000000 --- a/.changeset/clean-files-begin.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@graphql-codegen/typescript': patch ---- - -Properly escape enum identifiers when enumsAsConst is used diff --git a/.changeset/gold-dragons-poke.md b/.changeset/gold-dragons-poke.md deleted file mode 100644 index 75e9d69acd6..00000000000 --- a/.changeset/gold-dragons-poke.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -'@graphql-codegen/typed-document-node': major -'@graphql-codegen/gql-tag-operations': major -'@graphql-codegen/client-preset': major ---- - -Add `TypedDocumentNode` string alternative that doesn't require GraphQL AST on the client. This change requires `@graphql-typed-document-node/core` in version `3.2.0` or higher. diff --git a/.changeset/happy-queens-rescue.md b/.changeset/happy-queens-rescue.md deleted file mode 100644 index 3629932faac..00000000000 --- a/.changeset/happy-queens-rescue.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@graphql-codegen/testing': patch ---- - -Add complex test cases for resolvers tests diff --git a/.changeset/sharp-clouds-peel.md b/.changeset/sharp-clouds-peel.md deleted file mode 100644 index cb60de01d86..00000000000 --- a/.changeset/sharp-clouds-peel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@graphql-codegen/visitor-plugin-common': patch ---- - -Don't emit import statements for unused fragments diff --git a/.changeset/spicy-worms-jam.md b/.changeset/spicy-worms-jam.md deleted file mode 100644 index cdef2a4488e..00000000000 --- a/.changeset/spicy-worms-jam.md +++ /dev/null @@ -1,108 +0,0 @@ ---- -'@graphql-codegen/visitor-plugin-common': minor -'@graphql-codegen/typescript-resolvers': minor ---- - -[typescript-resolvers] Add `resolversNonOptionalTypename` config option. - -This is extending on `ResolversUnionTypes` implemented in https://github.com/dotansimha/graphql-code-generator/pull/9069 - -`resolversNonOptionalTypename` adds non-optional `__typename` to union members of `ResolversUnionTypes`, without affecting the union members' base intefaces. - -A common use case for non-optional `__typename` of union members is using it as the common field to work out the final schema type. This makes implementing the union's `__resolveType` very simple as we can use `__typename` to decide which union member the resolved object is. Without this, we have to check the existence of field/s on the incoming object which could be verbose. - -For example, consider this schema: - -```graphql -type Query { - book(id: ID!): BookPayload! -} - -type Book { - id: ID! - isbn: String! -} - -type BookResult { - node: Book -} - -type PayloadError { - message: String! -} - -union BookPayload = BookResult | PayloadError -``` - -*With optional `__typename`:* We need to check existence of certain fields to resolve type in the union resolver: - -```ts -// Query/book.ts -export const book = async () => { - try { - const book = await fetchBook(); - // 1. No `__typename` in resolver results... - return { - node: book - } - } catch(e) { - return { - message: "Failed to fetch book" - } - } -} - -// BookPayload.ts -export const BookPayload = { - __resolveType: (parent) => { - // 2. ... means more checks in `__resolveType` - if('message' in parent) { - return 'PayloadError'; - } - return 'BookResult' - } -} -``` - -*With non-optional `__typename`:* Resolvers declare the type. This which gives us better TypeScript support in resolvers and simplify `__resolveType` implementation: - -```ts -// Query/book.ts -export const book = async () => { - try { - const book = await fetchBook(); - // 1. `__typename` is declared in resolver results... - return { - __typename: 'BookResult', // 1a. this also types `node` for us 🎉 - node: book - } - } catch(e) { - return { - __typename: 'PayloadError', - message: "Failed to fetch book" - } - } -} - -// BookPayload.ts -export const BookPayload = { - __resolveType: (parent) => parent.__typename, // 2. ... means a very simple check in `__resolveType` -} -``` - -*Using `resolversNonOptionalTypename`:* add it into `typescript-resolvers` plugin config: - -```ts -// codegen.ts -const config: CodegenConfig = { - schema: 'src/schema/**/*.graphql', - generates: { - 'src/schema/types.ts': { - plugins: ['typescript', 'typescript-resolvers'], - config: { - resolversNonOptionalTypename: true // Or `resolversNonOptionalTypename: { unionMember: true }` - } - }, - }, -}; -``` diff --git a/examples/persisted-documents-string-mode/package.json b/examples/persisted-documents-string-mode/package.json index a368202ea23..d9b2740a79a 100644 --- a/examples/persisted-documents-string-mode/package.json +++ b/examples/persisted-documents-string-mode/package.json @@ -10,8 +10,8 @@ "@graphql-typed-document-node/core": "3.2.0", "jest": "28.1.3", "babel-jest": "28.1.3", - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@babel/core": "7.21.4", "@babel/preset-env": "7.21.4", "@babel/preset-typescript": "7.21.4" diff --git a/examples/persisted-documents/package.json b/examples/persisted-documents/package.json index 080181c4bce..8b3e2dbb727 100644 --- a/examples/persisted-documents/package.json +++ b/examples/persisted-documents/package.json @@ -10,8 +10,8 @@ "@graphql-typed-document-node/core": "3.2.0", "jest": "28.1.3", "babel-jest": "28.1.3", - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@babel/core": "7.21.4", "@babel/preset-env": "7.21.4", "@babel/preset-typescript": "7.21.4" diff --git a/examples/programmatic-typescript/package.json b/examples/programmatic-typescript/package.json index b3cececa6fe..202accc1ff8 100644 --- a/examples/programmatic-typescript/package.json +++ b/examples/programmatic-typescript/package.json @@ -11,11 +11,11 @@ }, "dependencies": { "@graphql-codegen/core": "3.1.0", - "@graphql-codegen/plugin-helpers": "4.1.0", - "@graphql-codegen/typed-document-node": "3.0.2", - "@graphql-codegen/typescript": "3.0.2", - "@graphql-codegen/typescript-operations": "3.0.2", - "@graphql-codegen/typescript-resolvers": "3.1.1", + "@graphql-codegen/plugin-helpers": "4.2.0", + "@graphql-codegen/typed-document-node": "4.0.0", + "@graphql-codegen/typescript": "3.0.3", + "@graphql-codegen/typescript-operations": "3.0.3", + "@graphql-codegen/typescript-resolvers": "3.2.0", "@graphql-tools/graphql-file-loader": "7.5.16", "@graphql-tools/load": "7.8.13", "@graphql-tools/schema": "9.0.17", diff --git a/examples/react/apollo-client-swc-plugin/package.json b/examples/react/apollo-client-swc-plugin/package.json index 96f2ccfa0a9..c929931a09f 100644 --- a/examples/react/apollo-client-swc-plugin/package.json +++ b/examples/react/apollo-client-swc-plugin/package.json @@ -9,8 +9,8 @@ }, "devDependencies": { "@graphql-codegen/client-preset-swc-plugin": "0.1.1", - "@graphql-codegen/client-preset": "^2.1.1", - "@graphql-codegen/cli": "^3.2.2", + "@graphql-codegen/client-preset": "^3.0.0", + "@graphql-codegen/cli": "^3.3.0", "@vitejs/plugin-react-swc": "^3.2.0", "@types/react": "18.0.32", "@types/react-dom": "18.0.11", diff --git a/examples/react/apollo-client/package.json b/examples/react/apollo-client/package.json index 33e3637ed54..1dc229259c4 100644 --- a/examples/react/apollo-client/package.json +++ b/examples/react/apollo-client/package.json @@ -9,8 +9,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-react": "^3.1.0", "@types/jest": "^27.5.2", "@types/node": "^18.11.18", diff --git a/examples/react/http-executor/package.json b/examples/react/http-executor/package.json index 651bf278ff1..043b14f548d 100644 --- a/examples/react/http-executor/package.json +++ b/examples/react/http-executor/package.json @@ -8,8 +8,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-react": "^3.1.0", "@types/jest": "^27.5.2", "@types/node": "^18.11.18", diff --git a/examples/react/nextjs-swr/package.json b/examples/react/nextjs-swr/package.json index ded2ad71cb9..77d3e0a4175 100644 --- a/examples/react/nextjs-swr/package.json +++ b/examples/react/nextjs-swr/package.json @@ -19,8 +19,8 @@ "swr": "^1.3.0" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@graphql-codegen/schema-ast": "3.0.1", "@graphql-codegen/client-preset-swc-plugin": "0.1.1", "@types/node": "^18.11.18", diff --git a/examples/react/tanstack-react-query/package.json b/examples/react/tanstack-react-query/package.json index 45240a057ad..202bd4d0ed4 100644 --- a/examples/react/tanstack-react-query/package.json +++ b/examples/react/tanstack-react-query/package.json @@ -8,8 +8,8 @@ "react-dom": "^18.2.0" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-react": "^3.1.0", "@types/jest": "^27.5.2", "@types/node": "^18.11.18", diff --git a/examples/react/urql/package.json b/examples/react/urql/package.json index d134eb9fb60..022b56fc2cf 100644 --- a/examples/react/urql/package.json +++ b/examples/react/urql/package.json @@ -10,8 +10,8 @@ "devDependencies": { "@types/react": "^18.0.17", "@types/react-dom": "^18.0.10", - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-react": "^3.1.0", "typescript": "5.0.3", "serve": "14.2.0", diff --git a/examples/typescript-esm/package.json b/examples/typescript-esm/package.json index ad5379b7ebf..0ae3ff92252 100644 --- a/examples/typescript-esm/package.json +++ b/examples/typescript-esm/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1" + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0" }, "dependencies": { "@graphql-typed-document-node/core": "3.2.0", diff --git a/examples/typescript-graphql-request/package.json b/examples/typescript-graphql-request/package.json index 0525ce40e5a..6d6c5538285 100644 --- a/examples/typescript-graphql-request/package.json +++ b/examples/typescript-graphql-request/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": true, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "babel-jest": "28.1.3", "jest": "28.1.3" }, diff --git a/examples/typescript-resolvers/package.json b/examples/typescript-resolvers/package.json index 5a404279fce..8c5386ea5bc 100644 --- a/examples/typescript-resolvers/package.json +++ b/examples/typescript-resolvers/package.json @@ -3,9 +3,9 @@ "version": "0.0.0", "private": true, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/typescript": "3.0.2", - "@graphql-codegen/typescript-resolvers": "3.1.1" + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/typescript": "3.0.3", + "@graphql-codegen/typescript-resolvers": "3.2.0" }, "dependencies": { "graphql": "16.6.0", diff --git a/examples/vite/vite-react-cts/package.json b/examples/vite/vite-react-cts/package.json index 234c6c9a256..13eef520f39 100644 --- a/examples/vite/vite-react-cts/package.json +++ b/examples/vite/vite-react-cts/package.json @@ -21,8 +21,8 @@ "vite": "^4.1.0" }, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", "cypress": "12.9.0", diff --git a/examples/vite/vite-react-mts/package.json b/examples/vite/vite-react-mts/package.json index 9821c61b105..b882e4a13f3 100644 --- a/examples/vite/vite-react-mts/package.json +++ b/examples/vite/vite-react-mts/package.json @@ -21,8 +21,8 @@ "vite": "^4.1.0" }, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", "cypress": "12.9.0", diff --git a/examples/vite/vite-react-ts/package.json b/examples/vite/vite-react-ts/package.json index 40497eab371..4a8208ce2e2 100644 --- a/examples/vite/vite-react-ts/package.json +++ b/examples/vite/vite-react-ts/package.json @@ -21,8 +21,8 @@ "vite": "^4.1.0" }, "devDependencies": { - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@types/react": "^18.0.27", "@types/react-dom": "^18.0.10", "cypress": "12.9.0", diff --git a/examples/vue/apollo-composable/package.json b/examples/vue/apollo-composable/package.json index fd726291e8a..5c862f7d0e7 100644 --- a/examples/vue/apollo-composable/package.json +++ b/examples/vue/apollo-composable/package.json @@ -17,8 +17,8 @@ "vue": "^3.2.37" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-vue": "^4.0.0", "typescript": "^5.0.0", "vite": "^4.1.0", diff --git a/examples/vue/urql/package.json b/examples/vue/urql/package.json index d7c9b1bcf31..3b78776d32c 100644 --- a/examples/vue/urql/package.json +++ b/examples/vue/urql/package.json @@ -16,8 +16,8 @@ "vue": "^3.2.45" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-vue": "^4.0.0", "typescript": "^5.0.0", "vite": "^4.1.0", diff --git a/examples/vue/villus/package.json b/examples/vue/villus/package.json index d2a68cec451..93732d89d2c 100644 --- a/examples/vue/villus/package.json +++ b/examples/vue/villus/package.json @@ -16,8 +16,8 @@ "vue": "^3.2.37" }, "devDependencies": { - "@graphql-codegen/cli": "^3.2.2", - "@graphql-codegen/client-preset": "^2.1.1", + "@graphql-codegen/cli": "^3.3.0", + "@graphql-codegen/client-preset": "^3.0.0", "@vitejs/plugin-vue": "^4.0.0", "typescript": "^5.0.0", "vite": "^4.1.0", diff --git a/examples/yoga-tests/package.json b/examples/yoga-tests/package.json index 62caf105e7d..e285855fa22 100644 --- a/examples/yoga-tests/package.json +++ b/examples/yoga-tests/package.json @@ -9,8 +9,8 @@ "@graphql-typed-document-node/core": "3.2.0", "jest": "28.1.3", "babel-jest": "28.1.3", - "@graphql-codegen/cli": "3.2.2", - "@graphql-codegen/client-preset": "2.1.1", + "@graphql-codegen/cli": "3.3.0", + "@graphql-codegen/client-preset": "3.0.0", "@babel/core": "7.21.4", "@babel/preset-env": "7.21.4", "@babel/preset-typescript": "7.21.4" diff --git a/packages/graphql-codegen-cli/CHANGELOG.md b/packages/graphql-codegen-cli/CHANGELOG.md index aa3ba92f371..dc6785baeea 100644 --- a/packages/graphql-codegen-cli/CHANGELOG.md +++ b/packages/graphql-codegen-cli/CHANGELOG.md @@ -1,5 +1,51 @@ # @graphql-codegen/cli +## 3.3.0 + +### Minor Changes + +- [#9151](https://github.com/dotansimha/graphql-code-generator/pull/9151) [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29) Thanks [@'./user/schema.mappers#UserMapper',](https://github.com/'./user/schema.mappers#UserMapper',)! - Add `watchPattern` config option for `generates` sections. + + By default, `watch` mode automatically watches all GraphQL schema and document files. This means when a change is detected, Codegen CLI is run. + + A user may want to run Codegen CLI when non-schema and non-document files are changed. Each `generates` section now has a `watchPattern` option to allow more file patterns to be added to the list of patterns to watch. + + In the example below, mappers are exported from `schema.mappers.ts` files. We want to re-run Codegen if the content of `*.mappers.ts` files change because they change the generated types file. To solve this, we can add mapper file patterns to watch using the glob pattern used for schema and document files. + + ```ts + // codegen.ts + const config: CodegenConfig = { + schema: 'src/schema/**/*.graphql', + generates: { + 'src/schema/types.ts': { + plugins: ['typescript', 'typescript-resolvers'], + config: { + mappers: { + + Book: './book/schema.mappers#BookMapper', + }, + } + watchPattern: 'src/schema/**/*.mappers.ts', // Watches mapper files in `watch` mode. Use an array for multiple patterns e.g. `['src/*.pattern1.ts','src/*.pattern2.ts']` + }, + }, + }; + ``` + + Then, run Codegen CLI in `watch` mode: + + ```shell + yarn graphql-codegen --watch + ``` + + Now, updating `*.mappers.ts` files re-runs Codegen! 🎉 + + Note: `watchPattern` is only used in `watch` mode i.e. running CLI with `--watch` flag. + +### Patch Changes + +- Updated dependencies [[`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087)]: + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.2.2 ### Patch Changes diff --git a/packages/graphql-codegen-cli/package.json b/packages/graphql-codegen-cli/package.json index e5d98b604f4..ad40f527c97 100644 --- a/packages/graphql-codegen-cli/package.json +++ b/packages/graphql-codegen-cli/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/cli", - "version": "3.2.2", + "version": "3.3.0", "license": "MIT", "bin": { "gql-gen": "dist/cjs/bin.js", @@ -44,7 +44,7 @@ "@babel/template": "^7.18.10", "@babel/types": "^7.18.13", "@graphql-codegen/core": "^3.1.0", - "@graphql-codegen/plugin-helpers": "^4.1.0", + "@graphql-codegen/plugin-helpers": "^4.2.0", "@graphql-tools/apollo-engine-loader": "^7.3.6", "@graphql-tools/code-file-loader": "^7.3.17", "@graphql-tools/git-loader": "^7.2.13", diff --git a/packages/plugins/other/visitor-plugin-common/CHANGELOG.md b/packages/plugins/other/visitor-plugin-common/CHANGELOG.md index 00328a9adf4..80fd9a83878 100644 --- a/packages/plugins/other/visitor-plugin-common/CHANGELOG.md +++ b/packages/plugins/other/visitor-plugin-common/CHANGELOG.md @@ -1,5 +1,179 @@ # @graphql-codegen/visitor-plugin-common +## 3.1.0 + +### Minor Changes + +- [#9146](https://github.com/dotansimha/graphql-code-generator/pull/9146) [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd) Thanks [@eddeee888](https://github.com/eddeee888)! - [typescript-resolvers] Add `resolversNonOptionalTypename` config option. + + This is extending on `ResolversUnionTypes` implemented in https://github.com/dotansimha/graphql-code-generator/pull/9069 + + `resolversNonOptionalTypename` adds non-optional `__typename` to union members of `ResolversUnionTypes`, without affecting the union members' base intefaces. + + A common use case for non-optional `__typename` of union members is using it as the common field to work out the final schema type. This makes implementing the union's `__resolveType` very simple as we can use `__typename` to decide which union member the resolved object is. Without this, we have to check the existence of field/s on the incoming object which could be verbose. + + For example, consider this schema: + + ```graphql + type Query { + book(id: ID!): BookPayload! + } + + type Book { + id: ID! + isbn: String! + } + + type BookResult { + node: Book + } + + type PayloadError { + message: String! + } + + union BookPayload = BookResult | PayloadError + ``` + + _With optional `__typename`:_ We need to check existence of certain fields to resolve type in the union resolver: + + ```ts + // Query/book.ts + export const book = async () => { + try { + const book = await fetchBook(); + // 1. No `__typename` in resolver results... + return { + node: book, + }; + } catch (e) { + return { + message: 'Failed to fetch book', + }; + } + }; + + // BookPayload.ts + export const BookPayload = { + __resolveType: parent => { + // 2. ... means more checks in `__resolveType` + if ('message' in parent) { + return 'PayloadError'; + } + return 'BookResult'; + }, + }; + ``` + + _With non-optional `__typename`:_ Resolvers declare the type. This which gives us better TypeScript support in resolvers and simplify `__resolveType` implementation: + + ```ts + // Query/book.ts + export const book = async () => { + try { + const book = await fetchBook(); + // 1. `__typename` is declared in resolver results... + return { + __typename: 'BookResult', // 1a. this also types `node` for us 🎉 + node: book, + }; + } catch (e) { + return { + __typename: 'PayloadError', + message: 'Failed to fetch book', + }; + } + }; + + // BookPayload.ts + export const BookPayload = { + __resolveType: parent => parent.__typename, // 2. ... means a very simple check in `__resolveType` + }; + ``` + + _Using `resolversNonOptionalTypename`:_ add it into `typescript-resolvers` plugin config: + + ```ts + // codegen.ts + const config: CodegenConfig = { + schema: 'src/schema/**/*.graphql', + generates: { + 'src/schema/types.ts': { + plugins: ['typescript', 'typescript-resolvers'], + config: { + resolversNonOptionalTypename: true, // Or `resolversNonOptionalTypename: { unionMember: true }` + }, + }, + }, + }; + ``` + +### Patch Changes + +- [#9206](https://github.com/dotansimha/graphql-code-generator/pull/9206) [`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835) Thanks [@eddeee888](https://github.com/eddeee888)! - Fix `ResolversUnionTypes` being used in `ResolversParentTypes` + + Previously, objects with mappable fields are converted to Omit format that references its own type group or `ResolversTypes` or `ResolversParentTypes` e.g. + + ```ts + export type ResolversTypes = { + Book: ResolverTypeWrapper; + BookPayload: ResolversTypes['BookResult'] | ResolversTypes['StandardError']; + // Note: `result` on the next line references `ResolversTypes["Book"]` + BookResult: ResolverTypeWrapper & { result?: Maybe }>; + StandardError: ResolverTypeWrapper; + }; + + export type ResolversParentTypes = { + Book: BookMapper; + BookPayload: ResolversParentTypes['BookResult'] | ResolversParentTypes['StandardError']; + // Note: `result` on the next line references `ResolversParentTypes["Book"]` + BookResult: Omit & { result?: Maybe }; + StandardError: StandardError; + }; + ``` + + In https://github.com/dotansimha/graphql-code-generator/pull/9069, we extracted resolver union types to its own group: + + ```ts + export type ResolversUnionTypes = { + // Note: `result` on the next line references `ResolversTypes["Book"]` which is only correct for the `ResolversTypes` case + BookPayload: (Omit & { result?: Maybe }) | StandardError; + }; + + export type ResolversTypes = { + Book: ResolverTypeWrapper; + BookPayload: ResolverTypeWrapper; + BookResult: ResolverTypeWrapper & { result?: Maybe }>; + StandardError: ResolverTypeWrapper; + }; + + export type ResolversParentTypes = { + Book: BookMapper; + BookPayload: ResolversUnionTypes['BookPayload']; + BookResult: Omit & { result?: Maybe }; + StandardError: StandardError; + }; + ``` + + This change creates an extra `ResolversUnionParentTypes` that is referenced by `ResolversParentTypes` to ensure backwards compatibility: + + ```ts + export type ResolversUnionTypes = { + BookPayload: (Omit & { result?: Maybe }) | StandardError; + }; + + // ... and the reference is changed in ResolversParentTypes: + export type ResolversParentTypes = { + // ... other fields + BookPayload: ResolversUnionParentTypes['BookPayload']; + }; + ``` + +- [#9194](https://github.com/dotansimha/graphql-code-generator/pull/9194) [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08) Thanks [@dstaley](https://github.com/dstaley)! - Don't emit import statements for unused fragments + +- Updated dependencies [[`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087)]: + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.0.2 ### Patch Changes diff --git a/packages/plugins/other/visitor-plugin-common/package.json b/packages/plugins/other/visitor-plugin-common/package.json index 0b63fedc253..175c5003d85 100644 --- a/packages/plugins/other/visitor-plugin-common/package.json +++ b/packages/plugins/other/visitor-plugin-common/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/visitor-plugin-common", - "version": "3.0.2", + "version": "3.1.0", "license": "MIT", "repository": { "type": "git", @@ -13,7 +13,7 @@ }, "dependencies": { "@graphql-tools/optimize": "^1.3.0", - "@graphql-codegen/plugin-helpers": "^4.1.0", + "@graphql-codegen/plugin-helpers": "^4.2.0", "@graphql-tools/relay-operation-optimizer": "^6.5.0", "@graphql-tools/utils": "^9.0.0", "auto-bind": "~4.0.0", diff --git a/packages/plugins/typescript/document-nodes/CHANGELOG.md b/packages/plugins/typescript/document-nodes/CHANGELOG.md index 22f1654fad2..ff0edb11f0c 100644 --- a/packages/plugins/typescript/document-nodes/CHANGELOG.md +++ b/packages/plugins/typescript/document-nodes/CHANGELOG.md @@ -1,5 +1,13 @@ # @graphql-codegen/typescript-document-nodes +## 3.0.3 + +### Patch Changes + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.0.2 ### Patch Changes diff --git a/packages/plugins/typescript/document-nodes/package.json b/packages/plugins/typescript/document-nodes/package.json index 7469f76d456..30bee927037 100644 --- a/packages/plugins/typescript/document-nodes/package.json +++ b/packages/plugins/typescript/document-nodes/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/typescript-document-nodes", - "version": "3.0.2", + "version": "3.0.3", "description": "GraphQL Code Generator plugin for generating TypeScript modules with embedded GraphQL document nodes", "repository": { "type": "git", @@ -13,8 +13,8 @@ "test": "jest --no-watchman --config ../../../../jest.config.js" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" }, diff --git a/packages/plugins/typescript/gql-tag-operations/CHANGELOG.md b/packages/plugins/typescript/gql-tag-operations/CHANGELOG.md index e9357c1e2ab..ad6b17abe99 100644 --- a/packages/plugins/typescript/gql-tag-operations/CHANGELOG.md +++ b/packages/plugins/typescript/gql-tag-operations/CHANGELOG.md @@ -1,5 +1,17 @@ # @graphql-codegen/gql-tag-operations +## 3.0.0 + +### Major Changes + +- [#9137](https://github.com/dotansimha/graphql-code-generator/pull/9137) [`2256c8b5d`](https://github.com/dotansimha/graphql-code-generator/commit/2256c8b5d0e13057d35692bbeba3b7b8f94d8712) Thanks [@beerose](https://github.com/beerose)! - Add `TypedDocumentNode` string alternative that doesn't require GraphQL AST on the client. This change requires `@graphql-typed-document-node/core` in version `3.2.0` or higher. + +### Patch Changes + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + ## 2.0.2 ### Patch Changes diff --git a/packages/plugins/typescript/gql-tag-operations/package.json b/packages/plugins/typescript/gql-tag-operations/package.json index 1979f3dac56..028f1c0a670 100644 --- a/packages/plugins/typescript/gql-tag-operations/package.json +++ b/packages/plugins/typescript/gql-tag-operations/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/gql-tag-operations", - "version": "2.0.2", + "version": "3.0.0", "description": "GraphQL Code Generator plugin for generating a typed gql tag function", "repository": { "type": "git", @@ -17,8 +17,8 @@ }, "dependencies": { "@graphql-tools/utils": "^9.0.0", - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" }, diff --git a/packages/plugins/typescript/operations/CHANGELOG.md b/packages/plugins/typescript/operations/CHANGELOG.md index 4a45c17fc28..8cfea61fbb9 100644 --- a/packages/plugins/typescript/operations/CHANGELOG.md +++ b/packages/plugins/typescript/operations/CHANGELOG.md @@ -1,5 +1,14 @@ # @graphql-codegen/typescript-operations +## 3.0.3 + +### Patch Changes + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`92d86b009`](https://github.com/dotansimha/graphql-code-generator/commit/92d86b009579edf70f60b0b8e28658af93ff9fd1), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + - @graphql-codegen/typescript@3.0.3 + ## 3.0.2 ### Patch Changes diff --git a/packages/plugins/typescript/operations/package.json b/packages/plugins/typescript/operations/package.json index 8276714189b..2fa871db436 100644 --- a/packages/plugins/typescript/operations/package.json +++ b/packages/plugins/typescript/operations/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/typescript-operations", - "version": "3.0.2", + "version": "3.0.3", "description": "GraphQL Code Generator plugin for generating TypeScript types for GraphQL queries, mutations, subscriptions and fragments", "repository": { "type": "git", @@ -13,9 +13,9 @@ "test": "jest --no-watchman --config ../../../../jest.config.js" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/typescript": "^3.0.2", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/typescript": "^3.0.3", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" }, diff --git a/packages/plugins/typescript/resolvers/CHANGELOG.md b/packages/plugins/typescript/resolvers/CHANGELOG.md index ecbece48e70..fb5f7c3fbe9 100644 --- a/packages/plugins/typescript/resolvers/CHANGELOG.md +++ b/packages/plugins/typescript/resolvers/CHANGELOG.md @@ -1,5 +1,181 @@ # @graphql-codegen/typescript-resolvers +## 3.2.0 + +### Minor Changes + +- [#9146](https://github.com/dotansimha/graphql-code-generator/pull/9146) [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd) Thanks [@eddeee888](https://github.com/eddeee888)! - [typescript-resolvers] Add `resolversNonOptionalTypename` config option. + + This is extending on `ResolversUnionTypes` implemented in https://github.com/dotansimha/graphql-code-generator/pull/9069 + + `resolversNonOptionalTypename` adds non-optional `__typename` to union members of `ResolversUnionTypes`, without affecting the union members' base intefaces. + + A common use case for non-optional `__typename` of union members is using it as the common field to work out the final schema type. This makes implementing the union's `__resolveType` very simple as we can use `__typename` to decide which union member the resolved object is. Without this, we have to check the existence of field/s on the incoming object which could be verbose. + + For example, consider this schema: + + ```graphql + type Query { + book(id: ID!): BookPayload! + } + + type Book { + id: ID! + isbn: String! + } + + type BookResult { + node: Book + } + + type PayloadError { + message: String! + } + + union BookPayload = BookResult | PayloadError + ``` + + _With optional `__typename`:_ We need to check existence of certain fields to resolve type in the union resolver: + + ```ts + // Query/book.ts + export const book = async () => { + try { + const book = await fetchBook(); + // 1. No `__typename` in resolver results... + return { + node: book, + }; + } catch (e) { + return { + message: 'Failed to fetch book', + }; + } + }; + + // BookPayload.ts + export const BookPayload = { + __resolveType: parent => { + // 2. ... means more checks in `__resolveType` + if ('message' in parent) { + return 'PayloadError'; + } + return 'BookResult'; + }, + }; + ``` + + _With non-optional `__typename`:_ Resolvers declare the type. This which gives us better TypeScript support in resolvers and simplify `__resolveType` implementation: + + ```ts + // Query/book.ts + export const book = async () => { + try { + const book = await fetchBook(); + // 1. `__typename` is declared in resolver results... + return { + __typename: 'BookResult', // 1a. this also types `node` for us 🎉 + node: book, + }; + } catch (e) { + return { + __typename: 'PayloadError', + message: 'Failed to fetch book', + }; + } + }; + + // BookPayload.ts + export const BookPayload = { + __resolveType: parent => parent.__typename, // 2. ... means a very simple check in `__resolveType` + }; + ``` + + _Using `resolversNonOptionalTypename`:_ add it into `typescript-resolvers` plugin config: + + ```ts + // codegen.ts + const config: CodegenConfig = { + schema: 'src/schema/**/*.graphql', + generates: { + 'src/schema/types.ts': { + plugins: ['typescript', 'typescript-resolvers'], + config: { + resolversNonOptionalTypename: true, // Or `resolversNonOptionalTypename: { unionMember: true }` + }, + }, + }, + }; + ``` + +### Patch Changes + +- [#9206](https://github.com/dotansimha/graphql-code-generator/pull/9206) [`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835) Thanks [@eddeee888](https://github.com/eddeee888)! - Fix `ResolversUnionTypes` being used in `ResolversParentTypes` + + Previously, objects with mappable fields are converted to Omit format that references its own type group or `ResolversTypes` or `ResolversParentTypes` e.g. + + ```ts + export type ResolversTypes = { + Book: ResolverTypeWrapper; + BookPayload: ResolversTypes['BookResult'] | ResolversTypes['StandardError']; + // Note: `result` on the next line references `ResolversTypes["Book"]` + BookResult: ResolverTypeWrapper & { result?: Maybe }>; + StandardError: ResolverTypeWrapper; + }; + + export type ResolversParentTypes = { + Book: BookMapper; + BookPayload: ResolversParentTypes['BookResult'] | ResolversParentTypes['StandardError']; + // Note: `result` on the next line references `ResolversParentTypes["Book"]` + BookResult: Omit & { result?: Maybe }; + StandardError: StandardError; + }; + ``` + + In https://github.com/dotansimha/graphql-code-generator/pull/9069, we extracted resolver union types to its own group: + + ```ts + export type ResolversUnionTypes = { + // Note: `result` on the next line references `ResolversTypes["Book"]` which is only correct for the `ResolversTypes` case + BookPayload: (Omit & { result?: Maybe }) | StandardError; + }; + + export type ResolversTypes = { + Book: ResolverTypeWrapper; + BookPayload: ResolverTypeWrapper; + BookResult: ResolverTypeWrapper & { result?: Maybe }>; + StandardError: ResolverTypeWrapper; + }; + + export type ResolversParentTypes = { + Book: BookMapper; + BookPayload: ResolversUnionTypes['BookPayload']; + BookResult: Omit & { result?: Maybe }; + StandardError: StandardError; + }; + ``` + + This change creates an extra `ResolversUnionParentTypes` that is referenced by `ResolversParentTypes` to ensure backwards compatibility: + + ```ts + export type ResolversUnionTypes = { + BookPayload: (Omit & { result?: Maybe }) | StandardError; + }; + + // ... and the reference is changed in ResolversParentTypes: + export type ResolversParentTypes = { + // ... other fields + BookPayload: ResolversUnionParentTypes['BookPayload']; + }; + ``` + +- [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087) Thanks [@saihaj](https://github.com/saihaj)! - Resolve issue with nesting fields in `@provides` directive being prevented + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`92d86b009`](https://github.com/dotansimha/graphql-code-generator/commit/92d86b009579edf70f60b0b8e28658af93ff9fd1), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + - @graphql-codegen/typescript@3.0.3 + ## 3.1.1 ### Patch Changes diff --git a/packages/plugins/typescript/resolvers/package.json b/packages/plugins/typescript/resolvers/package.json index 912a90807ce..ba8e35210fd 100644 --- a/packages/plugins/typescript/resolvers/package.json +++ b/packages/plugins/typescript/resolvers/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/typescript-resolvers", - "version": "3.1.1", + "version": "3.2.0", "description": "GraphQL Code Generator plugin for generating TypeScript types for resolvers signature", "repository": { "type": "git", @@ -13,9 +13,9 @@ "test": "jest --no-watchman --config ../../../../jest.config.js" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/typescript": "^3.0.2", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/typescript": "^3.0.3", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "@graphql-tools/utils": "^9.0.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" diff --git a/packages/plugins/typescript/typed-document-node/CHANGELOG.md b/packages/plugins/typescript/typed-document-node/CHANGELOG.md index 7e22bde7587..8ce6d01314c 100644 --- a/packages/plugins/typescript/typed-document-node/CHANGELOG.md +++ b/packages/plugins/typescript/typed-document-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @graphql-codegen/typed-document-node +## 4.0.0 + +### Major Changes + +- [#9137](https://github.com/dotansimha/graphql-code-generator/pull/9137) [`2256c8b5d`](https://github.com/dotansimha/graphql-code-generator/commit/2256c8b5d0e13057d35692bbeba3b7b8f94d8712) Thanks [@beerose](https://github.com/beerose)! - Add `TypedDocumentNode` string alternative that doesn't require GraphQL AST on the client. This change requires `@graphql-typed-document-node/core` in version `3.2.0` or higher. + +### Patch Changes + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.0.2 ### Patch Changes diff --git a/packages/plugins/typescript/typed-document-node/package.json b/packages/plugins/typescript/typed-document-node/package.json index 03348fe1eae..763a4285cd9 100644 --- a/packages/plugins/typescript/typed-document-node/package.json +++ b/packages/plugins/typescript/typed-document-node/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/typed-document-node", - "version": "3.0.2", + "version": "4.0.0", "description": "GraphQL Code Generator plugin for generating ready-to-use TypedDocumentNode based on GraphQL operations", "repository": { "type": "git", @@ -17,8 +17,8 @@ }, "dependencies": { "change-case-all": "1.0.15", - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" }, diff --git a/packages/plugins/typescript/typescript/CHANGELOG.md b/packages/plugins/typescript/typescript/CHANGELOG.md index 0e60233aa19..580e7a7ebe0 100644 --- a/packages/plugins/typescript/typescript/CHANGELOG.md +++ b/packages/plugins/typescript/typescript/CHANGELOG.md @@ -1,5 +1,15 @@ # @graphql-codegen/typescript +## 3.0.3 + +### Patch Changes + +- [#9150](https://github.com/dotansimha/graphql-code-generator/pull/9150) [`92d86b009`](https://github.com/dotansimha/graphql-code-generator/commit/92d86b009579edf70f60b0b8e28658af93ff9fd1) Thanks [@rliljest](https://github.com/rliljest)! - Properly escape enum identifiers when enumsAsConst is used + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.0.2 ### Patch Changes diff --git a/packages/plugins/typescript/typescript/package.json b/packages/plugins/typescript/typescript/package.json index c609893ceee..6f48f34a8e9 100644 --- a/packages/plugins/typescript/typescript/package.json +++ b/packages/plugins/typescript/typescript/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/typescript", - "version": "3.0.2", + "version": "3.0.3", "description": "GraphQL Code Generator plugin for generating TypeScript types", "repository": { "type": "git", @@ -13,9 +13,9 @@ "test": "jest --no-watchman --config ../../../../jest.config.js" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", + "@graphql-codegen/plugin-helpers": "^4.2.0", "@graphql-codegen/schema-ast": "^3.0.1", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "auto-bind": "~4.0.0", "tslib": "~2.5.0" }, diff --git a/packages/presets/client/CHANGELOG.md b/packages/presets/client/CHANGELOG.md index 7d7e506fce4..1872d6bc967 100644 --- a/packages/presets/client/CHANGELOG.md +++ b/packages/presets/client/CHANGELOG.md @@ -1,5 +1,23 @@ # @graphql-codegen/client-preset +## 3.0.0 + +### Major Changes + +- [#9137](https://github.com/dotansimha/graphql-code-generator/pull/9137) [`2256c8b5d`](https://github.com/dotansimha/graphql-code-generator/commit/2256c8b5d0e13057d35692bbeba3b7b8f94d8712) Thanks [@beerose](https://github.com/beerose)! - Add `TypedDocumentNode` string alternative that doesn't require GraphQL AST on the client. This change requires `@graphql-typed-document-node/core` in version `3.2.0` or higher. + +### Patch Changes + +- [#9137](https://github.com/dotansimha/graphql-code-generator/pull/9137) [`2256c8b5d`](https://github.com/dotansimha/graphql-code-generator/commit/2256c8b5d0e13057d35692bbeba3b7b8f94d8712) Thanks [@beerose](https://github.com/beerose)! - dependencies updates: + - Updated dependency [`@graphql-typed-document-node/core@3.2.0` ↗︎](https://www.npmjs.com/package/@graphql-typed-document-node/core/v/3.2.0) (from `3.1.2`, in `dependencies`) +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`92d86b009`](https://github.com/dotansimha/graphql-code-generator/commit/92d86b009579edf70f60b0b8e28658af93ff9fd1), [`2256c8b5d`](https://github.com/dotansimha/graphql-code-generator/commit/2256c8b5d0e13057d35692bbeba3b7b8f94d8712), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + - @graphql-codegen/typescript@3.0.3 + - @graphql-codegen/typed-document-node@4.0.0 + - @graphql-codegen/gql-tag-operations@3.0.0 + - @graphql-codegen/typescript-operations@3.0.3 + ## 2.1.1 ### Patch Changes diff --git a/packages/presets/client/package.json b/packages/presets/client/package.json index c38c9e9736b..79b89bb007b 100644 --- a/packages/presets/client/package.json +++ b/packages/presets/client/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/client-preset", - "version": "2.1.1", + "version": "3.0.0", "description": "GraphQL Code Generator preset for client.", "repository": { "type": "git", @@ -20,12 +20,12 @@ "@babel/helper-plugin-utils": "^7.20.2", "@babel/template": "^7.20.7", "@graphql-codegen/add": "^4.0.1", - "@graphql-codegen/typed-document-node": "^3.0.2", - "@graphql-codegen/typescript": "^3.0.2", - "@graphql-codegen/typescript-operations": "^3.0.2", - "@graphql-codegen/gql-tag-operations": "2.0.2", - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/visitor-plugin-common": "^3.0.2", + "@graphql-codegen/typed-document-node": "^4.0.0", + "@graphql-codegen/typescript": "^3.0.3", + "@graphql-codegen/typescript-operations": "^3.0.3", + "@graphql-codegen/gql-tag-operations": "3.0.0", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/visitor-plugin-common": "^3.1.0", "@graphql-typed-document-node/core": "3.2.0", "@graphql-tools/documents": "^0.1.0", "@graphql-tools/utils": "^9.0.0", diff --git a/packages/presets/graphql-modules/CHANGELOG.md b/packages/presets/graphql-modules/CHANGELOG.md index 3608692565b..a328ca493f0 100644 --- a/packages/presets/graphql-modules/CHANGELOG.md +++ b/packages/presets/graphql-modules/CHANGELOG.md @@ -1,5 +1,13 @@ # @graphql-codegen/graphql-modules-preset +## 3.1.2 + +### Patch Changes + +- Updated dependencies [[`e56790104`](https://github.com/dotansimha/graphql-code-generator/commit/e56790104ae56d6c5b48ef71823345bd09d3b835), [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087), [`acb647e4e`](https://github.com/dotansimha/graphql-code-generator/commit/acb647e4efbddecf732b6e55dc47ac40c9bdaf08), [`9f4d9c5a4`](https://github.com/dotansimha/graphql-code-generator/commit/9f4d9c5a479d34da25df8e060a8c2b3b162647dd)]: + - @graphql-codegen/visitor-plugin-common@3.1.0 + - @graphql-codegen/plugin-helpers@4.2.0 + ## 3.1.1 ### Patch Changes diff --git a/packages/presets/graphql-modules/package.json b/packages/presets/graphql-modules/package.json index 1254fe0b244..a6b99431be5 100644 --- a/packages/presets/graphql-modules/package.json +++ b/packages/presets/graphql-modules/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/graphql-modules-preset", - "version": "3.1.1", + "version": "3.1.2", "description": "GraphQL Code Generator preset for modularized schema", "repository": { "type": "git", @@ -15,8 +15,8 @@ "@types/parse-filepath": "1.0.0" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", - "@graphql-codegen/visitor-plugin-common": "3.0.2", + "@graphql-codegen/plugin-helpers": "^4.2.0", + "@graphql-codegen/visitor-plugin-common": "3.1.0", "@graphql-tools/utils": "^9.0.0", "parse-filepath": "^1.0.2", "change-case-all": "1.0.15", diff --git a/packages/utils/graphql-codegen-testing/CHANGELOG.md b/packages/utils/graphql-codegen-testing/CHANGELOG.md index c7e11e3751f..72743493790 100644 --- a/packages/utils/graphql-codegen-testing/CHANGELOG.md +++ b/packages/utils/graphql-codegen-testing/CHANGELOG.md @@ -1,5 +1,14 @@ # @graphql-codegen/testing +## 2.0.2 + +### Patch Changes + +- [#9228](https://github.com/dotansimha/graphql-code-generator/pull/9228) [`a5ec5af36`](https://github.com/dotansimha/graphql-code-generator/commit/a5ec5af36cd77f4ec86773a899aa5ebd16d4ff9f) Thanks [@eddeee888](https://github.com/eddeee888)! - Add complex test cases for resolvers tests + +- Updated dependencies [[`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29), [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087)]: + - @graphql-codegen/plugin-helpers@4.2.0 + ## 2.0.1 ### Patch Changes diff --git a/packages/utils/graphql-codegen-testing/package.json b/packages/utils/graphql-codegen-testing/package.json index bd0ee1a20ba..f3b176ae421 100644 --- a/packages/utils/graphql-codegen-testing/package.json +++ b/packages/utils/graphql-codegen-testing/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/testing", - "version": "2.0.1", + "version": "2.0.2", "description": "GraphQL Codegen Testing Utils", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", @@ -40,7 +40,7 @@ "typescript": ">=3.0.0" }, "dependencies": { - "@graphql-codegen/plugin-helpers": "^4.1.0", + "@graphql-codegen/plugin-helpers": "^4.2.0", "common-tags": "^1.8.0", "lz-string": "^1.4.4", "graphql-helix": "1.13.0", diff --git a/packages/utils/plugins-helpers/CHANGELOG.md b/packages/utils/plugins-helpers/CHANGELOG.md index 245ea95d450..c457f898396 100644 --- a/packages/utils/plugins-helpers/CHANGELOG.md +++ b/packages/utils/plugins-helpers/CHANGELOG.md @@ -1,5 +1,50 @@ # @graphql-codegen/plugin-helpers +## 4.2.0 + +### Minor Changes + +- [#9151](https://github.com/dotansimha/graphql-code-generator/pull/9151) [`b7dacb21f`](https://github.com/dotansimha/graphql-code-generator/commit/b7dacb21fb0ed1173d1e45120dc072e29231ed29) Thanks [@'./user/schema.mappers#UserMapper',](https://github.com/'./user/schema.mappers#UserMapper',)! - Add `watchPattern` config option for `generates` sections. + + By default, `watch` mode automatically watches all GraphQL schema and document files. This means when a change is detected, Codegen CLI is run. + + A user may want to run Codegen CLI when non-schema and non-document files are changed. Each `generates` section now has a `watchPattern` option to allow more file patterns to be added to the list of patterns to watch. + + In the example below, mappers are exported from `schema.mappers.ts` files. We want to re-run Codegen if the content of `*.mappers.ts` files change because they change the generated types file. To solve this, we can add mapper file patterns to watch using the glob pattern used for schema and document files. + + ```ts + // codegen.ts + const config: CodegenConfig = { + schema: 'src/schema/**/*.graphql', + generates: { + 'src/schema/types.ts': { + plugins: ['typescript', 'typescript-resolvers'], + config: { + mappers: { + + Book: './book/schema.mappers#BookMapper', + }, + } + watchPattern: 'src/schema/**/*.mappers.ts', // Watches mapper files in `watch` mode. Use an array for multiple patterns e.g. `['src/*.pattern1.ts','src/*.pattern2.ts']` + }, + }, + }; + ``` + + Then, run Codegen CLI in `watch` mode: + + ```shell + yarn graphql-codegen --watch + ``` + + Now, updating `*.mappers.ts` files re-runs Codegen! 🎉 + + Note: `watchPattern` is only used in `watch` mode i.e. running CLI with `--watch` flag. + +### Patch Changes + +- [`f104619ac`](https://github.com/dotansimha/graphql-code-generator/commit/f104619acd27c9d62a06bc577737500880731087) Thanks [@saihaj](https://github.com/saihaj)! - Resolve issue with nesting fields in `@provides` directive being prevented + ## 4.1.0 ### Minor Changes diff --git a/packages/utils/plugins-helpers/package.json b/packages/utils/plugins-helpers/package.json index a2852fc7dab..671e65b3bdc 100644 --- a/packages/utils/plugins-helpers/package.json +++ b/packages/utils/plugins-helpers/package.json @@ -1,6 +1,6 @@ { "name": "@graphql-codegen/plugin-helpers", - "version": "4.1.0", + "version": "4.2.0", "description": "GraphQL Code Generator common utils and types", "repository": { "type": "git", diff --git a/website/package.json b/website/package.json index b3204e5ea09..ee93bc5f897 100644 --- a/website/package.json +++ b/website/package.json @@ -24,7 +24,7 @@ "@graphql-codegen/add": "4.0.1", "@graphql-codegen/c-sharp": "4.3.1", "@graphql-codegen/c-sharp-operations": "2.3.1", - "@graphql-codegen/cli": "3.2.2", + "@graphql-codegen/cli": "3.3.0", "@graphql-codegen/core": "3.1.0", "@graphql-codegen/flow": "2.3.6", "@graphql-codegen/flow-operations": "2.3.6", @@ -43,8 +43,8 @@ "@graphql-codegen/near-operation-file-preset": "2.5.0", "@graphql-codegen/schema-ast": "3.0.1", "@graphql-codegen/time": "4.0.0", - "@graphql-codegen/typed-document-node": "3.0.2", - "@graphql-codegen/typescript": "3.0.2", + "@graphql-codegen/typed-document-node": "4.0.0", + "@graphql-codegen/typescript": "3.0.3", "@graphql-codegen/typescript-apollo-angular": "3.5.6", "@graphql-codegen/typescript-apollo-client-helpers": "2.2.6", "@graphql-codegen/typescript-generic-sdk": "3.1.0", @@ -52,10 +52,10 @@ "@graphql-codegen/typescript-graphql-request": "4.5.8", "@graphql-codegen/typescript-mongodb": "2.4.6", "@graphql-codegen/typescript-msw": "1.1.6", - "@graphql-codegen/typescript-operations": "3.0.2", + "@graphql-codegen/typescript-operations": "3.0.3", "@graphql-codegen/typescript-react-apollo": "3.3.7", "@graphql-codegen/typescript-react-query": "4.1.0", - "@graphql-codegen/typescript-resolvers": "3.1.1", + "@graphql-codegen/typescript-resolvers": "3.2.0", "@graphql-codegen/typescript-rtk-query": "2.4.1", "@graphql-codegen/typescript-stencil-apollo": "2.3.6", "@graphql-codegen/typescript-type-graphql": "2.3.6",