Convert ESTree
-compatible JavaScript AST
to Babel AST
.
To use parsers like:
With babel
tools like:
@babel/traverse
@babel/types
The 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.
const cherow = require('cherow'); const toBabel = require('estree-to-babel'); const traverse = require('@babel/traverse').default; const ast = toBabel(cherow.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
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4