From c1d6f46f59b98515d5c125c100f1c281cf42b2c3 Mon Sep 17 00:00:00 2001 From: Jovi De Croock Date: Sun, 28 May 2023 12:58:48 +0200 Subject: [PATCH] fix wrong offsets by altering the source-file after doing original diag (#53) --- .changeset/shaggy-ravens-train.md | 5 +++++ packages/graphqlsp/src/index.ts | 30 ++++++++++++++++-------------- 2 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 .changeset/shaggy-ravens-train.md diff --git a/.changeset/shaggy-ravens-train.md b/.changeset/shaggy-ravens-train.md new file mode 100644 index 00000000..3c5d944a --- /dev/null +++ b/.changeset/shaggy-ravens-train.md @@ -0,0 +1,5 @@ +--- +'@0no-co/graphqlsp': patch +--- + +First perform the graphqlsp operations and only after do the TypeScript ones, this to account for changed lines from semantic-diagnostics diff --git a/packages/graphqlsp/src/index.ts b/packages/graphqlsp/src/index.ts index a6e81688..cf3fcec5 100644 --- a/packages/graphqlsp/src/index.ts +++ b/packages/graphqlsp/src/index.ts @@ -46,14 +46,16 @@ function create(info: ts.server.PluginCreateInfo) { ); proxy.getSemanticDiagnostics = (filename: string): ts.Diagnostic[] => { - const originalDiagnostics = - info.languageService.getSemanticDiagnostics(filename); const graphQLDiagnostics = getGraphQLDiagnostics( filename, baseTypesPath, schema, info ); + + const originalDiagnostics = + info.languageService.getSemanticDiagnostics(filename); + return graphQLDiagnostics ? [...graphQLDiagnostics, ...originalDiagnostics] : originalDiagnostics; @@ -64,6 +66,13 @@ function create(info: ts.server.PluginCreateInfo) { cursorPosition: number, options: any ): ts.WithMetadata | undefined => { + const completions = getGraphQLCompletions( + filename, + cursorPosition, + schema, + info + ); + const originalCompletions = info.languageService.getCompletionsAtPosition( filename, cursorPosition, @@ -75,13 +84,6 @@ function create(info: ts.server.PluginCreateInfo) { entries: [], }; - const completions = getGraphQLCompletions( - filename, - cursorPosition, - schema, - info - ); - if (completions) { return { ...completions, @@ -93,11 +95,6 @@ function create(info: ts.server.PluginCreateInfo) { }; proxy.getQuickInfoAtPosition = (filename: string, cursorPosition: number) => { - const originalInfo = info.languageService.getQuickInfoAtPosition( - filename, - cursorPosition - ); - const quickInfo = getGraphQLQuickInfo( filename, cursorPosition, @@ -105,6 +102,11 @@ function create(info: ts.server.PluginCreateInfo) { info ); + const originalInfo = info.languageService.getQuickInfoAtPosition( + filename, + cursorPosition + ); + return quickInfo || originalInfo; };