Created
May 9, 2016 19:10
-
-
Save jarek-foksa/886237aad306105ea13dcc4455e816ef to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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