UNPKG

ts-migrate-server

Version:

A package that contains the main migration runner and spawns a TSServer process

56 lines 2.61 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.forkTSServerWithNoopLogger = void 0; /** * Create TS Server with forked tsserver process. * See also https://github.com/Microsoft/vscode/blob/dfafad3a00f02469b644c76613d08716b8b31d8d/extensions/typescript-language-features/src/tsServer/server.ts#L139 */ const child_process_1 = require("child_process"); const fs_1 = __importDefault(require("fs")); const os_1 = __importDefault(require("os")); const path_1 = __importDefault(require("path")); const updatable_log_1 = __importDefault(require("updatable-log")); const Logger_1 = require("./tsserver/Logger"); const TSServer_1 = __importDefault(require("./tsserver/TSServer")); const tssPathDefault = path_1.default.resolve(path_1.default.dirname(require.resolve('typescript')), 'tsserver.js'); /** * Create TSServer with default configuration. */ function forkTSServer(tssPath = tssPathDefault) { updatable_log_1.default.info('forkTSServer'); const logDir = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'ts-migrate-log-')); updatable_log_1.default.info(`Logs in ${logDir}`); const tsmLogFile = path_1.default.resolve(logDir, 'ts-migrate-tsserver.log'); const tssLogFile = path_1.default.resolve(logDir, 'tsserver.log'); const cancellationPipeFile = `${path_1.default.resolve(logDir, 'ts-cancellation.tmp')}*`; const tsArgs = [ '--useSingleInferredProject', '--cancellationPipeName', cancellationPipeFile, '--logVerbosity', 'verbose', '--logFile', tssLogFile, '--locale', 'en', '--noGetErrOnBackgroundUpdate', '--disableAutomaticTypingAcquisition', ]; const childProcess = child_process_1.fork(tssPath, tsArgs, { silent: true }); const tsmLogger = new Logger_1.FileLogger(tsmLogFile, false, Logger_1.LogLevel.verbose); return new TSServer_1.default(childProcess, tsmLogger); } exports.default = forkTSServer; /** * Create TSServer without logging. * Useful for testing. */ function forkTSServerWithNoopLogger(tssPath = tssPathDefault) { const childProcess = child_process_1.fork(tssPath, ['--useSingleInferredProject', '--locale', 'en', '--noGetErrOnBackgroundUpdate'], { silent: true }); return new TSServer_1.default(childProcess, new Logger_1.NoopLogger()); } exports.forkTSServerWithNoopLogger = forkTSServerWithNoopLogger; //# sourceMappingURL=forkTSServer.js.map