From 2ba214939d2447622a396164ab120b6dfa46abae Mon Sep 17 00:00:00 2001 From: jdecroock Date: Sun, 17 Sep 2023 10:32:50 +0200 Subject: [PATCH] prevent dupes --- .changeset/popular-bikes-clap.md | 5 +++++ packages/graphqlsp/src/diagnostics.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/popular-bikes-clap.md diff --git a/.changeset/popular-bikes-clap.md b/.changeset/popular-bikes-clap.md new file mode 100644 index 00000000..1fbf4106 --- /dev/null +++ b/.changeset/popular-bikes-clap.md @@ -0,0 +1,5 @@ +--- +'@0no-co/graphqlsp': patch +--- + +Prevent duplicate async file-generation processes from happening diff --git a/packages/graphqlsp/src/diagnostics.ts b/packages/graphqlsp/src/diagnostics.ts index 1be2507c..658632ef 100644 --- a/packages/graphqlsp/src/diagnostics.ts +++ b/packages/graphqlsp/src/diagnostics.ts @@ -33,6 +33,8 @@ export const MISSING_OPERATION_NAME_CODE = 52002; export const MISSING_FRAGMENT_CODE = 52003; export const USING_DEPRECATED_FIELD_CODE = 52004; +let isGeneratingTypes = false; + export function getGraphQLDiagnostics( // This is so that we don't change offsets when there are // TypeScript errors @@ -308,9 +310,10 @@ export function getGraphQLDiagnostics( !disableTypegen ) { try { - if (isFileDirty(filename, source)) { + if (isFileDirty(filename, source) && !isGeneratingTypes) { return tsDiagnostics; } + isGeneratingTypes = true; const parts = source.fileName.split('/'); const name = parts[parts.length - 1]; @@ -421,10 +424,12 @@ export function getGraphQLDiagnostics( info.languageServiceHost.writeFile!(source.fileName, finalSourceText); scriptInfo!.reloadFromFile(); scriptInfo!.registerFileUpdate(); + isGeneratingTypes = false; }); } catch (e) { const scriptInfo = info.project.projectService.getScriptInfo(filename); scriptInfo!.reloadFromFile(); + isGeneratingTypes = false; } }