diff options
Diffstat (limited to 'node_modules/gulp-typescript/release/compiler.js')
-rw-r--r-- | node_modules/gulp-typescript/release/compiler.js | 101 |
1 files changed, 60 insertions, 41 deletions
diff --git a/node_modules/gulp-typescript/release/compiler.js b/node_modules/gulp-typescript/release/compiler.js index f9e22a2b6..723849617 100644 --- a/node_modules/gulp-typescript/release/compiler.js +++ b/node_modules/gulp-typescript/release/compiler.js @@ -35,60 +35,73 @@ var ProjectCompiler = (function () { var currentDirectory = utils.getCommonBasePathOfArray(rootFilenames.map(function (fileName) { return _this.project.input.getFile(fileName).gulp.cwd; })); this.host = new host_1.Host(this.project.typescript, currentDirectory, this.project.input, this.project.options); this.program = this.project.typescript.createProgram(rootFilenames, this.project.options, this.host, this.program); - var preEmitDiagnostics = this.project.typescript.getPreEmitDiagnostics(this.program); var result = reporter_1.emptyCompilationResult(); - result.optionsErrors = this.program.getOptionsDiagnostics().length; - result.syntaxErrors = this.program.getSyntacticDiagnostics().length; - result.globalErrors = this.program.getGlobalDiagnostics().length; - result.semanticErrors = this.program.getSemanticDiagnostics().length; + result.optionsErrors = this.reportDiagnostics(this.program.getOptionsDiagnostics()); + result.syntaxErrors = this.reportDiagnostics(this.program.getSyntacticDiagnostics()); + result.globalErrors = this.reportDiagnostics(this.program.getGlobalDiagnostics()); + result.semanticErrors = this.reportDiagnostics(this.program.getSemanticDiagnostics()); if (this.project.options.declaration) { result.declarationErrors = this.program.getDeclarationDiagnostics().length; } - this.reportDiagnostics(preEmitDiagnostics); - var emitOutput = this.program.emit(); - result.emitErrors = emitOutput.diagnostics.length; - result.emitSkipped = emitOutput.emitSkipped; if (this.project.singleOutput) { - this.emitFile(result, currentDirectory); + var output_1 = { + file: undefined + }; + this.emit(result, function (fileName, content) { + _this.attachContentToFile(output_1, fileName, content); + }); + this.emitFile(output_1, currentDirectory); } else { - // Emit files one by one - for (var _i = 0, _a = this.host.input.getFileNames(true); _i < _a.length; _i++) { - var fileName = _a[_i]; + var output_2 = {}; + var input = this.host.input.getFileNames(true); + for (var i = 0; i < input.length; i++) { + var fileName = utils.normalizePath(input[i]); var file = this.project.input.getFile(fileName); - this.emitFile(result, currentDirectory, file); + output_2[fileName] = { file: file }; + } + this.emit(result, function (fileName, content, writeByteOrderMark, onError, sourceFiles) { + if (sourceFiles.length !== 1) { + throw new Error("Failure: sourceFiles in WriteFileCallback should have length 1, got " + sourceFiles.length); + } + var fileNameOriginal = utils.normalizePath(sourceFiles[0].fileName); + var file = output_2[fileNameOriginal]; + if (!file) + return; + _this.attachContentToFile(file, fileName, content); + }); + for (var i = 0; i < input.length; i++) { + var fileName = utils.normalizePath(input[i]); + this.emitFile(output_2[fileName], currentDirectory); } } this.project.output.finish(result); }; - ProjectCompiler.prototype.emitFile = function (result, currentDirectory, file) { - var jsFileName; - var dtsFileName; - var jsContent; - var dtsContent; - var jsMapContent; - var emitOutput = this.program.emit(file && file.ts, function (fileName, content) { - var _a = utils.splitExtension(fileName, ['d.ts']), extension = _a[1]; - switch (extension) { - case 'js': - case 'jsx': - jsFileName = fileName; - jsContent = content; - break; - case 'd.ts': - dtsFileName = fileName; - dtsContent = content; - break; - case 'map': - jsMapContent = content; - break; - } - }); + ProjectCompiler.prototype.attachContentToFile = function (file, fileName, content) { + var _a = utils.splitExtension(fileName, ['d.ts']), extension = _a[1]; + switch (extension) { + case 'js': + case 'jsx': + file.jsFileName = fileName; + file.jsContent = content; + break; + case 'd.ts': + file.dtsFileName = fileName; + file.dtsContent = content; + break; + case 'map': + file.jsMapContent = content; + break; + } + }; + ProjectCompiler.prototype.emit = function (result, callback) { + var emitOutput = this.program.emit(undefined, callback); result.emitErrors += emitOutput.diagnostics.length; this.reportDiagnostics(emitOutput.diagnostics); - if (emitOutput.emitSkipped) { - result.emitSkipped = true; - } + result.emitSkipped = emitOutput.emitSkipped; + }; + ProjectCompiler.prototype.emitFile = function (_a, currentDirectory) { + var file = _a.file, jsFileName = _a.jsFileName, dtsFileName = _a.dtsFileName, jsContent = _a.jsContent, dtsContent = _a.dtsContent, jsMapContent = _a.jsMapContent; if (!jsFileName) return; var base; @@ -105,9 +118,14 @@ var ProjectCompiler = (function () { baseDeclarations = path.join(this.project.options.declarationDir, baseRelative); } } + else if (this.project.options.outFile) { + base = this.project.directory; + baseDeclarations = base; + } else { - var outFile = this.project.options.outFile || this.project.options.out; + var outFile = this.project.options.out; base = jsFileName.substring(0, jsFileName.length - outFile.length); + baseDeclarations = base; } if (jsContent !== undefined) { if (jsMapContent !== undefined) { @@ -124,6 +142,7 @@ var ProjectCompiler = (function () { var error = diagnostics_1[_i]; this.project.output.diagnostic(error); } + return diagnostics.length; }; ProjectCompiler.prototype.removeSourceMapComment = function (content) { // By default the TypeScript automaticly inserts a source map comment. |