import { CancellationToken, CompletionContext, DocumentDiagnosticReport, FileChangeType, LinkedEditingRanges, SemanticTokens, SignatureHelpContext, TextDocumentContentChangeEvent } from 'vscode-languageserver'; import { CallHierarchyIncomingCall, CallHierarchyItem, CallHierarchyOutgoingCall, CodeAction, CodeActionContext, CodeLens, Color, ColorInformation, ColorPresentation, CompletionItem, CompletionList, DefinitionLink, Diagnostic, DocumentHighlight, FoldingRange, FormattingOptions, Hover, InlayHint, Location, Position, Range, ReferenceContext, SelectionRange, SignatureHelp, SymbolInformation, TextDocumentIdentifier, TextEdit, WorkspaceEdit, WorkspaceSymbol } from 'vscode-languageserver-types'; import { Document } from '../lib/documents'; export type Resolvable = T | Promise; export interface AppCompletionItem extends CompletionItem { data?: T; } export interface AppCompletionList extends CompletionList { items: Array>; } export interface DiagnosticsProvider { getDiagnostics(document: Document): Resolvable; getDiagnosticsForPullMode(document: Document, previousResultId?: string, cancellationToken?: CancellationToken): Resolvable; } export interface HoverProvider { doHover(document: Document, position: Position): Resolvable; } export interface CompletionsProvider { getCompletions(document: Document, position: Position, completionContext?: CompletionContext, cancellationToken?: CancellationToken): Resolvable | null>; resolveCompletion?(document: Document, completionItem: AppCompletionItem, cancellationToken?: CancellationToken): Resolvable>; } export interface FormattingProvider { formatDocument(document: Document, options: FormattingOptions): Resolvable; } export interface TagCompleteProvider { doTagComplete(document: Document, position: Position): Resolvable; } export interface DocumentColorsProvider { getDocumentColors(document: Document): Resolvable; } export interface ColorPresentationsProvider { getColorPresentations(document: Document, range: Range, color: Color): Resolvable; } export interface DocumentSymbolsProvider { getDocumentSymbols(document: Document, cancellationToken?: CancellationToken): Resolvable; } export interface DefinitionsProvider { getDefinitions(document: Document, position: Position): Resolvable; } export interface BackwardsCompatibleDefinitionsProvider { getDefinitions(document: Document, position: Position): Resolvable; } export interface CodeActionsProvider { getCodeActions(document: Document, range: Range, context: CodeActionContext, cancellationToken?: CancellationToken): Resolvable; executeCommand?(document: Document, command: string, args?: any[]): Resolvable; resolveCodeAction?(document: Document, codeAction: CodeAction, cancellationToken?: CancellationToken): Resolvable; } export interface FileRename { oldUri: string; newUri: string; } export interface UpdateImportsProvider { updateImports(fileRename: FileRename): Resolvable; } export interface RenameProvider { rename(document: Document, position: Position, newName: string): Resolvable; prepareRename(document: Document, position: Position): Resolvable; } export interface FindReferencesProvider { findReferences(document: Document, position: Position, context: ReferenceContext, cancellationToken?: CancellationToken): Promise; } export interface FileReferencesProvider { fileReferences(uri: string): Promise; } export interface FindComponentReferencesProvider { findComponentReferences(uri: string): Promise; } export interface SignatureHelpProvider { getSignatureHelp(document: Document, position: Position, context: SignatureHelpContext | undefined, cancellationToken?: CancellationToken): Resolvable; } export interface SelectionRangeProvider { getSelectionRange(document: Document, position: Position): Resolvable; } export interface SemanticTokensProvider { getSemanticTokens(textDocument: Document, range?: Range): Resolvable; } export interface LinkedEditingRangesProvider { getLinkedEditingRanges(document: Document, position: Position): Resolvable; } export interface ImplementationProvider { getImplementation(document: Document, position: Position, cancellationToken?: CancellationToken): Resolvable; } export interface TypeDefinitionProvider { getTypeDefinition(document: Document, position: Position): Resolvable; } export interface CallHierarchyProvider { prepareCallHierarchy(document: Document, position: Position): Resolvable; getIncomingCalls(item: CallHierarchyItem, cancellationToken?: CancellationToken): Resolvable; getOutgoingCalls(item: CallHierarchyItem, cancellationToken?: CancellationToken): Resolvable; } export interface CodeLensProvider { getCodeLens(document: Document): Resolvable; resolveCodeLens(document: Document, codeLensToResolve: CodeLens, cancellationToken?: CancellationToken): Resolvable; } export interface OnWatchFileChangesPara { fileName: string; changeType: FileChangeType; } export interface InlayHintProvider { getInlayHints(document: Document, range: Range, cancellationToken?: CancellationToken): Resolvable; } export interface FoldingRangeProvider { getFoldingRanges(document: Document): Resolvable; } export interface DocumentHighlightProvider { findDocumentHighlight(document: Document, position: Position): Resolvable; } export interface WorkspaceSymbolsProvider { getWorkspaceSymbols(query: string, cancellationToken?: CancellationToken): Resolvable; } export interface OnWatchFileChanges { onWatchFileChanges(onWatchFileChangesParas: OnWatchFileChangesPara[]): void; } export interface UpdateTsOrJsFile { updateTsOrJsFile(fileName: string, changes: TextDocumentContentChangeEvent[]): void; } type ProviderBase = DiagnosticsProvider & HoverProvider & CompletionsProvider & FormattingProvider & TagCompleteProvider & DocumentColorsProvider & ColorPresentationsProvider & DocumentSymbolsProvider & UpdateImportsProvider & CodeActionsProvider & FindReferencesProvider & FileReferencesProvider & FindComponentReferencesProvider & RenameProvider & SignatureHelpProvider & SemanticTokensProvider & LinkedEditingRangesProvider & ImplementationProvider & TypeDefinitionProvider & InlayHintProvider & CallHierarchyProvider & FoldingRangeProvider & CodeLensProvider & DocumentHighlightProvider & WorkspaceSymbolsProvider; export type LSProvider = ProviderBase & BackwardsCompatibleDefinitionsProvider; export interface LSPProviderConfig { /** * Whether or not completion lists that are marked as imcomplete * should be filtered server side. */ filterIncompleteCompletions: boolean; /** * Whether or not getDefinitions supports the LocationLink interface. */ definitionLinkSupport: boolean; } export type Plugin = Partial & { __name: string; }; export {};