Skip to content

Instantly share code, notes, and snippets.

@jarek-foksa
Created May 9, 2016 19:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jarek-foksa/886237aad306105ea13dcc4455e816ef to your computer and use it in GitHub Desktop.
Save jarek-foksa/886237aad306105ea13dcc4455e816ef to your computer and use it in GitHub Desktop.
let compileScript = (content, relPath) => {
let Compiler = traceur.syntax.Compiler;
let Options = traceur.util.Options;
let options = new Options(traceur.Compiler.prototype.defaultOptions);
options.setFromObject({
arrayComprehension: true,
asyncFunctions: true,
asyncGenerators: true,
forOn: true,
sourceMaps: true,
deferredFunctions: true,
blockBinding: true,
modules: "bootstrap" // amd, commonjs, closure, instantiate, inline, bootstrap
});
let ErrorReporter = traceur.util.CollectingErrorReporter;
let SourceFile = traceur.syntax.SourceFile;
let Parser = traceur.syntax.Parser;
let AttachModuleNameTransformer = traceur.codegeneration.module.AttachModuleNameTransformer;
let FromOptionsTransformer = traceur.codegeneration.FromOptionsTransformer;
let TreeWriter = traceur.outputgeneration.TreeWriter;
let errorReporter = new ErrorReporter();
let sourceFile = new SourceFile(relPath, content);
let sourceMapGenerator = new traceur.outputgeneration.SourceMapGenerator({file: relPath});
let parser = new Parser(sourceFile, errorReporter, options);
let tree = parser.parseModule();
let moduleName = relPath.replace(/\.js$/, "");
let transformer = new AttachModuleNameTransformer(moduleName);
tree = transformer.transformAny(tree);
transformer = new FromOptionsTransformer(errorReporter, options);
tree = transformer.transform(tree);
let options2 = {sourceMapGenerator: sourceMapGenerator};
let compiledContent = TreeWriter.write(tree, options2);
let sourceMap = options2.generatedSourceMap;
if (errorReporter.errors.length > 0) {
errorReporter.errors.forEach( (error) => console.log(error));
}
return {
compiledContent: compiledContent,
sourceMap: "\n//@ sourceMappingURL=data:application/json;base64," + new Buffer(sourceMap).toString("base64")
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment