28 lines
868 B
TypeScript
28 lines
868 B
TypeScript
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<GraphQLSchema | null>) => Completer =
|
|
(schemaRef: Ref<GraphQLSchema | null>) => (text, completePos) => {
|
|
if (!schemaRef.value) return Promise.resolve(null)
|
|
|
|
const completions = getAutocompleteSuggestions(schemaRef.value, text, {
|
|
line: completePos.line,
|
|
character: completePos.ch,
|
|
} as any)
|
|
|
|
return Promise.resolve(<CompleterResult>{
|
|
completions: completions.map(
|
|
(x, i) =>
|
|
<CompletionEntry>{
|
|
text: x.label!,
|
|
meta: x.detail!,
|
|
score: completions.length - i,
|
|
}
|
|
),
|
|
})
|
|
}
|
|
|
|
export default completer
|