$ cnpm install estree-to-babel
Convert ESTree-compatible JavaScript AST to Babel AST.
To use parsers like:
With babel tools like:
@babel/traverse@babel/typesThe thing is @babel/parser has a little differences with estree standard:
Property of ObjectExpression and ObjectPattern called ObjectProperty;FunctionExpression of a Property located in ObjectMethod node;File node;StringLiteral, NumericLiteral, NullLiteral, RegExpLiteral, BooleanLiteral instead of Literal;ClassMethod instead of MethodDefinition;ClassPrivateMethod;ClassPrivateName stores name as Identifier in id field;ClassPrivateProperty instead of FieldDefinition;OptionalMemberExpression and OptionalCallExpression instead of ChainExpression;ImportDeclaration and ExportNamedDeclaration has attributes;JSXText has extra field;extra.parenthesized=true instead of ParenthesizedExpression;Also @babel/parser has differences with typescript-estree:
ClassPrivateProperty instead of PropertyDefinition when key.type=PrivateName;ClasseProperty instead of PropertyDefinition when key.type=Identifier;PrivateName instead of PrivateIdentifier;TSQualifiedName instead of MemberExpression in TSInterfaceHeritage;TSDeclaredMethod with abstract=true instead of TSAbstractMethodDefinition;extra.parenthesized=true instead of TSParenthesizedType;estree-to-babel aims to smooth this differences.
npm i estree-to-babel
import {parse} from 'cherow';
import {estreeToBabel} from 'estree-to-babel';
import {traverse} from '@babel/traverse';
const ast = estreeToBabel(parse(`
const f = ({a}) => a;
`));
traverse({
ObjectProperty(path) {
console.log(path.value.name);
// output
'a';
},
});
You can provide options:
import * as cherow from 'cherow';
import {estreeToBabel} from 'estree-to-babel';
import traverse from '@babel/traverse';
const options = {
convertParens: false,
};
const ast = estreeToBabel(cherow.parse(`
(a = b)
`), options);
traverse({
AssignmentExpression(path) {
console.log(path.parentPath.type);
// output
'ParenthesizedExpression';
},
});
MIT
Copyright 2013 - present © cnpmjs.org | Home |