UNPKG

869 BJavaScriptView Raw
1const Program = require('./js-elements/Program')
2const SourceBuffer = require('./SourceBuffer')
3const ASTTransformer = require('./ASTTransformer')
4
5class JSTranspiler {
6 constructor (opts = {}) {
7 this.filename = opts.filename
8 this.featureConf = opts.features
9 }
10
11 transpile (ast) {
12 try {
13 const astTransformer = new ASTTransformer(this.featureConf)
14 astTransformer.load('js-transformations')
15
16 const tast = astTransformer.transform(ast)
17 const jse = new Program(tast, this.featureConf)
18
19 const buffer = new SourceBuffer()
20 jse.compile(buffer)
21 buffer.createLocationMap()
22
23 const source = buffer.toString()
24 return source.replace(/\s*$/, '\n')
25 } catch (err) {
26 if (this.filename) {
27 err.message += ` in file ${this.filename}`
28 }
29
30 throw err
31 }
32 }
33}
34
35module.exports = JSTranspiler