@typespec/compiler
Version:
TypeSpec compiler and standard library
141 lines • 6.73 kB
TypeScript
import { ApplyWorkspaceEditParams, ApplyWorkspaceEditResult, CodeAction, CodeActionParams, CompletionList, CompletionParams, DefinitionParams, DidChangeWatchedFilesParams, DocumentFormattingParams, DocumentHighlight, DocumentHighlightParams, DocumentSymbol, DocumentSymbolParams, FoldingRange, FoldingRangeParams, Hover, HoverParams, InitializeParams, InitializeResult, InitializedParams, Location, PrepareRenameParams, PublishDiagnosticsParams, Range, ReferenceParams, RenameFilesParams, RenameParams, SemanticTokens, SemanticTokensParams, SignatureHelp, SignatureHelpParams, TextDocumentChangeEvent, TextDocumentIdentifier, WorkspaceEdit, WorkspaceFolder, WorkspaceFoldersChangeEvent } from "vscode-languageserver";
import type { TextDocument, TextEdit } from "vscode-languageserver-textdocument";
import type { CompilerOptions } from "../core/options.js";
import type { Program } from "../core/program.js";
import type { CompilerHost, Diagnostic, NoTarget, SourceFile, SourceLocation, TypeSpecScriptNode } from "../core/types.js";
import { LoadedCoreTemplates } from "../init/core-templates.js";
import { EmitterTemplate, InitTemplate, InitTemplateLibrarySpec } from "../init/init-template.js";
import { ScaffoldingConfig } from "../init/scaffold.js";
import { CompileTracker, ServerCompileOptions } from "./server-compile-manager.js";
export type ServerLogLevel = "trace" | "debug" | "info" | "warning" | "error";
export interface ServerLog {
level: ServerLogLevel;
message: string;
detail?: unknown;
}
export interface ServerHost {
readonly compilerHost: CompilerHost;
readonly throwInternalErrors?: boolean;
readonly getOpenDocumentByURL: (url: string) => TextDocument | undefined;
readonly sendDiagnostics: (params: PublishDiagnosticsParams) => void;
readonly log: (log: ServerLog) => void;
readonly applyEdit: (paramOrEdit: ApplyWorkspaceEditParams | WorkspaceEdit) => Promise<ApplyWorkspaceEditResult>;
}
export interface CompileResult {
readonly program: Program;
readonly document: TextDocument | undefined;
readonly script: TypeSpecScriptNode | undefined;
readonly optionsFromConfig: CompilerOptions;
readonly tracker: CompileTracker;
}
export interface ServerDiagnostic extends Diagnostic {
target: (SourceLocation & {
position?: {
line: number;
column: number;
};
}) | typeof NoTarget;
}
export interface InternalCompileResult {
readonly hasError: boolean;
readonly diagnostics: ServerDiagnostic[];
readonly entrypoint?: string;
readonly options?: CompilerOptions;
}
export interface Server {
readonly pendingMessages: readonly ServerLog[];
readonly workspaceFolders: readonly ServerWorkspaceFolder[];
compile(document: TextDocument | TextDocumentIdentifier, additionalOptions: CompilerOptions | undefined, serverCompileOptions: ServerCompileOptions): Promise<CompileResult | undefined>;
initialize(params: InitializeParams): Promise<InitializeResult>;
initialized(params: InitializedParams): void;
workspaceFoldersChanged(e: WorkspaceFoldersChangeEvent): Promise<void>;
watchedFilesChanged(params: DidChangeWatchedFilesParams): void;
formatDocument(params: DocumentFormattingParams): Promise<TextEdit[]>;
gotoDefinition(params: DefinitionParams): Promise<Location[]>;
complete(params: CompletionParams): Promise<CompletionList>;
findReferences(params: ReferenceParams): Promise<Location[]>;
findDocumentHighlight(params: DocumentHighlightParams): Promise<DocumentHighlight[]>;
prepareRename(params: PrepareRenameParams): Promise<Range | undefined>;
rename(params: RenameParams): Promise<WorkspaceEdit>;
renameFiles(params: RenameFilesParams): Promise<void>;
getSemanticTokens(params: SemanticTokensParams): Promise<SemanticToken[]>;
buildSemanticTokens(params: SemanticTokensParams): Promise<SemanticTokens>;
checkChange(change: TextDocumentChangeEvent<TextDocument>): void;
getHover(params: HoverParams): Promise<Hover>;
getSignatureHelp(params: SignatureHelpParams): Promise<SignatureHelp | undefined>;
getFoldingRanges(getFoldingRanges: FoldingRangeParams): Promise<FoldingRange[]>;
getDocumentSymbols(params: DocumentSymbolParams): Promise<DocumentSymbol[]>;
documentClosed(change: TextDocumentChangeEvent<TextDocument>): void;
documentOpened(change: TextDocumentChangeEvent<TextDocument>): void;
getCodeActions(params: CodeActionParams): Promise<CodeAction[]>;
resolveCodeAction(codeAction: CodeAction): Promise<CodeAction>;
reportDiagnostics({ program, document, optionsFromConfig }: CompileResult): void;
log(log: ServerLog): void;
getInitProjectContext(): Promise<InitProjectContext>;
validateInitProjectTemplate(param: {
template: InitTemplate;
}): Promise<boolean>;
initProject(param: {
config: InitProjectConfig;
}): Promise<boolean>;
internalCompile(param: {
doc: TextDocumentIdentifier;
options: CompilerOptions;
}): Promise<InternalCompileResult>;
}
export interface ServerSourceFile extends SourceFile {
readonly document?: TextDocument;
}
export interface ServerWorkspaceFolder extends WorkspaceFolder {
path: string;
}
export declare enum SemanticTokenKind {
Namespace = 0,
Type = 1,
Class = 2,
Enum = 3,
Interface = 4,
Struct = 5,
TypeParameter = 6,
Parameter = 7,
Variable = 8,
Property = 9,
EnumMember = 10,
Event = 11,
Function = 12,
Method = 13,
Macro = 14,
Keyword = 15,
Comment = 16,
String = 17,
Number = 18,
Regexp = 19,
Operator = 20,
DocCommentTag = 21
}
export interface SemanticToken {
kind: SemanticTokenKind;
pos: number;
end: number;
}
export type CustomRequestName = "typespec/getInitProjectContext" | "typespec/initProject" | "typespec/validateInitProjectTemplate" | "typespec/internalCompile";
export interface ServerCustomCapacities {
getInitProjectContext?: boolean;
validateInitProjectTemplate?: boolean;
initProject?: boolean;
internalCompile?: boolean;
}
export interface ServerInitializeResult extends InitializeResult {
customCapacities?: ServerCustomCapacities;
compilerRootFolder?: string;
compilerCliJsPath?: string;
}
export interface InitProjectContext {
/** provide the default templates current compiler/cli supports */
coreInitTemplates: LoadedCoreTemplates;
}
export type InitProjectConfig = ScaffoldingConfig;
export type InitProjectTemplate = InitTemplate;
export type InitProjectTemplateLibrarySpec = InitTemplateLibrarySpec;
export type InitProjectTemplateEmitterTemplate = EmitterTemplate;
//# sourceMappingURL=types.d.ts.map