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 e6de8db7..37a47364 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; } }