UNPKG

510 BJavaScriptView Raw
1var esprima = require("esprima");
2var sourceMapToAst = require("sourcemap-to-ast");
3
4module.exports = getAst;
5
6/**
7 * Get the ast for a load or create one if it doesn't exist.
8 */
9function getAst(load, sourceMapFileName){
10 if(load.ast) {
11 return load.ast;
12 }
13
14 var fileName = sourceMapFileName || load.map && load.map.file;
15
16 load.ast = esprima.parse(load.source.toString(), {
17 loc: true,
18 source: fileName || load.address
19 });
20
21 if(load.map) {
22 sourceMapToAst(load.ast, load.map);
23 }
24
25 return load.ast;
26}