Merge pull request #276270 from microsoft/tyriar/274723_platform_terminal

Remove any from platform/terminal
This commit is contained in:
Daniel Imms
2025-11-08 07:09:32 -08:00
committed by GitHub
7 changed files with 21 additions and 21 deletions

View File

@@ -565,11 +565,6 @@ export default tseslint.config(
'src/vs/platform/telemetry/common/telemetryUtils.ts', 'src/vs/platform/telemetry/common/telemetryUtils.ts',
'src/vs/platform/telemetry/node/1dsAppender.ts', 'src/vs/platform/telemetry/node/1dsAppender.ts',
'src/vs/platform/telemetry/node/errorTelemetry.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/iconRegistry.ts',
'src/vs/platform/theme/common/tokenClassificationRegistry.ts', 'src/vs/platform/theme/common/tokenClassificationRegistry.ts',
'src/vs/platform/update/common/updateIpc.ts', 'src/vs/platform/update/common/updateIpc.ts',

View File

@@ -255,7 +255,7 @@ export const enum ProcessPropertyType {
ShellIntegrationInjectionFailureReason = 'shellIntegrationInjectionFailureReason', ShellIntegrationInjectionFailureReason = 'shellIntegrationInjectionFailureReason',
} }
export interface IProcessProperty<T extends ProcessPropertyType> { export interface IProcessProperty<T extends ProcessPropertyType = ProcessPropertyType> {
type: T; type: T;
value: IProcessPropertyMap[T]; value: IProcessPropertyMap[T];
} }
@@ -301,7 +301,7 @@ export interface IPtyService {
readonly onProcessReplay: Event<{ id: number; event: IPtyHostProcessReplayEvent }>; readonly onProcessReplay: Event<{ id: number; event: IPtyHostProcessReplayEvent }>;
readonly onProcessOrphanQuestion: Event<{ id: number }>; readonly onProcessOrphanQuestion: Event<{ id: number }>;
readonly onDidRequestDetach: Event<{ requestId: number; workspaceId: string; instanceId: number }>; readonly onDidRequestDetach: Event<{ requestId: number; workspaceId: string; instanceId: number }>;
readonly onDidChangeProperty: Event<{ id: number; property: IProcessProperty<any> }>; readonly onDidChangeProperty: Event<{ id: number; property: IProcessProperty }>;
readonly onProcessExit: Event<{ id: number; event: number | undefined }>; readonly onProcessExit: Event<{ id: number; event: number | undefined }>;
createProcess( createProcess(
@@ -774,7 +774,7 @@ export interface ITerminalChildProcess {
readonly onProcessData: Event<IProcessDataEvent | string>; readonly onProcessData: Event<IProcessDataEvent | string>;
readonly onProcessReady: Event<IProcessReadyEvent>; readonly onProcessReady: Event<IProcessReadyEvent>;
readonly onProcessReplayComplete?: Event<void>; readonly onProcessReplayComplete?: Event<void>;
readonly onDidChangeProperty: Event<IProcessProperty<any>>; readonly onDidChangeProperty: Event<IProcessProperty>;
readonly onProcessExit: Event<number | undefined>; readonly onProcessExit: Event<number | undefined>;
readonly onRestoreCommands?: Event<ISerializedCommandDetectionCapability>; readonly onRestoreCommands?: Event<ISerializedCommandDetectionCapability>;

View File

@@ -87,7 +87,7 @@ export class PtyHostService extends Disposable implements IPtyHostService {
readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event; readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event;
private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>()); private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>());
readonly onDidRequestDetach = this._onDidRequestDetach.event; readonly onDidRequestDetach = this._onDidRequestDetach.event;
private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty<any> }>()); private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>());
readonly onDidChangeProperty = this._onDidChangeProperty.event; readonly onDidChangeProperty = this._onDidChangeProperty.event;
private readonly _onProcessExit = this._register(new Emitter<{ id: number; event: number | undefined }>()); private readonly _onProcessExit = this._register(new Emitter<{ id: number; event: number | undefined }>());
readonly onProcessExit = this._onProcessExit.event; readonly onProcessExit = this._onProcessExit.event;

View File

