angular-cn/tools/transpiler/karma-ts2dart-preprocessor.js

37 lines
1.3 KiB
JavaScript

// Transpiles JavaScript and TypeScript code to Dart using ts2dart.
var ts2dart = require('ts2dart');
var rundartpackage = require('../build/rundartpackage.js');
module.exports = {
'preprocessor:ts2dart': ['factory', createTs2DartPreprocessor]
};
function createTs2DartPreprocessor(logger, basePath, config, emitter) {
var log = logger.create('ts2dart');
return function(content, file, done) {
try {
var moduleName = config.resolveModuleName(file.originalPath);
file.path = config.transformPath(file.originalPath);
var transpiler = new ts2dart.Transpiler(
{failFast: false, generateLibraryName: true, generateSourceMap: true});
var transpiledContent = transpiler.translateFile(file.originalPath, moduleName);
// TODO(martinprobst): Source maps.
done(null, transpiledContent);
} catch (errors) {
var errorString;
if (errors.forEach) {
errors.forEach(function(error) { log.error(error); });
errorString = errors.join('\n');
} else {
log.error(errors);
errorString = errors;
}
done(new Error('ts2dart compile errors:\n' + errorString));
}
};
}
createTs2DartPreprocessor
.$inject = ['logger', 'config.basePath', 'config.ts2dartPreprocessor', 'emitter'];