Skip to content
Permalink
e163ea39a8
Go to file
 
 
Cannot retrieve contributors at this time
56 lines (51 sloc) 1.82 KB
/**
* 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
*/
import { fork } from 'child_process';
import fs from 'fs';
import os from 'os';
import path from 'path';
import log from 'updatable-log';
import { FileLogger, LogLevel, NoopLogger } from './tsserver/Logger';
import TSServer from './tsserver/TSServer';
const tssPathDefault = path.resolve(path.dirname(require.resolve('typescript')), 'tsserver.js');
/**
* Create TSServer with default configuration.
*/
export default function forkTSServer(tssPath = tssPathDefault) {
log.info('forkTSServer');
const logDir = fs.mkdtempSync(path.join(os.tmpdir(), 'ts-migrate-log-'));
log.info(`Logs in ${logDir}`);
const tsmLogFile = path.resolve(logDir, 'ts-migrate-tsserver.log');
const tssLogFile = path.resolve(logDir, 'tsserver.log');
const cancellationPipeFile = `${path.resolve(logDir, 'ts-cancellation.tmp')}*`;
const tsArgs = [
'--useSingleInferredProject',
'--cancellationPipeName',
cancellationPipeFile,
'--logVerbosity',
'verbose',
'--logFile',
tssLogFile,
'--locale',
'en',
'--noGetErrOnBackgroundUpdate',
'--disableAutomaticTypingAcquisition',
];
const childProcess = fork(tssPath, tsArgs, { silent: true });
const tsmLogger = new FileLogger(tsmLogFile, false, LogLevel.verbose);
return new TSServer(childProcess, tsmLogger);
}
/**
* Create TSServer without logging.
* Useful for testing.
*/
export function forkTSServerWithNoopLogger(tssPath = tssPathDefault) {
const childProcess = fork(
tssPath,
['--useSingleInferredProject', '--locale', 'en', '--noGetErrOnBackgroundUpdate'],
{ silent: true },
);
return new TSServer(childProcess, new NoopLogger());
}
You can’t perform that action at this time.