monaco-editor-wrapper
Version:
Wrapper for monaco-vscode-editor-api and monaco-languageclient
100 lines • 4.22 kB
TypeScript
import * as monaco from '@codingame/monaco-vscode-editor-api';
import { LogLevel } from '@codingame/monaco-vscode-api';
import { type IExtensionManifest, type RegisterExtensionResult } from '@codingame/monaco-vscode-api/extensions';
import { MonacoLanguageClient } from 'monaco-languageclient';
import { type VscodeApiConfig } from 'monaco-languageclient/vscode/services';
import { type Logger } from 'monaco-languageclient/tools';
import { type OverallConfigType } from './vscode/services.js';
import { type CodeResources, EditorApp, type EditorAppConfig, type TextContents, type TextModels } from './editorApp.js';
import { type LanguageClientConfig, LanguageClientWrapper } from './languageClientWrapper.js';
export interface ExtensionConfig {
config: IExtensionManifest;
filesOrContents?: Map<string, string | URL>;
}
export interface LanguageClientConfigs {
automaticallyInit?: boolean;
automaticallyStart?: boolean;
automaticallyDispose?: boolean;
automaticallyDisposeWorkers?: boolean;
configs: Record<string, LanguageClientConfig>;
}
export interface WrapperConfig {
$type: OverallConfigType;
htmlContainer?: HTMLElement;
id?: string;
logLevel?: LogLevel | number;
automaticallyDispose?: boolean;
extensions?: ExtensionConfig[];
vscodeApiConfig?: VscodeApiConfig;
editorAppConfig?: EditorAppConfig;
languageClientConfigs?: LanguageClientConfigs;
}
/**
* This class is responsible for the overall ochestration.
* It inits, start and disposes the editor apps and the language client (if configured) and provides
* access to all required components.
*/
export declare class MonacoEditorLanguageClientWrapper {
private id;
private editorApp?;
private extensionRegisterResults;
private disposableStore;
private languageClientWrappers;
private wrapperConfig?;
private logger;
private initAwait?;
private initResolve;
private startingAwait?;
private startingResolve;
private disposingAwait?;
private disposingResolve;
/**
* Perform an isolated initialization of the user services and the languageclient wrapper (if used).
*/
init(wrapperConfig: WrapperConfig): Promise<void>;
initLanguageClients(): void;
initExtensions(): Promise<void>;
private markInitializing;
private markInitialized;
isInitializing(): boolean;
getInitializingAwait(): Promise<void> | undefined;
getWrapperConfig(): WrapperConfig | undefined;
getExtensionRegisterResult(extensionName: string): RegisterExtensionResult | undefined;
/**
* Performs a full user configuration and the languageclient wrapper (if used) init and then start the application.
*/
initAndStart(wrapperConfig: WrapperConfig): Promise<void>;
/**
* Does not perform any user configuration or other application init and just starts the application.
*/
start(htmlContainer?: HTMLElement): Promise<void>;
startLanguageClients(): Promise<void[]>;
private markStarting;
private markStarted;
isStarting(): boolean;
getStartingAwait(): Promise<void> | undefined;
isStarted(): boolean;
haveLanguageClients(): boolean;
getEditorApp(): EditorApp | undefined;
getEditor(): monaco.editor.IStandaloneCodeEditor | undefined;
getDiffEditor(): monaco.editor.IStandaloneDiffEditor | undefined;
getLanguageClientWrapper(languageId: string): LanguageClientWrapper | undefined;
getLanguageClient(languageId: string): MonacoLanguageClient | undefined;
getTextModels(): TextModels | undefined;
getWorker(languageId: string): Worker | undefined;
getLogger(): Logger;
updateCodeResources(codeResources?: CodeResources): Promise<void>;
registerTextChangedCallback(onTextChanged?: (textChanges: TextContents) => void): void;
reportStatus(): string[];
/**
* Disposes all application and editor resources, plus the languageclient (if used).
*/
dispose(): Promise<void>;
disposeLanguageClients(): Promise<void[]>;
private markDisposing;
private markDisposed;
isDisposing(): boolean;
getDisposingAwait(): Promise<void> | undefined;
updateLayout(): void;
}
//# sourceMappingURL=wrapper.d.ts.map