diff --git a/.changeset/wacky-llamas-rule.md b/.changeset/wacky-llamas-rule.md new file mode 100644 index 00000000..a4c17576 --- /dev/null +++ b/.changeset/wacky-llamas-rule.md @@ -0,0 +1,5 @@ +--- +'@eddeee888/gcg-typescript-resolver-files': patch +--- + +Keep ts-morph project reference between watches diff --git a/packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts b/packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts index 580d623d..4c1d4792 100644 --- a/packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts +++ b/packages/typescript-resolver-files/src/generateResolverFiles/postProcessFiles.ts @@ -145,21 +145,21 @@ export const postProcessFiles = ({ } ); }); - } - // 4. Apply to result files the updated content done in step 2. and 3. above - sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => { - const normalizedRelativePath = path.posix.relative( - cwd(), - sourceFile.getFilePath() - ); + // 4. Apply to result files the updated content done in step 2. and 3. above + sourceFilesToProcess.forEach(({ sourceFile, resolverFile }) => { + const normalizedRelativePath = path.posix.relative( + cwd(), + sourceFile.getFilePath() + ); - // Overwrite existing files with fixes - result.files[normalizedRelativePath] = { - ...resolverFile, - content: sourceFile.getText(), - }; - }); + // Overwrite existing files with fixes + result.files[normalizedRelativePath] = { + ...resolverFile, + content: sourceFile.getText(), + }; + }); + } }; /** diff --git a/packages/typescript-resolver-files/src/preset.ts b/packages/typescript-resolver-files/src/preset.ts index bc078787..197d0266 100644 --- a/packages/typescript-resolver-files/src/preset.ts +++ b/packages/typescript-resolver-files/src/preset.ts @@ -29,6 +29,8 @@ import { logger } from './utils/index.js'; export const presetName = '@eddeee888/gcg-typescript-resolver-files'; +let tsMorphProject: Project; + export const preset: Types.OutputPreset = { buildGeneratesSection: async ({ schema, @@ -88,10 +90,18 @@ export const preset: Types.OutputPreset = { moduleNamingMode, }); - const tsMorphProject = await profiler.run( - async () => new Project(tsMorphProjectOptions), - createProfilerRunName('Initialising ts-morph project') - ); + if (!tsMorphProject) { + tsMorphProject = await profiler.run( + async () => new Project(tsMorphProjectOptions), + createProfilerRunName('Initialising ts-morph project') + ); + } else { + await profiler.run(async () => { + tsMorphProject + .getSourceFiles() + .forEach((sourceFile) => sourceFile.refreshFromFileSystemSync()); + }, createProfilerRunName('Refreshing ts-morph project files')); + } const typeMappersMap = await profiler.run( async () =>