UNPKG

sussudio

Version:

An unofficial VS Code Internal API

51 lines (50 loc) 3.02 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { join } from "../../../base/common/path.mjs"; import { URI } from "../../../base/common/uri.mjs"; import { ProxyChannel } from "../../../base/parts/ipc/common/ipc.mjs"; import { Server } from "../../../base/parts/ipc/node/ipc.cp.mjs"; import { OPTIONS, parseArgs } from "../../environment/node/argv.mjs"; import { NativeEnvironmentService } from "../../environment/node/environmentService.mjs"; import { BufferLogService } from "../../log/common/bufferLog.mjs"; import { ConsoleLogger, LogService, MultiplexLogService } from "../../log/common/log.mjs"; import { LogLevelChannel } from "../../log/common/logIpc.mjs"; import { LoggerService } from "../../log/node/loggerService.mjs"; import product from "../../product/common/product.mjs"; import { TerminalIpcChannels } from "../common/terminal.mjs"; import { HeartbeatService } from "./heartbeatService.mjs"; import { PtyService } from "./ptyService.mjs"; const server = new Server('ptyHost'); const lastPtyId = parseInt(process.env.VSCODE_LAST_PTY_ID || '0'); delete process.env.VSCODE_LAST_PTY_ID; // Logging const productService = { _serviceBrand: undefined, ...product }; const environmentService = new NativeEnvironmentService(parseArgs(process.argv, OPTIONS), productService); const bufferLogService = new BufferLogService(); const logService = new LogService(new MultiplexLogService([ new ConsoleLogger(), bufferLogService ])); const loggerService = new LoggerService(logService); bufferLogService.logger = loggerService.createLogger(URI.file(join(environmentService.logsPath, `${"ptyhost" /* TerminalLogConstants.FileName */}.log`)), { name: "ptyhost" /* TerminalLogConstants.FileName */ }); const logLevelChannel = new LogLevelChannel(logService, loggerService); server.registerChannel(TerminalIpcChannels.Log, logLevelChannel); const heartbeatService = new HeartbeatService(); server.registerChannel(TerminalIpcChannels.Heartbeat, ProxyChannel.fromService(heartbeatService)); const reconnectConstants = { graceTime: parseInt(process.env.VSCODE_RECONNECT_GRACE_TIME || '0'), shortGraceTime: parseInt(process.env.VSCODE_RECONNECT_SHORT_GRACE_TIME || '0'), scrollback: parseInt(process.env.VSCODE_RECONNECT_SCROLLBACK || '100') }; delete process.env.VSCODE_RECONNECT_GRACE_TIME; delete process.env.VSCODE_RECONNECT_SHORT_GRACE_TIME; delete process.env.VSCODE_RECONNECT_SCROLLBACK; const ptyService = new PtyService(lastPtyId, logService, productService, reconnectConstants); server.registerChannel(TerminalIpcChannels.PtyHost, ProxyChannel.fromService(ptyService)); process.once('exit', () => { logService.dispose(); heartbeatService.dispose(); ptyService.dispose(); });