UNPKG

@kusto/monaco-kusto

Version:

CSL, KQL plugin for the Monaco Editor

104 lines (103 loc) 5.01 kB
import * as ls from 'vscode-languageserver-types'; import type { worker } from 'monaco-editor/esm/vs/editor/editor.worker'; import type { IRange } from 'monaco-editor/esm/vs/editor/editor.api'; import * as kustoService from './languageServiceManager/kustoLanguageService'; import type { LanguageSettings } from './languageServiceManager/settings'; import { Schema, showSchema, ScalarParameter, Database, TabularParameter } from './languageServiceManager/schema'; import type { RenderInfo } from './languageServiceManager/renderInfo'; import type { ClusterReference, DatabaseReference } from './types'; import { ClassificationRange } from './syntaxHighlighting/types'; export type InterfaceFor<C> = { [Member in keyof C]: C[Member]; }; /** * We're using this interface to send messages to a worker, so using * `InterfaceFor` to make it not nominal is more accurate. {@link KustoWorker} * is the public, more limited version of this interface. */ export type IKustoWorkerImpl = InterfaceFor<KustoWorkerImpl>; export declare class KustoWorkerImpl { private _ctx; private _languageService; private _languageId; private _languageSettings; constructor(ctx: worker.IWorkerContext, createData: ICreateData); setSchema(schema: Schema): Promise<void>; addClusterToSchema(uri: string, clusterName: string, databases: readonly { name: string; alternativeName?: string; }[]): Promise<void>; addDatabaseToSchema(uri: string, clusterName: string, databaseSchema: Database): Promise<void>; setSchemaFromShowSchema(schema: any, clusterConnectionString: string, databaseInContextName: string): Promise<void>; normalizeSchema(schema: showSchema.Result, clusterConnectionString: string, databaseInContextName: string): Promise<import("./languageServiceManager/schema").EngineSchema>; getSchema(): Promise<Schema>; getCommandInContext(uri: string, cursorOffset: number): Promise<string | null>; getQueryParams(uri: string, cursorOffset: number): Promise<{ name: string; type: string; }[]>; getGlobalParams(uri: string): Promise<{ name: string; type: string; }[]>; getReferencedSymbols(uri: string, cursorOffset?: number): Promise<{ name: string; kind: string; display: string; }[]>; getReferencedGlobalParams(uri: string, cursorOffset?: number): Promise<{ name: string; type: string; }[]>; getRenderInfo(uri: string, cursorOffset: number): Promise<RenderInfo | null>; /** * Get command in context and the command range. * This method will basically convert generate microsoft language service interface to monaco interface. * @param uri document URI * @param cursorOffset offset from start of document to cursor */ getCommandAndLocationInContext(uri: string, cursorOffset: number): Promise<{ text: string; range: IRange; } | null>; getCommandsInDocument(uri: string): Promise<{ absoluteStart: number; absoluteEnd: number; text: string; }[]>; doComplete(uri: string, position: ls.Position): Promise<ls.CompletionList>; doValidation(uri: string, intervals: { start: number; end: number; }[], includeWarnings?: boolean, includeSuggestions?: boolean): Promise<ls.Diagnostic[]>; getResultActions(uri: string, start: number, end: number): Promise<kustoService.ResultAction[]>; doRangeFormat(uri: string, range: ls.Range): Promise<ls.TextEdit[]>; doFolding(uri: string): Promise<ls.FoldingRange[]>; doDocumentFormat(uri: string): Promise<ls.TextEdit[]>; doCurrentCommandFormat(uri: string, caretPosition: ls.Position): Promise<ls.TextEdit[]>; getClassifications(uri: string): Promise<ClassificationRange[]>; getClientDirective(text: string): Promise<{ isClientDirective: boolean; directiveWithoutLeadingComments: string; }>; getAdminCommand(text: string): Promise<{ isAdminCommand: boolean; adminCommandWithoutLeadingComments: string; }>; findDefinition(uri: string, position: ls.Position): Promise<ls.Location[]>; findReferences(uri: string, position: ls.Position): Promise<ls.Location[]>; doRename(uri: string, position: ls.Position, newName: string): Promise<ls.WorkspaceEdit>; doHover(uri: string, position: ls.Position): Promise<ls.Hover>; setParameters(scalarParameters: readonly ScalarParameter[], tabularParameters: readonly TabularParameter[]): Promise<void>; getClusterReferences(uri: string, cursorOffset: number): Promise<ClusterReference[]>; getDatabaseReferences(uri: string, cursorOffset: number): Promise<DatabaseReference[]>; private _getTextDocument; } export interface ICreateData { languageId: string; languageSettings: LanguageSettings; } /** * Used when monaco-editor is resolved via amd modules */ export declare function create(ctx: worker.IWorkerContext, createData: ICreateData): IKustoWorkerImpl;