diff --git a/eslint.config.js b/eslint.config.js index c0924bef125..18ae512975b 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -565,11 +565,6 @@ export default tseslint.config( 'src/vs/platform/telemetry/common/telemetryUtils.ts', 'src/vs/platform/telemetry/node/1dsAppender.ts', 'src/vs/platform/telemetry/node/errorTelemetry.ts', - 'src/vs/platform/terminal/common/terminal.ts', - 'src/vs/platform/terminal/node/ptyHostService.ts', - 'src/vs/platform/terminal/node/ptyService.ts', - 'src/vs/platform/terminal/node/terminalProcess.ts', - 'src/vs/platform/terminal/node/windowsShellHelper.ts', 'src/vs/platform/theme/common/iconRegistry.ts', 'src/vs/platform/theme/common/tokenClassificationRegistry.ts', 'src/vs/platform/update/common/updateIpc.ts', diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index 67b3a3d3a23..ce3d9922601 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -255,7 +255,7 @@ export const enum ProcessPropertyType { ShellIntegrationInjectionFailureReason = 'shellIntegrationInjectionFailureReason', } -export interface IProcessProperty { +export interface IProcessProperty { type: T; value: IProcessPropertyMap[T]; } @@ -301,7 +301,7 @@ export interface IPtyService { readonly onProcessReplay: Event<{ id: number; event: IPtyHostProcessReplayEvent }>; readonly onProcessOrphanQuestion: Event<{ id: number }>; readonly onDidRequestDetach: Event<{ requestId: number; workspaceId: string; instanceId: number }>; - readonly onDidChangeProperty: Event<{ id: number; property: IProcessProperty }>; + readonly onDidChangeProperty: Event<{ id: number; property: IProcessProperty }>; readonly onProcessExit: Event<{ id: number; event: number | undefined }>; createProcess( @@ -774,7 +774,7 @@ export interface ITerminalChildProcess { readonly onProcessData: Event; readonly onProcessReady: Event; readonly onProcessReplayComplete?: Event; - readonly onDidChangeProperty: Event>; + readonly onDidChangeProperty: Event; readonly onProcessExit: Event; readonly onRestoreCommands?: Event; diff --git a/src/vs/platform/terminal/node/ptyHostService.ts b/src/vs/platform/terminal/node/ptyHostService.ts index af836c1ad44..d85ba59ef12 100644 --- a/src/vs/platform/terminal/node/ptyHostService.ts +++ b/src/vs/platform/terminal/node/ptyHostService.ts @@ -87,7 +87,7 @@ export class PtyHostService extends Disposable implements IPtyHostService { readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event; private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>()); readonly onDidRequestDetach = this._onDidRequestDetach.event; - private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>()); + private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>()); readonly onDidChangeProperty = this._onDidChangeProperty.event; private readonly _onProcessExit = this._register(new Emitter<{ id: number; event: number | undefined }>()); readonly onProcessExit = this._onProcessExit.event; diff --git a/src/vs/platform/terminal/node/ptyService.ts b/src/vs/platform/terminal/node/ptyService.ts index 55fe5863b7d..bc8a7ced438 100644 --- a/src/vs/platform/terminal/node/ptyService.ts +++ b/src/vs/platform/terminal/node/ptyService.ts @@ -37,13 +37,18 @@ import { hasKey } from '../../../base/common/types.js'; type XtermTerminal = pkg.Terminal; const { Terminal: XtermTerminal } = pkg; -export function traceRpc(_target: any, key: string, descriptor: any) { +interface ITraceRpcArgs { + logService: ILogService; + simulatedLatency: number; +} + +export function traceRpc(_target: Object, key: string, descriptor: PropertyDescriptor) { if (typeof descriptor.value !== 'function') { throw new Error('not supported'); } const fnKey = 'value'; const fn = descriptor.value; - descriptor[fnKey] = async function (...args: unknown[]) { + descriptor[fnKey] = async function (this: TThis, ...args: unknown[]) { if (this.traceRpcArgs.logService.getLevel() === LogLevel.Trace) { this.traceRpcArgs.logService.trace(`[RPC Request] PtyService#${fn.name}(${args.map(e => JSON.stringify(e)).join(', ')})`); } @@ -110,7 +115,7 @@ export class PtyService extends Disposable implements IPtyService { readonly onProcessOrphanQuestion = this._traceEvent('_onProcessOrphanQuestion', this._onProcessOrphanQuestion.event); private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>()); readonly onDidRequestDetach = this._traceEvent('_onDidRequestDetach', this._onDidRequestDetach.event); - private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>()); + private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>()); readonly onDidChangeProperty = this._traceEvent('_onDidChangeProperty', this._onDidChangeProperty.event); private _traceEvent(name: string, event: Event): Event { @@ -123,7 +128,7 @@ export class PtyService extends Disposable implements IPtyService { } @memoize - get traceRpcArgs(): { logService: ILogService; simulatedLatency: number } { + get traceRpcArgs(): ITraceRpcArgs { return { logService: this._logService, simulatedLatency: this._simulatedLatency @@ -663,7 +668,7 @@ class PersistentTerminalProcess extends Disposable { private readonly _bufferer: TerminalDataBufferer; - private readonly _pendingCommands = new Map void; reject: (err: any) => void }>(); + private readonly _pendingCommands = new Map void; reject: (err: unknown) => void }>(); private _isStarted: boolean = false; private _interactionState: MutationLogger; @@ -685,7 +690,7 @@ class PersistentTerminalProcess extends Disposable { readonly onProcessData = this._onProcessData.event; private readonly _onProcessOrphanQuestion = this._register(new Emitter()); readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event; - private readonly _onDidChangeProperty = this._register(new Emitter>()); + private readonly _onDidChangeProperty = this._register(new Emitter()); readonly onDidChangeProperty = this._onDidChangeProperty.event; private _inReplay = false; @@ -931,7 +936,7 @@ class PersistentTerminalProcess extends Disposable { this._onPersistentProcessReady.fire(); } - sendCommandResult(reqId: number, isError: boolean, serializedPayload: any): void { + sendCommandResult(reqId: number, isError: boolean, serializedPayload: unknown): void { const data = this._pendingCommands.get(reqId); if (!data) { return; diff --git a/src/vs/platform/terminal/node/terminalProcess.ts b/src/vs/platform/terminal/node/terminalProcess.ts index 3a6228383eb..9375f24d0a6 100644 --- a/src/vs/platform/terminal/node/terminalProcess.ts +++ b/src/vs/platform/terminal/node/terminalProcess.ts @@ -130,7 +130,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess readonly onProcessData = this._onProcessData.event; private readonly _onProcessReady = this._register(new Emitter()); readonly onProcessReady = this._onProcessReady.event; - private readonly _onDidChangeProperty = this._register(new Emitter>()); + private readonly _onDidChangeProperty = this._register(new Emitter()); readonly onDidChangeProperty = this._onDidChangeProperty.event; private readonly _onProcessExit = this._register(new Emitter()); readonly onProcessExit = this._onProcessExit.event; @@ -542,8 +542,8 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess const object = this._writeQueue.shift()!; this._logService.trace('node-pty.IPty#write', object.data); if (object.isBinary) { - // TODO: node-pty's write should accept a Buffer - // eslint-disable-next-line local/code-no-any-casts + // TODO: node-pty's write should accept a Buffer, needs https://github.com/microsoft/node-pty/pull/812 + // eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any this._ptyProcess!.write(Buffer.from(object.data, 'binary') as any); } else { this._ptyProcess!.write(object.data); diff --git a/src/vs/platform/terminal/node/windowsShellHelper.ts b/src/vs/platform/terminal/node/windowsShellHelper.ts index ded8e456c75..c5c254c9813 100644 --- a/src/vs/platform/terminal/node/windowsShellHelper.ts +++ b/src/vs/platform/terminal/node/windowsShellHelper.ts @@ -91,7 +91,7 @@ export class WindowsShellHelper extends Disposable implements IWindowsShellHelpe } } - private traverseTree(tree: any): string { + private traverseTree(tree: WindowsProcessTreeType.IProcessTreeNode | undefined): string { if (!tree) { return ''; } diff --git a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts index 35fe84b73dd..e637972e608 100644 --- a/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts +++ b/src/vs/workbench/contrib/terminal/browser/terminalProcessManager.ts @@ -386,7 +386,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce newProcess.onDidChangeProperty(({ type, value }) => { switch (type) { case ProcessPropertyType.HasChildProcesses: - this._hasChildProcesses = value; + this._hasChildProcesses = value as IProcessPropertyMap[ProcessPropertyType.HasChildProcesses]; break; case ProcessPropertyType.FailedShellIntegrationActivation: this._telemetryService?.publicLog2<{}, { owner: 'meganrogge'; comment: 'Indicates shell integration was not activated because of custom args' }>('terminal/shellIntegrationActivationFailureCustomArgs');