From 639a629809f26cb1519f743742ff4509e5fb50c5 Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Wed, 8 Sep 2021 05:38:03 +0530 Subject: [PATCH] feat: gql query autocompletion on codemirror --- helpers/editor/completion/gqlQuery.ts | 29 +++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 helpers/editor/completion/gqlQuery.ts diff --git a/helpers/editor/completion/gqlQuery.ts b/helpers/editor/completion/gqlQuery.ts new file mode 100644 index 000000000..3ff56d135 --- /dev/null +++ b/helpers/editor/completion/gqlQuery.ts @@ -0,0 +1,29 @@ +import { Ref } from "@nuxtjs/composition-api" +import { GraphQLSchema } from "graphql" +import { getAutocompleteSuggestions } from "graphql-language-service-interface" +import { Completer, CompleterResult, CompletionEntry } from "." + +const completer: (schemaRef: Ref) => Completer = + (schemaRef: Ref) => (text, completePos, tokenPos) => { + if (!schemaRef.value) return Promise.resolve(null) + + const completions = getAutocompleteSuggestions(schemaRef.value, text, { + line: completePos.line, + character: completePos.ch, + } as any) + + return Promise.resolve({ + start: tokenPos.start, + end: tokenPos.end, + completions: completions.map( + (x, i) => + { + text: x.label!, + meta: x.detail!, + score: completions.length - i, + } + ), + }) + } + +export default completer