From c314f8e996365373904c587e452ec7319ca58a47 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sat, 22 Aug 2026 18:29:18 +1000 Subject: [PATCH 1/3] Set removeStaleFiles=false --- package.json | 2 +- .../typescript-resolver-files/package.json | 2 +- .../src/defineConfig.ts | 10 +++++++- pnpm-lock.yaml | 23 +++++++++++++++---- pnpm-workspace.yaml | 1 + 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 70b54a06..f31b3742 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "@graphql-codegen/add": "7.1.0", "@graphql-codegen/cli": "7.2.0", "@graphql-codegen/near-operation-file-preset": "5.2.1", - "@graphql-codegen/plugin-helpers": "7.1.0", + "@graphql-codegen/plugin-helpers": "7.2.0", "@graphql-codegen/schema-ast": "6.1.0", "@graphql-codegen/typescript": "6.1.0", "@graphql-codegen/typescript-react-apollo": "4.4.3-alpha-20260808101442-e439530add2acc6e119f54b148ccb537e4d0a7ec", diff --git a/packages/typescript-resolver-files/package.json b/packages/typescript-resolver-files/package.json index 41208ca4..c2d4c921 100644 --- a/packages/typescript-resolver-files/package.json +++ b/packages/typescript-resolver-files/package.json @@ -42,7 +42,7 @@ "dependencies": { "@eddeee888/gcg-server-config": "workspace:*", "@graphql-codegen/add": "^7.1.0", - "@graphql-codegen/plugin-helpers": "^7.1.0", + "@graphql-codegen/plugin-helpers": "^7.2.0", "@graphql-codegen/schema-ast": "^6.1.0", "@graphql-codegen/typescript": "^6.1.0", "@graphql-codegen/typescript-resolvers": "^6.1.0", diff --git a/packages/typescript-resolver-files/src/defineConfig.ts b/packages/typescript-resolver-files/src/defineConfig.ts index f70606c1..a09068c8 100644 --- a/packages/typescript-resolver-files/src/defineConfig.ts +++ b/packages/typescript-resolver-files/src/defineConfig.ts @@ -12,7 +12,7 @@ export const defineConfig = ( } = {} ): Pick< Types.ConfiguredOutput, - 'preset' | 'presetConfig' | 'watchPattern' | 'schema' | 'hooks' + 'preset' | 'presetConfig' | 'watchPattern' | 'schema' | 'hooks' | 'overwrite' > => { const { schema, baseOutputDir = '', hooks } = context; @@ -33,5 +33,13 @@ export const defineConfig = ( watchPattern, schema, hooks, + overwrite: { + // Server Preset needs to update existing resolver files + updateExistingFiles: true, + // When watching, it's common to avoid sending all files to Codegen to write to fs. + // When that happens, previously tracked files are marked as stale and gets removed wrongly. + // Therefore, we don't remove stale files. + removeStaleFiles: false, + }, }; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3220130..01b43fd0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -233,8 +233,8 @@ importers: specifier: 5.2.1 version: 5.2.1(graphql@17.0.2) '@graphql-codegen/plugin-helpers': - specifier: 7.1.0 - version: 7.1.0(graphql@17.0.2) + specifier: 7.2.0 + version: 7.2.0(graphql@17.0.2) '@graphql-codegen/schema-ast': specifier: 6.1.0 version: 6.1.0(graphql@17.0.2) @@ -407,8 +407,8 @@ importers: specifier: ^7.1.0 version: 7.1.0(graphql@17.0.2) '@graphql-codegen/plugin-helpers': - specifier: ^7.1.0 - version: 7.1.0(graphql@17.0.2) + specifier: ^7.2.0 + version: 7.2.0(graphql@17.0.2) '@graphql-codegen/schema-ast': specifier: ^6.1.0 version: 6.1.0(graphql@17.0.2) @@ -1469,6 +1469,12 @@ packages: peerDependencies: graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-codegen/plugin-helpers@7.2.0': + resolution: {integrity: sha512-RRr9iEokKYf30YCBihtPJvIla818ucsCrYiqzKSuY9GicCmhJxj/b6dYtgjFdEEILfRMdsrQhb/5bw6jiKBWlQ==} + engines: {node: '>=16'} + peerDependencies: + graphql: ^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + '@graphql-codegen/schema-ast@6.1.0': resolution: {integrity: sha512-/xuGkM5gUNFRoaQLumKbENdX7Hc8ha49z9OXsEZY8E+46mMjqzXGF0NtCJ892cmoX7EUgI5c8T+LZqS2upx2Aw==} engines: {node: '>=16'} @@ -7677,6 +7683,15 @@ snapshots: import-from: 4.0.0 tslib: 2.8.1 + '@graphql-codegen/plugin-helpers@7.2.0(graphql@17.0.2)': + dependencies: + '@graphql-tools/utils': 11.2.2(graphql@17.0.2) + change-case-all: 2.1.0 + common-tags: 1.8.2 + graphql: 17.0.2 + import-from: 4.0.0 + tslib: 2.8.1 + '@graphql-codegen/schema-ast@6.1.0(graphql@17.0.2)': dependencies: '@graphql-codegen/plugin-helpers': 7.1.0(graphql@17.0.2) diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b8bb5cca..e0d1aa41 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,3 +8,4 @@ allowBuilds: unrs-resolver: true minimumReleaseAgeExclude: - '@graphql-codegen/typescript-react-apollo@4.4.3-alpha-20260808101442-e439530add2acc6e119f54b148ccb537e4d0a7ec' + - '@graphql-codegen/plugin-helpers@7.2.0' From 135703e41e3597555eed0021872fd465adc7c6d8 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sat, 22 Aug 2026 18:31:08 +1000 Subject: [PATCH 2/3] Add changeset --- .changeset/pink-papers-sit.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pink-papers-sit.md diff --git a/.changeset/pink-papers-sit.md b/.changeset/pink-papers-sit.md new file mode 100644 index 00000000..21997d80 --- /dev/null +++ b/.changeset/pink-papers-sit.md @@ -0,0 +1,5 @@ +--- +'@eddeee888/gcg-typescript-resolver-files': patch +--- + +Set `overwrite.removeStaleFiles=false` (available in `@graphql-codegen/plugin-helpers` v7.2.0) to avoid scenario where resolver files are removed incorrectly. From 2e2ad697975b6c5f151df4106bdd9b952c136ff8 Mon Sep 17 00:00:00 2001 From: Eddy Nguyen Date: Sat, 22 Aug 2026 19:31:22 +1000 Subject: [PATCH 3/3] Update tests --- .../src/defineConfig.spec.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/typescript-resolver-files/src/defineConfig.spec.ts b/packages/typescript-resolver-files/src/defineConfig.spec.ts index 9a389770..ff136fe1 100644 --- a/packages/typescript-resolver-files/src/defineConfig.spec.ts +++ b/packages/typescript-resolver-files/src/defineConfig.spec.ts @@ -9,6 +9,10 @@ describe('defineConfig()', () => { preset: defaultPreset, presetConfig: {}, watchPattern: ['**/*.mappers.ts'], + overwrite: { + removeStaleFiles: false, + updateExistingFiles: true, + }, }); }); @@ -19,6 +23,10 @@ describe('defineConfig()', () => { preset: defaultPreset, presetConfig: {}, watchPattern: ['src/schema/**/*.mappers.ts'], + overwrite: { + removeStaleFiles: false, + updateExistingFiles: true, + }, }); }); @@ -30,6 +38,10 @@ describe('defineConfig()', () => { presetConfig: {}, watchPattern: ['**/*.mappers.ts'], schema: ['src/**/*.graphqls'], + overwrite: { + removeStaleFiles: false, + updateExistingFiles: true, + }, }); }); @@ -44,6 +56,10 @@ describe('defineConfig()', () => { presetConfig: {}, watchPattern: ['**/*.mappers.ts'], hooks: { afterAllFileWrite: ['prettier --write'] }, + overwrite: { + removeStaleFiles: false, + updateExistingFiles: true, + }, }); });