24 lines
578 B
JavaScript
24 lines
578 B
JavaScript
import { parseSync as babelParse, tokTypes as tt, traverse } from "@babel/core";
|
|
import babylonToEspree from "./babylon-to-espree";
|
|
import { normalizeBabelParseConfig } from "./configuration";
|
|
|
|
export default function parse(code, options) {
|
|
const parseOptions = normalizeBabelParseConfig(options);
|
|
let ast;
|
|
|
|
try {
|
|
ast = babelParse(code, parseOptions);
|
|
} catch (err) {
|
|
if (err instanceof SyntaxError) {
|
|
err.lineNumber = err.loc.line;
|
|
err.column = err.loc.column;
|
|
}
|
|
|
|
throw err;
|
|
}
|
|
|
|
babylonToEspree(ast, traverse, tt, code);
|
|
|
|
return ast;
|
|
}
|