@@ -37,13 +37,18 @@ import { hasKey } from '../../../base/common/types.js';
type XtermTerminal = pkg.Terminal; type XtermTerminal = pkg.Terminal;
const { Terminal: XtermTerminal } = pkg; 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') { if (typeof descriptor.value !== 'function') {
throw new Error('not supported'); throw new Error('not supported');
} }
const fnKey = 'value'; const fnKey = 'value';
const fn = descriptor.value; const fn = descriptor.value;
descriptor[fnKey] = async function (...args: unknown[]) { descriptor[fnKey] = async function <TThis extends { traceRpcArgs: ITraceRpcArgs }>(this: TThis, ...args: unknown[]) {
if (this.traceRpcArgs.logService.getLevel() === LogLevel.Trace) { if (this.traceRpcArgs.logService.getLevel() === LogLevel.Trace) {
this.traceRpcArgs.logService.trace(`[RPC Request] PtyService#${fn.name}(${args.map(e => JSON.stringify(e)).join(', ')})`); 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); readonly onProcessOrphanQuestion = this._traceEvent('_onProcessOrphanQuestion', this._onProcessOrphanQuestion.event);
private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>()); private readonly _onDidRequestDetach = this._register(new Emitter<{ requestId: number; workspaceId: string; instanceId: number }>());
readonly onDidRequestDetach = this._traceEvent('_onDidRequestDetach', this._onDidRequestDetach.event); readonly onDidRequestDetach = this._traceEvent('_onDidRequestDetach', this._onDidRequestDetach.event);
private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty<any> }>()); private readonly _onDidChangeProperty = this._register(new Emitter<{ id: number; property: IProcessProperty }>());
readonly onDidChangeProperty = this._traceEvent('_onDidChangeProperty', this._onDidChangeProperty.event); readonly onDidChangeProperty = this._traceEvent('_onDidChangeProperty', this._onDidChangeProperty.event);
private _traceEvent<T>(name: string, event: Event<T>): Event<T> { private _traceEvent<T>(name: string, event: Event<T>): Event<T> {
@@ -123,7 +128,7 @@ export class PtyService extends Disposable implements IPtyService {
} }
@memoize @memoize
get traceRpcArgs(): { logService: ILogService; simulatedLatency: number } { get traceRpcArgs(): ITraceRpcArgs {
return { return {
logService: this._logService, logService: this._logService,
simulatedLatency: this._simulatedLatency simulatedLatency: this._simulatedLatency
@@ -663,7 +668,7 @@ class PersistentTerminalProcess extends Disposable {
private readonly _bufferer: TerminalDataBufferer; private readonly _bufferer: TerminalDataBufferer;
private readonly _pendingCommands = new Map<number, { resolve: (data: any) => void; reject: (err: any) => void }>(); private readonly _pendingCommands = new Map<number, { resolve: (data: unknown) => void; reject: (err: unknown) => void }>();
private _isStarted: boolean = false; private _isStarted: boolean = false;
private _interactionState: MutationLogger<InteractionState>; private _interactionState: MutationLogger<InteractionState>;
@@ -685,7 +690,7 @@ class PersistentTerminalProcess extends Disposable {
readonly onProcessData = this._onProcessData.event; readonly onProcessData = this._onProcessData.event;
private readonly _onProcessOrphanQuestion = this._register(new Emitter<void>()); private readonly _onProcessOrphanQuestion = this._register(new Emitter<void>());
readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event; readonly onProcessOrphanQuestion = this._onProcessOrphanQuestion.event;
private readonly _onDidChangeProperty = this._register(new Emitter<IProcessProperty<any>>()); private readonly _onDidChangeProperty = this._register(new Emitter<IProcessProperty>());
readonly onDidChangeProperty = this._onDidChangeProperty.event; readonly onDidChangeProperty = this._onDidChangeProperty.event;
private _inReplay = false; private _inReplay = false;
@@ -931,7 +936,7 @@ class PersistentTerminalProcess extends Disposable {
this._onPersistentProcessReady.fire(); 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); const data = this._pendingCommands.get(reqId);
if (!data) { if (!data) {
return; return;

View File

@@ -130,7 +130,7 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
readonly onProcessData = this._onProcessData.event; readonly onProcessData = this._onProcessData.event;
private readonly _onProcessReady = this._register(new Emitter<IProcessReadyEvent>()); private readonly _onProcessReady = this._register(new Emitter<IProcessReadyEvent>());
readonly onProcessReady = this._onProcessReady.event; readonly onProcessReady = this._onProcessReady.event;
private readonly _onDidChangeProperty = this._register(new Emitter<IProcessProperty<any>>()); private readonly _onDidChangeProperty = this._register(new Emitter<IProcessProperty>());
readonly onDidChangeProperty = this._onDidChangeProperty.event; readonly onDidChangeProperty = this._onDidChangeProperty.event;
private readonly _onProcessExit = this._register(new Emitter<number>()); private readonly _onProcessExit = this._register(new Emitter<number>());
readonly onProcessExit = this._onProcessExit.event; readonly onProcessExit = this._onProcessExit.event;
@@ -542,8 +542,8 @@ export class TerminalProcess extends Disposable implements ITerminalChildProcess
const object = this._writeQueue.shift()!; const object = this._writeQueue.shift()!;
this._logService.trace('node-pty.IPty#write', object.data); this._logService.trace('node-pty.IPty#write', object.data);
if (object.isBinary) { if (object.isBinary) {
// TODO: node-pty's write should accept a Buffer // 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 // eslint-disable-next-line local/code-no-any-casts, @typescript-eslint/no-explicit-any
this._ptyProcess!.write(Buffer.from(object.data, 'binary') as any); this._ptyProcess!.write(Buffer.from(object.data, 'binary') as any);
} else { } else {
this._ptyProcess!.write(object.data); this._ptyProcess!.write(object.data);

View File

@@ -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) { if (!tree) {
return ''; return '';
} }

View File

@@ -386,7 +386,7 @@ export class TerminalProcessManager extends Disposable implements ITerminalProce
newProcess.onDidChangeProperty(({ type, value }) => { newProcess.onDidChangeProperty(({ type, value }) => {
switch (type) { switch (type) {
case ProcessPropertyType.HasChildProcesses: case ProcessPropertyType.HasChildProcesses:
this._hasChildProcesses = value; this._hasChildProcesses = value as IProcessPropertyMap[ProcessPropertyType.HasChildProcesses];
break; break;
case ProcessPropertyType.FailedShellIntegrationActivation: case ProcessPropertyType.FailedShellIntegrationActivation:
this._telemetryService?.publicLog2<{}, { owner: 'meganrogge'; comment: 'Indicates shell integration was not activated because of custom args' }>('terminal/shellIntegrationActivationFailureCustomArgs'); this._telemetryService?.publicLog2<{}, { owner: 'meganrogge'; comment: 'Indicates shell integration was not activated because of custom args' }>('terminal/shellIntegrationActivationFailureCustomArgs');