diff --git a/.changeset/@graphql-codegen_typescript-operations-10563-dependencies.md b/.changeset/@graphql-codegen_typescript-operations-10563-dependencies.md new file mode 100644 index 00000000000..e66f900bbf7 --- /dev/null +++ b/.changeset/@graphql-codegen_typescript-operations-10563-dependencies.md @@ -0,0 +1,5 @@ +--- +"@graphql-codegen/typescript-operations": patch +--- +dependencies updates: + - Added dependency [`@graphql-codegen/schema-ast@^5.0.0` ↗︎](https://www.npmjs.com/package/@graphql-codegen/schema-ast/v/5.0.0) (to `dependencies`) diff --git a/dev-test/standalone-operations/import-schema-types/_types.generated.ts b/dev-test/standalone-operations/import-schema-types/_types.generated.ts index e2b362b410c..775c69049eb 100644 --- a/dev-test/standalone-operations/import-schema-types/_types.generated.ts +++ b/dev-test/standalone-operations/import-schema-types/_types.generated.ts @@ -1,4 +1,4 @@ -import type * as Types from './_base.generated'; +import type * as Types from './_base.generated.js'; type Exact = { [K in keyof T]: T[K] }; export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; diff --git a/packages/plugins/typescript/operations/package.json b/packages/plugins/typescript/operations/package.json index 02460c5c1a2..3c2c9f3555a 100644 --- a/packages/plugins/typescript/operations/package.json +++ b/packages/plugins/typescript/operations/package.json @@ -14,6 +14,7 @@ }, "dependencies": { "@graphql-codegen/plugin-helpers": "^6.1.0", + "@graphql-codegen/schema-ast": "^5.0.0", "@graphql-codegen/typescript": "^5.0.7", "@graphql-codegen/visitor-plugin-common": "6.2.2", "auto-bind": "~4.0.0", diff --git a/packages/plugins/typescript/operations/src/index.ts b/packages/plugins/typescript/operations/src/index.ts index 6dd44646e80..f5c6117e7a8 100644 --- a/packages/plugins/typescript/operations/src/index.ts +++ b/packages/plugins/typescript/operations/src/index.ts @@ -64,7 +64,7 @@ export const plugin: PluginFunction => { try { diff --git a/packages/plugins/typescript/operations/src/visitor.ts b/packages/plugins/typescript/operations/src/visitor.ts index 5c80c82058e..2c0085263ad 100644 --- a/packages/plugins/typescript/operations/src/visitor.ts +++ b/packages/plugins/typescript/operations/src/visitor.ts @@ -23,6 +23,7 @@ import { getNodeComment, wrapTypeWithModifiers, } from '@graphql-codegen/visitor-plugin-common'; +import { normalizeImportExtension } from '@graphql-codegen/plugin-helpers'; import autoBind from 'auto-bind'; import { type DocumentNode, @@ -370,8 +371,11 @@ export class TypeScriptDocumentsVisitor extends BaseDocumentsVisitor< identifiers: [], }, typesImport: true, - // FIXME: rebase with master for the new extension - emitLegacyCommonJSImports: true, + emitLegacyCommonJSImports: this.config.emitLegacyCommonJSImports, + importExtension: normalizeImportExtension({ + emitLegacyCommonJSImports: this.config.emitLegacyCommonJSImports, + importExtension: this.config.importExtension, + }), }), ]; } diff --git a/packages/plugins/typescript/operations/tests/extract-all-types.spec.ts b/packages/plugins/typescript/operations/tests/extract-all-types.spec.ts index 91892b431d9..0a247b7d388 100644 --- a/packages/plugins/typescript/operations/tests/extract-all-types.spec.ts +++ b/packages/plugins/typescript/operations/tests/extract-all-types.spec.ts @@ -1,12 +1,11 @@ import { mergeOutputs, Types } from '@graphql-codegen/plugin-helpers'; import { validateTs } from '@graphql-codegen/testing'; import { buildSchema, parse } from 'graphql'; -import { plugin as tsPlugin } from '../../typescript/src/index.js'; -import { plugin, TypeScriptDocumentsPluginConfig } from '../src/index.js'; +import { plugin, type TypeScriptDocumentsPluginConfig } from '../src/index.js'; describe('extractAllFieldsToTypes: true', () => { - const validate = async (content: Types.PluginOutput, config: any = {}, pluginSchema) => { - const m = mergeOutputs([await tsPlugin(pluginSchema, [], config, { outputFile: '' }), content]); + const validate = async (content: Types.PluginOutput) => { + const m = mergeOutputs([content]); validateTs(m, undefined, undefined, undefined, []); return m; @@ -197,7 +196,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, dummyUserTestSchema); + await validate(content); }); const complexTestSchemaWithUnionsAndInterfaces = buildSchema(/* GraphQL */ ` @@ -551,7 +550,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, complexTestSchemaWithUnionsAndInterfaces); + await validate(content); }); it('should extract types from multiple fragments (mergeFragmentTypes: true)', async () => { @@ -725,7 +724,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, complexTestSchemaWithUnionsAndInterfaces); + await validate(content); }); it("should extract types from multiple fragments (inlineFragmentTypes: 'combine')", async () => { @@ -968,7 +967,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, complexTestSchemaWithUnionsAndInterfaces); + await validate(content); }); it("should extract types from multiple fragments (inlineFragmentTypes: 'mask')", async () => { @@ -1209,7 +1208,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, complexTestSchemaWithUnionsAndInterfaces); + await validate(content); }); it('fields with shared types and no fragments should use the shared type interface name', async () => { @@ -1302,7 +1301,7 @@ describe('extractAllFieldsToTypes: true', () => { " `); - await validate(content, config, nestedInterfacesSchema); + await validate(content); }); // Exception case for Issue #10502 - shared schema for fragment tests @@ -1411,7 +1410,7 @@ describe('extractAllFieldsToTypes: true', () => { export type GetNotificationsQuery = GetNotificationsQuery_Query; " `); - await validate(content, config, notificationSchema); + await validate(content); }); it('named fragments should use their name and not parent type name', async () => { @@ -1492,6 +1491,6 @@ describe('extractAllFieldsToTypes: true', () => { export type GetNotificationsQuery = GetNotificationsQuery_Query; " `); - await validate(content, config, notificationSchema); + await validate(content); }); });