UNPKG

@sussudio/platform

Version:

Internal APIs for VS Code's service injection the base services.

166 lines (164 loc) 6.11 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Event } from '@sussudio/base/common/event.mjs'; import { Disposable } from '@sussudio/base/common/lifecycle.mjs'; import { IProcessEnvironment, OperatingSystem } from '@sussudio/base/common/platform.mjs'; import { URI } from '@sussudio/base/common/uri.mjs'; import { ILogService } from '../../log/common/log.mjs'; import { IProcessDataEvent, IPtyService, IReconnectConstants, IRequestResolveVariablesEvent, IShellLaunchConfig, ITerminalLaunchError, ITerminalsLayoutInfo, IProcessProperty, TitleEventSource, ProcessPropertyType, IProcessPropertyMap, ISerializedTerminalState, ITerminalProcessOptions, } from '../common/terminal.mjs'; import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs } from '../common/terminalProcess.mjs'; import { IPtyHostProcessReplayEvent } from '../common/capabilities/capabilities.mjs'; import { IProductService } from '../../product/common/productService.mjs'; export declare class PtyService extends Disposable implements IPtyService { private _lastPtyId; private readonly _logService; private readonly _productService; private readonly _reconnectConstants; readonly _serviceBrand: undefined; private readonly _ptys; private readonly _workspaceLayoutInfos; private readonly _detachInstanceRequestStore; private readonly _revivedPtyIdMap; private readonly _autoReplies; private readonly _onHeartbeat; readonly onHeartbeat: Event<void>; private readonly _onProcessData; readonly onProcessData: Event<{ id: number; event: IProcessDataEvent | string; }>; private readonly _onProcessReplay; readonly onProcessReplay: Event<{ id: number; event: IPtyHostProcessReplayEvent; }>; private readonly _onProcessReady; readonly onProcessReady: Event<{ id: number; event: { pid: number; cwd: string; }; }>; private readonly _onProcessExit; readonly onProcessExit: Event<{ id: number; event: number | undefined; }>; private readonly _onProcessOrphanQuestion; readonly onProcessOrphanQuestion: Event<{ id: number; }>; private readonly _onDidRequestDetach; readonly onDidRequestDetach: Event<{ requestId: number; workspaceId: string; instanceId: number; }>; private readonly _onDidChangeProperty; readonly onDidChangeProperty: Event<{ id: number; property: IProcessProperty<any>; }>; constructor( _lastPtyId: number, _logService: ILogService, _productService: IProductService, _reconnectConstants: IReconnectConstants, ); refreshIgnoreProcessNames(names: string[]): Promise<void>; onPtyHostExit?: Event<number> | undefined; onPtyHostStart?: Event<void> | undefined; onPtyHostUnresponsive?: Event<void> | undefined; onPtyHostResponsive?: Event<void> | undefined; onPtyHostRequestResolveVariables?: Event<IRequestResolveVariablesEvent> | undefined; requestDetachInstance(workspaceId: string, instanceId: number): Promise<IProcessDetails | undefined>; acceptDetachInstanceReply(requestId: number, persistentProcessId: number): Promise<void>; freePortKillProcess(port: string): Promise<{ port: string; processId: string; }>; serializeTerminalState(ids: number[]): Promise<string>; reviveTerminalProcesses(state: ISerializedTerminalState[], dateTimeFormatLocale: string): Promise<void>; shutdownAll(): Promise<void>; createProcess( shellLaunchConfig: IShellLaunchConfig, cwd: string, cols: number, rows: number, unicodeVersion: '6' | '11', env: IProcessEnvironment, executableEnv: IProcessEnvironment, options: ITerminalProcessOptions, shouldPersist: boolean, workspaceId: string, workspaceName: string, isReviving?: boolean, rawReviveBuffer?: string, ): Promise<number>; attachToProcess(id: number): Promise<void>; updateTitle(id: number, title: string, titleSource: TitleEventSource): Promise<void>; updateIcon( id: number, userInitiated: boolean, icon: | URI | { light: URI; dark: URI; } | { id: string; color?: { id: string; }; }, color?: string, ): Promise<void>; refreshProperty<T extends ProcessPropertyType>(id: number, type: T): Promise<IProcessPropertyMap[T]>; updateProperty<T extends ProcessPropertyType>(id: number, type: T, value: IProcessPropertyMap[T]): Promise<void>; detachFromProcess(id: number, forcePersist?: boolean): Promise<void>; reduceConnectionGraceTime(): Promise<void>; listProcesses(): Promise<IProcessDetails[]>; start(id: number): Promise<ITerminalLaunchError | undefined>; shutdown(id: number, immediate: boolean): Promise<void>; input(id: number, data: string): Promise<void>; processBinary(id: number, data: string): Promise<void>; resize(id: number, cols: number, rows: number): Promise<void>; getInitialCwd(id: number): Promise<string>; getCwd(id: number): Promise<string>; acknowledgeDataEvent(id: number, charCount: number): Promise<void>; setUnicodeVersion(id: number, version: '6' | '11'): Promise<void>; getLatency(id: number): Promise<number>; orphanQuestionReply(id: number): Promise<void>; installAutoReply(match: string, reply: string): Promise<void>; uninstallAllAutoReplies(): Promise<void>; uninstallAutoReply(match: string): Promise<void>; getDefaultSystemShell(osOverride?: OperatingSystem): Promise<string>; getEnvironment(): Promise<IProcessEnvironment>; getWslPath(original: string, direction: 'unix-to-win' | 'win-to-unix' | unknown): Promise<string>; private _getWSLExecutablePath; getRevivedPtyNewId(id: number): Promise<number | undefined>; setTerminalLayoutInfo(args: ISetTerminalLayoutInfoArgs): Promise<void>; getTerminalLayoutInfo(args: IGetTerminalLayoutInfoArgs): Promise<ITerminalsLayoutInfo | undefined>; private _expandTerminalTab; private _expandTerminalInstance; private _buildProcessDetails; private _throwIfNoPty; }