UNPKG

definition-tester

Version:
72 lines 2.89 kB
'use strict'; var fs = require('fs'); var path = require('path'); var Promise = require('bluebird'); var exec_1 = require('../util/exec'); var util = require('../util/util'); var ts = require('typescript'); function diagsToStrings(diags) { return diags.map(function (d) { var pos = ts.getLineAndCharacterOfPosition(d.file, d.start); return d.file.fileName.replace(/\//g, '\\') + "\n\t Line " + (pos.line + 1) + ": " + ts.flattenDiagnosticMessageText(d.messageText, '\r\n'); }); } var useJsx = /\.tsx$/i; function runTsc(tsConfigfile, options) { var tscPath = options.tscPath; var root = path.dirname(tsConfigfile); return Promise.all([ util.fileExists(tsConfigfile), util.fileExists(tscPath), util.fileExists(path.join(root, 'package.json')) ]).spread(function (tsfileExists, tscPathExists, packageExists) { if (!tsfileExists) { throw new Error(tsConfigfile + ' does not exist in path ' + tscPath); } if (!tscPathExists) { throw new Error(tscPath + ' does not exist in path ' + tscPath); } return packageExists ? installNodeModules(root) : undefined; }).then(function () { var configJson = ts.parseConfigFileTextToJson('tsconfig.json', fs.readFileSync(tsConfigfile, 'utf-8')); var configParse = ts.parseJsonConfigFileContent(configJson.config, ts.sys, root, undefined, tsConfigfile); var opts = configParse.options; if (opts === undefined) { throw new Error('Failed when parsing ' + tsConfigfile); } var diagnostics = []; var oldCwd = process.cwd(); process.chdir(root); try { var program = ts.createProgram(configParse.fileNames, opts); addDiagnostics(program.getGlobalDiagnostics()); addDiagnostics(program.getSyntacticDiagnostics()); addDiagnostics(program.getSemanticDiagnostics()); } finally { process.chdir(oldCwd); } var result = diagsToStrings(diagnostics); if (result.length > 0) { console.log("== Errors when compiling " + tsConfigfile + " =="); console.log(result.join('\r\n')); } return result; function addDiagnostics(diags) { if (diags && diags.length) { diagnostics = diagnostics.concat(diags); } } }); } Object.defineProperty(exports, "__esModule", { value: true }); exports.default = runTsc; function installNodeModules(cwd) { return exec_1.exec('npm install', [], cwd).then(function (_a) { var error = _a.error, exitCode = _a.exitCode, stdout = _a.stdout, stderr = _a.stderr; if (error) { throw error; } }); } //# sourceMappingURL=Tsc.js.map