description and source-codefunction register(options) {
if (options === void 0) { options = {}; }
var compiler = options.compiler || 'typescript';
var emptyFileListWarnings = [18002, 18003];
var ignoreWarnings = arrify(options.ignoreWarnings || DEFAULTS.ignoreWarnings || []).concat(emptyFileListWarnings).map(Number
);
var disableWarnings = !!(options.disableWarnings == null ? DEFAULTS.disableWarnings : options.disableWarnings);
var getFile = options.getFile || DEFAULTS.getFile;
var fileExists = options.fileExists || DEFAULTS.fileExists;
var shouldCache = !!(options.cache == null ? DEFAULTS.cache : options.cache);
var fast = !!(options.fast == null ? DEFAULTS.fast : options.fast);
var project = options.project || DEFAULTS.project;
var cacheDirectory = options.cacheDirectory || DEFAULTS.cacheDirectory || getTmpDir();
var compilerOptions = Object.assign({}, DEFAULTS.compilerOptions, options.compilerOptions);
var originalJsHandler = require.extensions['.js'];
var cache = { contents: {}, versions: {}, sourceMaps: {} };
var ignore = arrify((typeof options.ignore === 'boolean' ?
(options.ignore === false ? [] : undefined) :
(options.ignore || DEFAULTS.ignore)) ||
['/node_modules/']).map(function (str) { return new RegExp(str); });
sourceMapSupport.install({
environment: 'node',
retrieveSourceMap: function (fileName) {
if (cache.sourceMaps[fileName]) {
return {
url: cache.sourceMaps[fileName],
map: getFile(cache.sourceMaps[fileName])
};
}
}
});
var cwd = process.cwd();
var ts = require(compiler);
var config = readConfig(compilerOptions, project, cwd, ts);
var configDiagnostics = filterDiagnostics(config.errors, ignoreWarnings, disableWarnings);
var extensions = ['.ts', '.tsx'];
var cachedir = path_1.join(path_1.resolve(cwd, cacheDirectory), getCompilerDigest({ version: ts.version, fast: fast, ignoreWarnings
: ignoreWarnings, disableWarnings: disableWarnings, config: config, compiler: compiler }));
mkdirp.sync(cachedir);
if (configDiagnostics.length) {
throw new TSError(formatDiagnostics(configDiagnostics, cwd, ts, 0));
}
if (config.options.target === undefined) {
config.options.target = ts.ScriptTarget.ES5;
}
if (config.options.module === undefined) {
config.options.module = ts.ModuleKind.CommonJS;
}
if (config.options.allowJs) {
extensions.push('.js');
}
for (var _i = 0, _a = config.fileNames; _i < _a.length; _i++) {
var fileName = _a[_i];
if (/\.d\.ts$/.test(fileName)) {
cache.versions[fileName] = 1;
}
}
function getExtension(fileName) {
if (config.options.jsx === ts.JsxEmit.Preserve && path_1.extname(fileName) === '.tsx') {
return '.jsx';
}
return '.js';
}
var getOutput = function (code, fileName, lineOffset) {
if (lineOffset === void 0) { lineOffset = 0; }
var result = ts.transpileModule(code, {
fileName: fileName,
compilerOptions: config.options,
reportDiagnostics: true
});
var diagnosticList = result.diagnostics ?
filterDiagnostics(result.diagnostics, ignoreWarnings, disableWarnings) :
[];
if (diagnosticList.length) {
throw new TSError(formatDiagnostics(diagnosticList, cwd, ts, lineOffset));
}
return [result.outputText, result.sourceMapText];
};
var compile = readThrough(cachedir, shouldCache, getFile, fileExists, cache, getOutput, getExtension);
var getTypeInfo = function (_fileName, _position) {
throw new TypeError("No type information available under \"--fast\" mode");
};
if (!fast) {
var addVersion_1 = function (fileName) {
if (!cache.versions.hasOwnProperty(fileName)) {
cache.versions[fileName] = 1;
}
};
var addCache_1 = function (code, fil ...