UNPKG

@kusto/monaco-kusto

Version:

CSL, KQL plugin for the Monaco Editor

140 lines (139 loc) 6.28 kB
/// <reference types="@kusto/language-service-next/Kusto.Language.Bridge" /> /// <reference types="@kusto/language-service/Kusto.JavaScript.Client" /> import * as ls from 'vscode-languageserver-types'; import type { TextDocument } from 'vscode-languageserver-textdocument'; import type { FoldingRange } from 'vscode-languageserver-types'; import * as s from './schema'; import type { LanguageSettings } from './settings'; import 'language-service'; import k = Kusto.Data.IntelliSense; import k2 = Kusto.Language.Editor; import { Database } from './schema'; import type { RenderInfo } from './renderInfo'; import type { ClusterReference, DatabaseReference } from '../types'; import { ClassificationRange } from '../syntaxHighlighting/types'; export declare enum TokenKind { TableToken = 2, TableColumnToken = 4, OperatorToken = 8,// where, project, ... SubOperatorToken = 16,// has, contains, ... CalculatedColumnToken = 32, StringLiteralToken = 64, FunctionNameToken = 128, UnknownToken = 256, CommentToken = 512, PlainTextToken = 1024, DataTypeToken = 2048, ControlCommandToken = 4096, CommandPartToken = 8192, QueryParametersToken = 16384, CslCommandToken = 32768, LetVariablesToken = 65536, PluginToken = 131072, BracketRangeToken = 262144, ClientDirectiveToken = 524288 } /** * A plain old javascript object that is roughly equivalent to the @kusto/language-service-next object, but without * all the Bridge.Net properties and methods. this object is being sent from web worker to main thread and turns out * that when posting the message we lose all properties (and functions), thus we use a POJO instead. * This issue started happening once upgrading to 0.20.0 from 0.15.5. */ export interface ClassifiedRange { kind: k2.ClassificationKind; start: number; length: number; end: number; } /** * colorization data for specific line range. */ export interface ColorizationRange { classifications: ClassifiedRange[]; absoluteStart: number; absoluteEnd: number; } export interface ResultAction { title: string; changes: { start: number; deleteLength: number; insertText: string | null; }[]; kind: string; } export interface LanguageService { doComplete(document: TextDocument, position: ls.Position): Promise<ls.CompletionList>; doRangeFormat(document: TextDocument, range: ls.Range): Promise<ls.TextEdit[]>; doDocumentFormat(document: TextDocument): Promise<ls.TextEdit[]>; doCurrentCommandFormat(document: TextDocument, caretPosition: ls.Position): Promise<ls.TextEdit[]>; doFolding(document: TextDocument): Promise<FoldingRange[]>; doValidation(document: TextDocument, intervals: { start: number; end: number; }[], includeWarnings?: boolean, includeSuggestions?: boolean): Promise<ls.Diagnostic[]>; getResultActions(document: TextDocument, start: number, end: number): Promise<ResultAction[]>; getClassifications(document: TextDocument): Promise<ClassificationRange[]>; doRename(document: TextDocument, position: ls.Position, newName: string): Promise<ls.WorkspaceEdit | undefined>; doHover(document: TextDocument, position: ls.Position): Promise<ls.Hover | undefined>; setParameters(scalarParameters: readonly s.ScalarParameter[], tabularParameters: readonly s.TabularParameter[]): Promise<void>; setSchema(schema: s.Schema): Promise<void>; setSchemaFromShowSchema(schema: s.showSchema.Result, clusterConnectionString: string, databaseInContextName: string, globalScalarParameters?: s.ScalarParameter[], globalTabularParameters?: s.TabularParameter[], databaseInContextAlternateName?: string): Promise<void>; normalizeSchema(schema: s.showSchema.Result, clusterConnectionString: string, databaseInContextName: string, databaseInContextAlternateName?: string): Promise<s.EngineSchema>; getSchema(): Promise<s.Schema>; getCommandInContext(document: TextDocument, cursorOffset: number): Promise<string>; getCommandAndLocationInContext(document: TextDocument, cursorOffset: number): Promise<{ text: string; location: ls.Location; } | null>; getCommandsInDocument(document: TextDocument): Promise<{ absoluteStart: number; absoluteEnd: number; text: string; }[]>; configure(languageSettings: LanguageSettings): void; getClientDirective(text: string): Promise<{ isClientDirective: boolean; directiveWithoutLeadingComments: string; }>; getAdminCommand(text: string): Promise<{ isAdminCommand: boolean; adminCommandWithoutLeadingComments: string; }>; findDefinition(document: TextDocument, position: ls.Position): Promise<ls.Location[]>; findReferences(document: TextDocument, position: ls.Position): Promise<ls.Location[]>; getQueryParams(document: TextDocument, cursorOffset: number): Promise<{ name: string; type: string; }[]>; getGlobalParams(document: TextDocument): Promise<{ name: string; type: string; }[]>; getReferencedSymbols(document: TextDocument, offset?: number): Promise<{ name: string; kind: string; display: string; }[]>; getReferencedGlobalParams(document: TextDocument, offset?: number): Promise<{ name: string; type: string; }[]>; getRenderInfo(document: TextDocument, cursorOffset: number): Promise<RenderInfo | undefined>; getDatabaseReferences(document: TextDocument, cursorOffset: number): Promise<DatabaseReference[]>; getClusterReferences(document: TextDocument, cursorOffset: number): Promise<ClusterReference[]>; addDatabaseToSchema(document: TextDocument, clusterName: string, databaseSchema: Database): Promise<void>; addClusterToSchema(document: TextDocument, clusterName: string, databases: readonly { name: string; alternativeName?: string; }[]): Promise<void>; } export type CmSchema = { accounts: k.KustoIntelliSenseAccountEntity[]; services: k.KustoIntelliSenseServiceEntity[]; connectionString: string; }; /** * Obtain an instance of the kusto language service. */ export declare function getKustoLanguageService(): LanguageService;