UNPKG

@jupyter-lsp/jupyterlab-lsp

Version:

Language Server Protocol integration for JupyterLab

103 lines (102 loc) 4.75 kB
import { IEditorServices } from '@jupyterlab/codeeditor'; import { CodeMirrorEditor, EditorExtensionRegistry } from '@jupyterlab/codemirror'; import { IDocumentWidget } from '@jupyterlab/docregistry'; import { FileEditor } from '@jupyterlab/fileeditor'; import { WidgetLSPAdapter, LanguageServerManager, DocumentConnectionManager, ISocketConnectionOptions, ILSPOptions, ILSPFeatureManager } from '@jupyterlab/lsp'; import { LSPConnection } from '@jupyterlab/lsp/lib/connection'; import * as nbformat from '@jupyterlab/nbformat'; import { Notebook, NotebookPanel } from '@jupyterlab/notebook'; import { PromiseDelegate } from '@lumino/coreutils'; import { Signal } from '@lumino/signaling'; import type * as lsProtocol from 'vscode-languageserver-protocol'; import { FileEditorAdapter } from './adapters/fileeditor'; import { NotebookAdapter } from './adapters/notebook'; import { IFeatureSettings } from './feature'; import { VirtualDocument } from './virtual/document'; export interface ITestEnvironment { documentOptions: VirtualDocument.IOptions; adapter: WidgetLSPAdapter<any>; init(): void; dispose(): void; } export declare class MockLanguageServerManager extends LanguageServerManager { fetchSessions(): Promise<void>; } export declare class MockSettings<T> implements IFeatureSettings<T> { private settings; changed: Signal<IFeatureSettings<T>, void>; constructor(settings: T); get composite(): Required<T>; set(setting: keyof T, value: any): void; } declare namespace MockConnection { interface IOptions extends ILSPOptions { serverCapabilities: lsProtocol.ServerCapabilities; } } declare class MockConnection extends LSPConnection { protected options: MockConnection.IOptions; constructor(options: MockConnection.IOptions); connect(ws: any): void; } declare namespace MockDocumentConnectionManager { interface IOptions extends DocumentConnectionManager.IOptions { connection?: Partial<MockConnection.IOptions>; } } declare class MockDocumentConnectionManager extends DocumentConnectionManager { protected options: MockDocumentConnectionManager.IOptions; constructor(options: MockDocumentConnectionManager.IOptions); get ready(): Promise<void>; connect(options: ISocketConnectionOptions, firstTimeoutSeconds?: number, secondTimeoutMinutes?: number): Promise<MockConnection | undefined>; } export declare namespace TestEnvironment { interface IOptions { document?: Partial<VirtualDocument.IOptions>; connection?: Partial<MockConnection.IOptions>; } } export declare abstract class TestEnvironment implements ITestEnvironment { protected options?: TestEnvironment.IOptions | undefined; adapter: WidgetLSPAdapter<any>; abstract widget: IDocumentWidget; protected abstract getDefaults(): VirtualDocument.IOptions; documentOptions: VirtualDocument.IOptions; editorExtensionRegistry: EditorExtensionRegistry; editorServices: IEditorServices; featureManager: ILSPFeatureManager; constructor(options?: TestEnvironment.IOptions | undefined); protected abstract createWidget(): IDocumentWidget; protected abstract getAdapterType(): typeof FileEditorAdapter | typeof NotebookAdapter; get activeEditor(): CodeMirrorEditor; connectionManager: MockDocumentConnectionManager; init(): Promise<void>; private _languageServerManager; dispose(): void; } export declare class MockNotebookAdapter extends NotebookAdapter { get language(): string; isReady(): boolean; foreingDocumentOpened: PromiseDelegate<unknown>; onForeignDocumentOpened(_: VirtualDocument, context: any): Promise<void>; } export declare class FileEditorTestEnvironment extends TestEnvironment { protected getAdapterType(): typeof FileEditorAdapter; widget: IDocumentWidget<FileEditor>; protected getDefaults(): VirtualDocument.IOptions; createWidget(): IDocumentWidget; dispose(): void; } export declare class NotebookTestEnvironment extends TestEnvironment { widget: NotebookPanel; protected getAdapterType(): typeof MockNotebookAdapter; get notebook(): Notebook; protected getDefaults(): VirtualDocument.IOptions; createWidget(): IDocumentWidget; } export declare function codeCell(source: string[] | string, metadata?: Partial<nbformat.ICodeCellMetadata>): nbformat.ICodeCell; export declare function setNotebookContent(notebook: Notebook, cells: nbformat.ICodeCell[], metadata?: nbformat.INotebookMetadata): void; export declare const pythonNotebookMetadata: nbformat.INotebookMetadata; export declare function showAllCells(notebook: Notebook): void; export declare function getCellsJSON(notebook: Notebook): Array<nbformat.ICell>; export {};