Détail du package

estree-to-babel

coderaiser5.2mMIT11.0.2

convert estree ast to babel

ast, convert, estree, babel

readme

Estree-to-babel NPM version Build Status Coverage Status

Convert ESTree-compatible JavaScript AST to Babel AST.

To use parsers like:

With babel tools like:

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;
  • etc...

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;
  • etc...

estree-to-babel aims to smooth this differences.

Install

npm i estree-to-babel

Example

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';
    },
});

License

MIT

changelog

2025.04.08, v11.0.2

fix:

  • 68a1461 estree-to-babel: export types (#18)

2025.03.31, v11.0.1

fix:

  • b4ce711 estree-to-babel: export

2025.03.31, v11.0.0

feature:

  • 6fb05cb estree-to-babel: migrate to ESM
  • 7e46880 estree-to-babel: drop support of node < 20
  • 47f733e estree-to-babel: supertape v11.0.4
  • 142ff4e estree-to-babel: putout v39.6.0
  • cad8c00 estree-to-babel: madrun v11.0.0
  • 622e49f estree-to-babel: eslint-plugin-putout v26.1.0
  • 85090d7 estree-to-babel: check-dts v0.9.0

2025.02.09, v10.5.0

feature:

  • f023116 estree-to-babel: add ability to disable convertParens

2025.02.09, v10.4.0

feature:

  • c0a538d estree-to-babel: eslint-plugin-putout v24.0.2
  • 196695d estree-to-babel: putout v38.0.10
  • 4caca6d estree-to-babel: TSParenthesizedType: add

2025.01.27, v10.3.0

feature:

  • 7bebab6 estree-to-babel: OptionalMemberExpression: improve

2025.01.21, v10.2.0

feature:

  • d7f348a estree-to-babel: ParenthesizedExpression

2025.01.12, v10.1.0

feature:

  • 006983f estree-to-babel: @putout/babel v3.0.0
  • ac3aaf2 estree-to-babel: putout v37.13.0

2024.11.06, v10.0.1

fix:

  • 3283df0 TypeScript exports (#16)

2024.10.26, v10.0.0

feature:

  • bca2f3b estree-to-babel: align with Babel v8
  • 8f79b86 estree-to-babel: @typescript-eslint/typescript-estree v8.11.0
  • 9cdd290 estree-to-babel: eslint-plugin-putout v23.1.0
  • 531eb70 estree-to-babel: meriyah v6.0.2

2024.07.27, v9.1.0

feature:

  • 0719881 estree-to-babel: add support of JSXText
  • 718c2c3 estree-to-babel: check-dts v0.8.0
  • 292119c estree-to-babel: eslint v9.8.0
  • a75bbcd estree-to-babel: meriyah v5.0.0
  • b089c37 estree-to-babel: putout v36.0.3
  • 4088742 estree-to-babel: c8 v10.1.2
  • a920a1a estree-to-babel: @typescript-eslint/typescript-estree v7.0.2
  • 71b70e0 estree-to-babel: putout v35.4.2
  • a1ee0a9 estree-to-babel: supertape v10.1.0
  • 2c8fb85 estree-to-babel: c8 v9.1.0
  • 06b65bc estree-to-babel: espree v10.0.1

2023.12.11, v9.0.0

feature:

  • c275cb3 do not convert ImportExpression since Babel 8 supports it (https://github.com/babel/babel/releases/tag/v8.0.0-alpha.5)
  • fb2d4f5 estree-to-babel: madrun v10.0.0
  • 91834e6 estree-to-babel: eslint-plugin-putout v22.0.0
  • 7b3f321 estree-to-babel: @putout/babel v2.0.0
  • 945de59 estree-to-babel: putout v34.0.6
  • 195dafb estree-to-babel: supertape v9.0.0
  • 5aeba80 drop support of node < 18

2023.10.19, v8.1.1

fix:

  • 41ec8c3 types: drop comment

2023.10.19, v8.1.0

feature:

  • 589b9b6 types: add

2023.10.04, v8.0.0

feature:

  • 344da7c package: eslint-plugin-putout v20.0.0
  • e850ce6 package: putout v32.2.0
  • 2494615 estree-to-babel: assertions -> attributes

2023.09.13, v7.0.0

feature:

  • 6401ca6 set-directives
  • 75a7650 package: @typescript-eslint/typescript-estree v6.7.0
  • 67c5c4d estree-to-babel: drop support of Babel < 8
  • 1a13346 package: eslint-plugin-putout v19.6.0
  • 8ae6b3f package: putout v31.8.5
  • 79fe1aa package: nodemon v3.0.1
  • 2cffcc3 package: estree-util-attach-comments v3.0.0
  • 4a63c63 use babel 8

2023.07.08, v6.0.0

feature:

  • 70fb8bf package: eslint-plugin-putout v18.0.0
  • 4d8a63b package: c8 v8.0.0
  • eac7b86 package: putout v30.2.0

2023.06.20, v5.2.0

fix:

  • 4761331 missing loc (#14)

feature:

  • 04f7587 convert-import-to-call: add loc

2023.06.19, v5.1.0

fix:

  • 2416323 only convert object methods instead of all function expressions (#13)
  • a1858c4 rename stype to type (#11)

feature:

  • 95c2fb1 estree-to-babel: Import instead of Identifier in CallExpression used instead of ImportExpression
  • 53d28c7 package: @typescript-eslint/typescript-estree v5.59.11
  • b92be36 package: typescript v5.1.3
  • 1a7ace0 package: eslint-plugin-n v16.0.0
  • 7641e41 package: putout v29.15.0
  • a65526b package: eslint-plugin-putout v17.7.0

2022.09.08, v5.0.1

feature:

  • (package) eslint-plugin-putout v16.2.1
  • (package) putout v27.7.0
  • (package) supertape v8.0.1

2022.02.25, v5.0.0

feature:

  • (estree-to-babel) drop support of node < 16
  • (package) eslint-plugin-putout v14.0.0
  • (package) putout v25.0.4
  • (package) supertape v7.1.0
  • (package) madrun v9.0.0

2022.01.24, v4.9.0

feature:

  • (estree-to-babel) add support of assertions in ExportNamedDeclaration
  • (package) putout v24.2.2
  • (package) eslint-plugin-putout v13.6.0

2021.11.27, v4.8.0

feature:

  • (estree-to-babel) add support of TSAbstractMethodDefinition

2021.11.26, v4.7.0

feature:

  • (estree-to-babel) add support of TSInterfaceHeritage

2021.11.26, v4.6.0

feature:

  • (estree-to-babel) improve support of PrivateIdentifier

2021.11.26, v4.5.0

feature:

  • (estree-to-babel) add support of PropertyDefinition (/typescript-eslint/typescript-eslint#4222)

2021.11.22, v4.4.0

feature:

  • (estree-to-babel) add support of TSClassImplements (coderaiser/putout#90)
  • (package) putout v22.1.1
  • (package) eslint-plugin-putout v11.11.0

2021.10.01, v4.3.0

feature:

  • (package) espree v9.0.0
  • (package) eslint-plugin-putout v10.3.0
  • (package) putout v20.6.0
  • (estree-to-babel) add support of assertions in ImportDeclaration
  • (package) supertape v6.0.5
  • (package) eslint v8.0.0-beta.1
  • (package) eslint-plugin-putout v9.3.0
  • (package) putout v19.7.1

2021.07.27, v4.2.0

feature:

2021.07.17, v4.1.1

fix:

  • (estree-to-babel) wrong convertion BigIntLiteral to StringLiteral

2021.07.16, v4.1.0

feature:

  • (estree-to-babel) add support of ImportExpression

2021.07.14, v4.0.2

fix:

  • (estree-to-babel) add extra to literals (coderaiser/putout#67)

feature:

  • (package) espree v8.0.0

2021.06.01, v4.0.1

fix:

  • (package) move c8 from dependencies to devDependencies (#9)

feature:

  • (package) putout v18.0.0
  • (package) eslint-plugin-putout v8.0.1

2021.04.04, v4.0.0 feature:

  • (package) putout v16.1.1
  • (package) estree-util-attach-comments v2.0.0
  • (estree-to-babel) drop support of node < 14
  • (estree-to-babel) add support of estree AST Literal raw field

2021.03.01, v3.2.1

fix:

  • fix(estree-to-babel) comments: simplify

2021.03.01, v3.2.0

feature:

  • feature(estree-to-babel) rm useless classPrivateMethod, which is not part of estree
  • feature(package) putout v15.4.3
  • feature(package) supertape v5.0.0

2021.01.28, v3.1.1

fix:

  • (estree-to-babel) translation to RegExpLiteral (#5)

feature:

  • (package) supertape v4.8.1
  • (package) eslint-plugin-putout v7.0.0
  • (package) putout v14.0.1

2020.12.23, v3.1.0

feature:

  • (estree-to-babel) add support for attached comments (#4)
  • (package) putout v12.5.1

2020.12.17, v3.0.1

fix:

  • (estree-to-babel) Literals
  • test(estree-to-babel) update fixtures

feature:

  • (package) eslint-plugin-putout v6.8.1
  • (package) putout v11.14.0
  • (package) madrun v8.0.1
  • (package) supertape v3.5.0
  • (package) putout v10.0.3
  • (package) acorn-stage3 v4.0.0
  • (package) acorn v8.0.1
  • (package) eslint-plugin-putout v5.0.1
  • (package) acorn-stage3 v3.0.0
  • (package) supertape v2.0.1
  • (package) putout v9.11.3
  • (package) madrun v7.0.2
  • (package) espree v7.2.0
  • (package) eslint v7.6.0

2020.03.30, v3.0.0

fix:

  • chore(estre-to-babel) update fixtures

feature:

  • (estree-to-babel) avoid directives overwrite
  • (package) putout v7.10.1
  • (package) madrun v5.4.1
  • (package) eslint-plugin-putout v3.2.1
  • (package) eslint-plugin-node v11.0.0
  • (package) nodemon v2.0.2
  • (package) nyc v15.0.0
  • (package) madrun v3.0.6
  • (package) putout v6.15.1
  • (package) eslint-plugin-node v10.0.0

2019.08.20, v2.1.0

feature:

  • (package) eslint-plugin-putout v2.0.0
  • (package) putout v5.7.1
  • (estree-to-babel) add support of acorns FieldDefinition, ClassPrivateName

2019.07.27, v2.0.5

fix:

  • (estree-to-babel) directives

2019.07.26, v2.0.4

fix:

  • (estree-to-babel) lint

2019.07.26, v2.0.3

feature:

  • (ast) add support of interpreter

2019.07.26, v2.0.2

fix:

  • (estree-to-babel) directives an array

2019.07.26, v2.0.1

fix:

  • (estree-to-babel) always remove first expression

2019.07.26, v2.0.0

feature:

  • (estree-to-babel) add support of strict mode directive

2019.07.18, v1.8.2

fix:

feature:

  • (package) eslint v6.0.1
  • (package) eslint-plugin-node v9.1.0
  • (package) espree v6.0.0
  • (package) nyc v14.1.1

2019.03.19, v1.8.1

fix:

  • (estree-to-babel) ObjectMethod
  • test(class-method-babel) fixture

feature:

  • (package) madrun v2.0.1
  • (package) putout v4.0.1

2019.02.13, v1.8.0

feature:

  • (estree-to-babel) add support of ClassPrivateMethod

2019.01.28, v1.7.0

feature:

  • (estree-to-babel) add support of BooleanLiteral, RegExpLiteral

2019.01.23, v1.6.0

feature:

  • (estree-to-babel) add support of babel estree

2019.01.16, v1.5.0

feature:

  • (estree-to-babel) add tokens support

2019.01.15, v1.4.2

fix:

  • (estree-to-babel) ClassMethod: loc

feature:

  • (package) tape -> supertape

2019.01.11, v1.4.1

fix:

  • (estree-to-babel) Literal in ObjectMmethod

2019.01.10, v1.4.0

feature:

  • (estree-to-babel) add support of NullLiteral

2019.01.10, v1.3.0

feature:

  • (package) add putout
  • (estree-to-babel) add support of ClassMethod

2019.01.08, v1.2.0

feature:

  • (estree-to-babel) add comments support

2019.01.05, v1.1.0

feature:

  • (estree-to-babel) add support of StringLiteral, NumericLiteral

2018.12.29, v1.0.1

fix:

  • (bin) rm