@lpc-lang/core
Version:
LPC Language Compiler Library
150 lines • 6.25 kB
TypeScript
/// <reference types="node" />
import { CompletionEntryDetails, LanguageServiceMode, RenameLocation } from "./_namespaces/lpc";
import { Logger, NormalizedPath, Project, ProjectService, ProjectServiceEventHandler, ServerHost } from "./_namespaces/lpc.server";
import * as protocol from "./protocol.js";
export interface HostCancellationToken {
isCancellationRequested(): boolean;
}
export interface ServerCancellationToken extends HostCancellationToken {
setRequest(requestId: number): void;
resetRequest(requestId: number): void;
}
export declare const nullCancellationToken: ServerCancellationToken;
export interface SessionOptions {
host: ServerHost;
cancellationToken: ServerCancellationToken;
useSingleInferredProject: boolean;
useInferredProjectPerProjectRoot: boolean;
byteLength: (buf: string, encoding?: BufferEncoding) => number;
hrtime: (start?: [number, number]) => [number, number];
logger: Logger;
/**
* If falsy, all events are suppressed.
*/
canUseEvents: boolean;
canUseWatchEvents?: boolean;
eventHandler?: ProjectServiceEventHandler;
/** Has no effect if eventHandler is also specified. */
suppressDiagnosticEvents?: boolean;
serverMode?: LanguageServiceMode;
throttleWaitMilliseconds?: number;
noGetErrOnBackgroundUpdate?: boolean;
globalPlugins?: readonly string[];
pluginProbeLocations?: readonly string[];
allowLocalPluginLoads?: boolean;
typesMapLocation?: string;
projectRootFolder?: string;
}
export type Event = <T extends object>(body: T, eventName: string) => void;
export interface EventSender {
event: Event;
}
export declare class Session<TMessage = string> implements EventSender {
private readonly gcTimer;
private changeSeq;
private performanceData;
private currentRequestId;
private errorCheck;
protected host: ServerHost;
private readonly cancellationToken;
protected byteLength: (buf: string, encoding?: BufferEncoding) => number;
private hrtime;
protected logger: Logger;
protected canUseEvents: boolean;
private suppressDiagnosticEvents?;
private readonly noGetErrOnBackgroundUpdate?;
protected projectService: ProjectService;
constructor(opts: SessionOptions);
exit(): void;
send(msg: protocol.Message): void;
protected writeMessage(msg: protocol.Message): void;
event<T extends object>(body: T, eventName: string): void;
private sendRequestCompletedEvent;
private setCurrentRequest;
private resetCurrentRequest;
executeWithRequestId<T>(requestId: number, f: () => T): T;
logError(err: Error, cmd: string): void;
private logErrorWorker;
private getFileAndProject;
private getFileAndLanguageServiceForSyntacticOperation;
private getProject;
private getFileAndProjectWorker;
private getProjectInfo;
/**
* @param fileName is the name of the file to be opened
* @param fileContent is a version of the file content that is known to be more up to date than the one on disk
*/
private openClientFile;
openFile(args: protocol.OpenRequestArgs): protocol.OpenRequestArgs;
private getPosition;
private mapDisplayParts;
private updateOpenWorker;
private closeClientFile;
private change;
private getDiagnostics;
private toPendingErrorCheck;
setCompilerOptionsForInferredProjects(args: protocol.SetCompilerOptionsForInferredProjectsArgs): void;
/** It is the caller's responsibility to verify that `!this.suppressDiagnosticEvents`. */
private updateErrorCheck;
private sendAllDiagnostics;
private semanticCheck;
private syntacticCheck;
private suggestionCheck;
private getConfigFileAndProject;
private getConfigFileDiagnostics;
private convertToDiagnosticsWithLinePositionFromDiagnosticFile;
private getFormatOptions;
private getDocCommentTemplate;
getSemanticDiagnosticsSync(args: protocol.SemanticDiagnosticsSyncRequestArgs): readonly protocol.DiagnosticWithLinePosition[] | readonly protocol.Diagnostic[];
private getDiagnosticsWorker;
private convertToDiagnosticsWithLinePosition;
private sendDiagnosticsEvent;
getDiagnosticsForFiles(args: protocol.DiagnosticRequestArgs): void;
getDiagnosticsForProject(args: protocol.DiagnosticForProjectRequestArgs): void;
private getEncodedSemanticClassifications;
private getSignatureHelpItems;
private mapSignatureHelpItems;
private getQuickInfoWorker;
private getProjectInfoWorker;
private getDiagnosticsForProjectWorker;
getCanonicalFileName(fileName: string): string;
private mapJSDocTagInfo;
private getPositionInFile;
private mapDefinitionInfoLocations;
private toFileSpan;
private toFileSpanWithContext;
private mapDefinitionInfo;
private getDefinition;
private toLocationNavigationTree;
private getNavigationTree;
private static mapToOriginalLocation;
getRenameLocations(args: protocol.RenameRequestArgs, simplifiedResult: boolean): protocol.RenameResponseBody | readonly RenameLocation[];
private mapRenameInfo;
private toSpanGroups;
private getProjects;
private getDefaultProject;
private getReferences;
private getPreferences;
private getCompletions;
getCompletionEntryDetails(args: protocol.CompletionDetailsRequestArgs, fullResult: boolean): readonly protocol.CompletionEntryDetails[] | readonly CompletionEntryDetails[];
private mapCodeAction;
private mapTextChangesToCodeEdits;
private mapTextChangeToCodeEdit;
private convertTextChangeToCodeEdit;
private requiredResponse;
private notRequired;
private handlers;
executeCommand(request: protocol.Request): HandlerResponse;
protected toStringMessage(message: TMessage): string;
onMessage(request: protocol.Request): {};
}
export interface HandlerResponse {
response?: {};
responseRequired?: boolean;
}
export declare function formatMessage<T extends protocol.Message>(msg: T, logger: Logger, byteLength: (s: string, encoding: BufferEncoding) => number, newLine: string): string;
export interface PendingErrorCheck {
fileName: NormalizedPath;
project: Project;
}
//# sourceMappingURL=session.d.ts.map