ts-migrate-server
Version:
A package that contains the main migration runner and spawns a TSServer process
56 lines • 2.61 kB
JavaScript
"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