/** * Compiles TypeScript code into Closure-compiler-ready JS. */ function toClosureJS(options, fileNames, settings, writeFile) { var compilerHost = ts.createCompilerHost(options); var program = ts.createProgram(fileNames, options, compilerHost); var transformerHost = { shouldSkipTsickleProcessing: function (fileName) { return fileNames.indexOf(fileName) === -1; }, shouldIgnoreWarningsForPath: function (fileName) { return false; }, pathToModuleName: cliSupport.pathToModuleName, fileNameToModuleId: function (fileName) { return fileName; }, es5Mode: true, googmodule: true, prelude: '', transformDecorators: true, transformTypesToClosure: true, typeBlackListPaths: new Set(), untyped: false, logWarning: function (warning) { return console.error(tsickle.formatDiagnostics([warning])); }, options: options, host: compilerHost, }; var diagnostics = ts.getPreEmitDiagnostics(program); if (diagnostics.length > 0) { return { diagnostics: diagnostics, modulesManifest: new tsickle_1.ModulesManifest(), externs: {}, emitSkipped: true, emittedFiles: [], }; } return tsickle.emitWithTsickle(program, transformerHost, compilerHost, options, undefined, writeFile); }
/** * Compiles TypeScript code into Closure-compiler-ready JS. */ function toClosureJS(options, fileNames, settings, writeFile) { // Use absolute paths to determine what files to process since files may be imported using // relative or absolute paths var absoluteFileNames = fileNames.map(function (i) { return path.resolve(i); }); var compilerHost = ts.createCompilerHost(options); var program = ts.createProgram(fileNames, options, compilerHost); var filesToProcess = new Set(absoluteFileNames); var rootModulePath = options.rootDir || util_1.getCommonParentDirectory(absoluteFileNames); var transformerHost = { shouldSkipTsickleProcessing: function (fileName) { return !filesToProcess.has(path.resolve(fileName)); }, shouldIgnoreWarningsForPath: function (fileName) { return false; }, pathToModuleName: cliSupport.pathToModuleName.bind(null, rootModulePath), fileNameToModuleId: function (fileName) { return path.relative(rootModulePath, fileName); }, es5Mode: true, googmodule: true, transformDecorators: true, transformTypesToClosure: true, typeBlackListPaths: new Set(), disableAutoQuoting: settings.disableAutoQuoting, untyped: false, logWarning: function (warning) { return console.error(ts.formatDiagnostics([warning], compilerHost)); }, options: options, host: compilerHost, }; var diagnostics = ts.getPreEmitDiagnostics(program); if (diagnostics.length > 0) { return { diagnostics: diagnostics, modulesManifest: new tsickle_1.ModulesManifest(), externs: {}, emitSkipped: true, emittedFiles: [], }; } return tsickle.emitWithTsickle(program, transformerHost, compilerHost, options, undefined, writeFile); }