Rename "babylon" to "@babel/parser" (#7937) 🎉

This commit is contained in:
Chaitanya Kumar Kamatham 2018-05-18 21:03:05 -07:00 committed by Henry Zhu
parent 0200a3e510
commit daf0ca8680
7587 changed files with 146 additions and 129 deletions

View File

@ -22,4 +22,4 @@ packages/babel-preset-env-standalone/babel-preset-env.js
packages/babel-preset-env-standalone/babel-preset-env.min.js packages/babel-preset-env-standalone/babel-preset-env.min.js
packages/babel-standalone/babel.js packages/babel-standalone/babel.js
packages/babel-standalone/babel.min.js packages/babel-standalone/babel.min.js
packages/babylon/test/expressions packages/babel-parser/test/expressions

2
.gitignore vendored
View File

@ -42,6 +42,6 @@ packages/babel-preset-env-standalone/babel-preset-env.js
packages/babel-preset-env-standalone/babel-preset-env.min.js packages/babel-preset-env-standalone/babel-preset-env.min.js
/codemods/*/lib /codemods/*/lib
/codemods/*/node_modules /codemods/*/node_modules
/packages/babylon/build /packages/babel-parser/build
.idea/ .idea/
/.changelog /.changelog

View File

@ -22,14 +22,14 @@ before_install:
install: yarn --ignore-engines install: yarn --ignore-engines
before_script: before_script:
- 'if [ "$JOB" = "babylon-flow-tests" ]; then make bootstrap-flow; fi' - 'if [ "$JOB" = "babel-parser-flow-tests" ]; then make bootstrap-flow; fi'
- 'if [ "$JOB" = "babylon-test262-tests" ]; then make bootstrap-test262; fi' - 'if [ "$JOB" = "babel-parser-test262-tests" ]; then make bootstrap-test262; fi'
script: script:
- 'if [ "$JOB" = "test" ]; then make test-ci; fi' - 'if [ "$JOB" = "test" ]; then make test-ci; fi'
- 'if [ "$JOB" = "lint" ]; then make lint && make flow; fi' - 'if [ "$JOB" = "lint" ]; then make lint && make flow; fi'
- 'if [ "$JOB" = "babylon-flow-tests" ]; then make test-flow-ci; fi' - 'if [ "$JOB" = "babel-parser-flow-tests" ]; then make test-flow-ci; fi'
- 'if [ "$JOB" = "babylon-test262-tests" ]; then make test-test262-ci; fi' - 'if [ "$JOB" = "babel-parser-test262-tests" ]; then make test-test262-ci; fi'
matrix: matrix:
fast_finish: true fast_finish: true
@ -37,9 +37,9 @@ matrix:
- node_js: "node" - node_js: "node"
env: JOB=lint env: JOB=lint
- node_js: "node" - node_js: "node"
env: JOB=babylon-flow-tests env: JOB=babel-parser-flow-tests
- node_js: "node" - node_js: "node"
env: JOB=babylon-test262-tests env: JOB=babel-parser-test262-tests
notifications: notifications:
slack: slack:

View File

@ -24,7 +24,7 @@ contributing, please read the
## Not sure where to start? ## Not sure where to start?
- If you aren't just making a documentation change, you'll probably want to learn a bit about a few topics. - If you aren't just making a documentation change, you'll probably want to learn a bit about a few topics.
- [ASTs](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (Abstract Syntax Tree): The Babel AST [spec](https://github.com/babel/babel/blob/master/packages/babylon/ast/spec.md) is a bit different from [ESTree](https://github.com/estree/estree). The differences are listed [here](https://github.com/babel/babel/tree/master/packages/babylon#output). - [ASTs](https://en.wikipedia.org/wiki/Abstract_syntax_tree) (Abstract Syntax Tree): The Babel AST [spec](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md) is a bit different from [ESTree](https://github.com/estree/estree). The differences are listed [here](https://github.com/babel/babel/tree/master/packages/babel-parser#output).
- Check out [`/doc`](https://github.com/babel/babel/tree/master/doc) for information about Babel's internals - Check out [`/doc`](https://github.com/babel/babel/tree/master/doc) for information about Babel's internals
- Check out [the Babel Plugin Handbook](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md#babel-plugin-handbook) - core plugins are written the same way as any other plugin! - Check out [the Babel Plugin Handbook](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md#babel-plugin-handbook) - core plugins are written the same way as any other plugin!
- Check out [AST Explorer](http://astexplorer.net/#/scUfOmVOG5) to learn more about ASTs or make your own plugin in the browser - Check out [AST Explorer](http://astexplorer.net/#/scUfOmVOG5) to learn more about ASTs or make your own plugin in the browser
@ -226,19 +226,19 @@ If the test requires a minimum Node version, you can add `minNodeVersion` (must
} }
``` ```
#### `babylon` #### `@babel/parser`
Writing tests for Babylon is very Writing tests for the babel parser is very
similar to the other packages. similar to the other packages.
Inside the `packages/babylon/tests/fixtures` folder are categories/groupings of test fixtures (es2015, flow, Inside the `packages/babel-parser/tests/fixtures` folder are categories/groupings of test fixtures (es2015, flow,
etc.). To add a test, create a folder under one of these groupings (or create a new one) with a etc.). To add a test, create a folder under one of these groupings (or create a new one) with a
descriptive name, and add the following: descriptive name, and add the following:
* Create an `input.js` file that contains the code you want Babylon to parse. * Create an `input.js` file that contains the code you want the babel parser to parse.
* Add an `output.json` file with the expected parser output. For added convenience, if there is no `output.json` present, the test runner will generate one for you. * Add an `output.json` file with the expected parser output. For added convenience, if there is no `output.json` present, the test runner will generate one for you.
After writing tests for babylon, just build it by running: After writing tests for @babel/parser, just build it by running:
```sh ```sh
$ make build $ make build
@ -247,17 +247,17 @@ $ make build
Then, to run the tests, use: Then, to run the tests, use:
```sh ```sh
$ TEST_ONLY=babylon make test-only $ TEST_ONLY=babel-parser make test-only
``` ```
#### Bootstrapping expected output #### Bootstrapping expected output
For both `@babel/plugin-x` and `babylon`, you can easily generate an `output.js`/`output.json` automatically by just providing `input.js` and running the tests as you usually would. For both `@babel/plugin-x` and `@babel/parser`, you can easily generate an `output.js`/`output.json` automatically by just providing `input.js` and running the tests as you usually would.
``` ```
// Example // Example
- packages - packages
- babylon - babel-parser
- test - test
- fixtures - fixtures
- comments - comments
@ -309,14 +309,14 @@ Note that the code shown in Chrome DevTools is compiled code and therefore diffe
- Create a new issue that describes the proposal (ex: [#538](https://github.com/babel/babylon/issues/538)). Include any relevant information like proposal repo/author, examples, parsing approaches, meeting notes, presentation slides, and more. - Create a new issue that describes the proposal (ex: [#538](https://github.com/babel/babylon/issues/538)). Include any relevant information like proposal repo/author, examples, parsing approaches, meeting notes, presentation slides, and more.
- The pull request should include: - The pull request should include:
- [ ] An update to the [plugins](https://github.com/babel/babel/tree/master/packages/babylon#plugins) part of the readme. Add a new entry to that list for the new plugin flag (and link to the proposal) - [ ] An update to the [plugins](https://github.com/babel/babel/tree/master/packages/babel-parser#plugins) part of the readme. Add a new entry to that list for the new plugin flag (and link to the proposal)
- [ ] If any new nodes or modifications need to be added to the AST, update [ast/spec.md](https://github.com/babel/babel/bloc/master/packages/babylon/ast/spec.md) - [ ] If any new nodes or modifications need to be added to the AST, update [ast/spec.md](https://github.com/babel/babel/bloc/master/packages/babel-parser/ast/spec.md)
- [ ] Make sure you use the `this.hasPlugin("plugin-name-here")` check in Babylon so that your new plugin code only runs when that flag is turned on (not default behavior) - [ ] Make sure you use the `this.hasPlugin("plugin-name-here")` check in the babel parser so that your new plugin code only runs when that flag is turned on (not default behavior)
- [ ] Add failing/passing tests according to spec behavior - [ ] Add failing/passing tests according to spec behavior
- Start working about the Babel transform itself! - Start working about the Babel transform itself!
## Internals ## Internals
- AST spec ([babylon/ast/spec.md](https://github.com/babel/babel/blob/master/packages/babylon/ast/spec.md)) - AST spec ([babel-parser/ast/spec.md](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md))
- Versioning ([doc/design/versioning.md](https://github.com/babel/babel/blob/master/doc/design/versioning.md)) - Versioning ([doc/design/versioning.md](https://github.com/babel/babel/blob/master/doc/design/versioning.md))
- Monorepo ([doc/design/monorepo.md](https://github.com/babel/babel/blob/master/doc/design/monorepo.md)) - Monorepo ([doc/design/monorepo.md](https://github.com/babel/babel/blob/master/doc/design/monorepo.md))
- Compiler environment support ([doc/design/compiler-environment-support.md](https://github.com/babel/babel/blob/master/doc/design/compiler-environment-support.md)) - Compiler environment support ([doc/design/compiler-environment-support.md](https://github.com/babel/babel/blob/master/doc/design/compiler-environment-support.md))

View File

@ -98,7 +98,7 @@ function buildRollup(packages) {
format: "cjs", format: "cjs",
plugins: [ plugins: [
rollupBabel({ rollupBabel({
envName: "babylon", envName: "babel-parser",
}), }),
rollupNodeResolve(), rollupNodeResolve(),
], ],
@ -113,7 +113,7 @@ function buildRollup(packages) {
} }
gulp.task("build", function() { gulp.task("build", function() {
const bundles = ["packages/babylon"]; const bundles = ["packages/babel-parser"];
return merge([buildBabel(/* exclude */ bundles), buildRollup(bundles)]); return merge([buildBabel(/* exclude */ bundles), buildRollup(bundles)]);
}); });

View File

@ -87,12 +87,12 @@ bootstrap-flow:
cd build/flow && git checkout $(FLOW_COMMIT) cd build/flow && git checkout $(FLOW_COMMIT)
test-flow: test-flow:
node scripts/tests/flow/run_babylon_flow_tests.js node scripts/tests/flow/run_babel_parser_flow_tests.js
test-flow-ci: bootstrap test-flow test-flow-ci: bootstrap test-flow
test-flow-update-whitelist: test-flow-update-whitelist:
node scripts/tests/flow/run_babylon_flow_tests.js --update-whitelist node scripts/tests/flow/run_babel_parser_flow_tests.js --update-whitelist
bootstrap-test262: bootstrap-test262:
rm -rf ./build/test262 rm -rf ./build/test262
@ -101,12 +101,12 @@ bootstrap-test262:
cd build/test262 && git checkout $(TEST262_COMMIT) cd build/test262 && git checkout $(TEST262_COMMIT)
test-test262: test-test262:
node scripts/tests/test262/run_babylon_test262.js node scripts/tests/test262/run_babel_parser_test262.js
test-test262-ci: bootstrap test-test262 test-test262-ci: bootstrap test-test262
test-test262-update-whitelist: test-test262-update-whitelist:
node scripts/tests/test262/run_babylon_test262.js --update-whitelist node scripts/tests/test262/run_babel_parser_test262.js --update-whitelist
publish: publish:
git pull --rebase git pull --rebase

View File

@ -16,7 +16,7 @@ module.exports = function(api) {
switch (env) { switch (env) {
// Configs used during bundling builds. // Configs used during bundling builds.
case "babylon": case "babel-parser":
case "standalone": case "standalone":
convertESM = false; convertESM = false;
ignoreLib = false; ignoreLib = false;
@ -69,7 +69,7 @@ module.exports = function(api) {
].filter(Boolean), ].filter(Boolean),
overrides: [ overrides: [
{ {
test: "packages/babylon", test: "packages/babel-parser",
plugins: [ plugins: [
"babel-plugin-transform-charcodes", "babel-plugin-transform-charcodes",
["@babel/transform-for-of", { assumeArray: true }], ["@babel/transform-for-of", { assumeArray: true }],

View File

@ -1 +1 @@
The [AST specification](https://github.com/babel/babel/blob/master/packages/babylon/ast/spec.md) has been moved to the Babylon package, `packages/babylon`. The [AST specification](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md) has been moved to the babel parser package, `packages/babel-parser`.

View File

@ -89,7 +89,7 @@
"/node_modules/", "/node_modules/",
"/test/fixtures/", "/test/fixtures/",
"/test/debug-fixtures/", "/test/debug-fixtures/",
"/babylon/test/expressions/", "/babel-parser/test/expressions/",
"/test/tmp/", "/test/tmp/",
"/test/__data__/", "/test/__data__/",
"/test/helpers/", "/test/helpers/",

View File

@ -14,21 +14,21 @@ A monorepo, muhahahahahaha. See the [monorepo design doc](/doc/design/monorepo.m
| Package | Version | Dependencies | | Package | Version | Dependencies |
|--------|-------|------------| |--------|-------|------------|
| [`@babel/core`](/packages/babel-core) | [![npm](https://img.shields.io/npm/v/@babel/core.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/core) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-core)](https://david-dm.org/babel/babel?path=packages/babel-core) | | [`@babel/core`](/packages/babel-core) | [![npm](https://img.shields.io/npm/v/@babel/core.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/core) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-core)](https://david-dm.org/babel/babel?path=packages/babel-core) |
| [`babylon`](/packages/babylon) | [![npm](https://img.shields.io/npm/v/babylon.svg?maxAge=2592000)](https://www.npmjs.com/package/babylon) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babylon)](https://david-dm.org/babel/babel?path=packages/babylon) | | [`@babel/parser`](/packages/@babel/parser) | [![npm](https://img.shields.io/npm/v/@babel/parser.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/parser) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-parser)](https://david-dm.org/babel/babel?path=packages/babel-parser) |
| [`@babel/traverse`](/packages/babel-traverse) | [![npm](https://img.shields.io/npm/v/@babel/traverse.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/traverse) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-traverse)](https://david-dm.org/babel/babel?path=packages/babel-traverse) | | [`@babel/traverse`](/packages/babel-traverse) | [![npm](https://img.shields.io/npm/v/@babel/traverse.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/traverse) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-traverse)](https://david-dm.org/babel/babel?path=packages/babel-traverse) |
| [`@babel/generator`](/packages/babel-generator) | [![npm](https://img.shields.io/npm/v/@babel/generator.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/generator) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-generator)](https://david-dm.org/babel/babel?path=packages/babel-generator) | | [`@babel/generator`](/packages/babel-generator) | [![npm](https://img.shields.io/npm/v/@babel/generator.svg?maxAge=2592000)](https://www.npmjs.com/package/@babel/generator) | [![Dependency Status](https://david-dm.org/babel/babel.svg?path=packages/babel-generator)](https://david-dm.org/babel/babel?path=packages/babel-generator) |
[`@babel/core`](/packages/babel-core) is the Babel compiler itself; it exposes the `babel.transform` method, where `transformedCode = transform(src).code`. [`@babel/core`](/packages/babel-core) is the Babel compiler itself; it exposes the `babel.transform` method, where `transformedCode = transform(src).code`.
The compiler can be broken down into 3 parts: The compiler can be broken down into 3 parts:
- The parser: [`babylon`](/packages/babylon) - The parser: [`@babel/parser`](/packages/babel-parser)
- The transformer[s]: All the plugins/presets - The transformer[s]: All the plugins/presets
- These all use [`@babel/traverse`](/packages/babel-traverse) to traverse through the AST - These all use [`@babel/traverse`](/packages/babel-traverse) to traverse through the AST
- The generator: [`@babel/generator`](/packages/babel-generator) - The generator: [`@babel/generator`](/packages/babel-generator)
The flow goes like this: The flow goes like this:
input string -> `babylon` parser -> `AST` -> transformer[s] -> `AST` -> `@babel/generator` -> output string input string -> `@babel/parser` parser -> `AST` -> transformer[s] -> `AST` -> `@babel/generator` -> output string
Check out the [`babel-handbook`](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md#introduction) for more information on this. Check out the [`babel-handbook`](https://github.com/thejameskyle/babel-handbook/blob/master/translations/en/plugin-handbook.md#introduction) for more information on this.

View File

@ -99,7 +99,7 @@ Given an [AST](https://astexplorer.net/), transform it.
```js ```js
const sourceCode = "if (true) return;"; const sourceCode = "if (true) return;";
const parsedAst = babylon.parse(sourceCode, { allowReturnOutsideFunction: true }); const parsedAst = babel.parse(sourceCode, { allowReturnOutsideFunction: true });
babel.transformFromAst(parsedAst, sourceCode, options, function(err, result) { babel.transformFromAst(parsedAst, sourceCode, options, function(err, result) {
const { code, map, ast } = result; const { code, map, ast } = result;
}); });
@ -119,7 +119,7 @@ Given an [AST](https://astexplorer.net/), transform it.
```js ```js
const sourceCode = "if (true) return;"; const sourceCode = "if (true) return;";
const parsedAst = babylon.parse(sourceCode, { allowReturnOutsideFunction: true }); const parsedAst = babel.parse(sourceCode, { allowReturnOutsideFunction: true });
const { code, map, ast } = babel.transformFromAstSync(parsedAst, sourceCode, options); const { code, map, ast } = babel.transformFromAstSync(parsedAst, sourceCode, options);
``` ```
@ -238,7 +238,7 @@ Following is a table of the options you can use:
| `moduleIds` | `false` | If truthy, insert an explicit id for modules. By default, all modules are anonymous. (Not available for `common` modules) | | `moduleIds` | `false` | If truthy, insert an explicit id for modules. By default, all modules are anonymous. (Not available for `common` modules) |
| `moduleRoot` | `(sourceRoot)` | Optional prefix for the AMD module formatter that will be prepend to the filename on module definitions | | `moduleRoot` | `(sourceRoot)` | Optional prefix for the AMD module formatter that will be prepend to the filename on module definitions |
| `only` | `null` | A [glob](https://github.com/isaacs/minimatch), regex, or mixed array of both, matching paths to **only** compile. Can also be an array of arrays containing paths to explicitly match. When attempting to compile a non-matching file it's returned verbatim | | `only` | `null` | A [glob](https://github.com/isaacs/minimatch), regex, or mixed array of both, matching paths to **only** compile. Can also be an array of arrays containing paths to explicitly match. When attempting to compile a non-matching file it's returned verbatim |
| `parserOpts` | `{}` | An object containing the options to be passed down to the babel parser, babylon | | `parserOpts` | `{}` | An object containing the options to be passed down to the babel parser, @babel/parser |
| `plugins` | `[]` | List of [plugins](https://babeljs.io/docs/plugins/) to load and use | | `plugins` | `[]` | List of [plugins](https://babeljs.io/docs/plugins/) to load and use |
| `presets` | `[]` | List of [presets](https://babeljs.io/docs/plugins/#presets) (a set of plugins) to load and use | | `presets` | `[]` | List of [presets](https://babeljs.io/docs/plugins/#presets) (a set of plugins) to load and use |
| `retainLines` | `false` | Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps. (**NOTE:** This will not retain the columns) | | `retainLines` | `false` | Retain line numbers. This will lead to wacky code but is handy for scenarios where you can't use source maps. (**NOTE:** This will not retain the columns) |

View File

@ -37,7 +37,7 @@
"@babel/template": "7.0.0-beta.47", "@babel/template": "7.0.0-beta.47",
"@babel/traverse": "7.0.0-beta.47", "@babel/traverse": "7.0.0-beta.47",
"@babel/types": "7.0.0-beta.47", "@babel/types": "7.0.0-beta.47",
"babylon": "7.0.0-beta.47", "@babel/parser": "7.0.0-beta.47",
"convert-source-map": "^1.1.0", "convert-source-map": "^1.1.0",
"debug": "^3.1.0", "debug": "^3.1.0",
"json5": "^0.5.0", "json5": "^0.5.0",

View File

@ -3,7 +3,7 @@
import * as t from "@babel/types"; import * as t from "@babel/types";
import type { PluginPasses } from "../config"; import type { PluginPasses } from "../config";
import convertSourceMap, { typeof Converter } from "convert-source-map"; import convertSourceMap, { typeof Converter } from "convert-source-map";
import { parse } from "babylon"; import { parse } from "@babel/parser";
import { codeFrameColumns } from "@babel/code-frame"; import { codeFrameColumns } from "@babel/code-frame";
import File from "./file/file"; import File from "./file/file";
import generateMissingPluginMessage from "./util/missing-plugin-helper"; import generateMissingPluginMessage from "./util/missing-plugin-helper";

View File

@ -209,7 +209,7 @@ const getNameURLCombination = ({ name, url }) => `${name} (${url})`;
/* /*
Returns a string of the format: Returns a string of the format:
Support for the experimental syntax [babylon plugin name] isn't currently enabled ([loc]): Support for the experimental syntax [@babel/parser plugin name] isn't currently enabled ([loc]):
[code frame] [code frame]

View File

@ -1,5 +1,5 @@
import traverse from "@babel/traverse"; import traverse from "@babel/traverse";
import { parse } from "babylon"; import { parse } from "@babel/parser";
describe("evaluation", function() { describe("evaluation", function() {
function addTest(code, type, value, notConfident) { function addTest(code, type, value, notConfident) {

View File

@ -1,6 +1,6 @@
# @babel/generator # @babel/generator
> Turns a [Babylon AST](https://github.com/babel/babel/blob/master/packages/babylon/ast/spec.md) into code. > Turns a [The Babel Parser AST](https://github.com/babel/babel/blob/master/packages/babel-parser/ast/spec.md) into code.
## Install ## Install

View File

@ -19,6 +19,6 @@
}, },
"devDependencies": { "devDependencies": {
"@babel/helper-fixtures": "7.0.0-beta.47", "@babel/helper-fixtures": "7.0.0-beta.47",
"babylon": "7.0.0-beta.47" "@babel/parser": "7.0.0-beta.47"
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
Copies tests from babylon's TypeScript test suite to @babel/generator. Copies tests from the @babel/parser's TypeScript test suite to @babel/generator.
*/ */
const { const {
copySync, copySync,
@ -10,7 +10,10 @@ const {
} = require("fs-extra"); } = require("fs-extra");
const { join } = require("path"); const { join } = require("path");
const testsFrom = join(__dirname, "../../babylon/test/fixtures/typescript"); const testsFrom = join(
__dirname,
"../../babel-parser/test/fixtures/typescript"
);
const testsTo = join(__dirname, "../test/fixtures/typescript"); const testsTo = join(__dirname, "../test/fixtures/typescript");
emptyDirSync(testsTo); emptyDirSync(testsTo);

View File

@ -1,6 +1,6 @@
import Printer from "../lib/printer"; import Printer from "../lib/printer";
import generate, { CodeGenerator } from "../lib"; import generate, { CodeGenerator } from "../lib";
import { parse } from "babylon"; import { parse } from "@babel/parser";
import * as t from "@babel/types"; import * as t from "@babel/types";
import fs from "fs"; import fs from "fs";
import path from "path"; import path from "path";

View File

@ -9,7 +9,7 @@
> - :house: [Internal] > - :house: [Internal]
> - :nail_care: [Polish] > - :nail_care: [Polish]
> Semver Policy: https://github.com/babel/babylon#semver > Semver Policy: https://github.com/babel/babel/tree/master/packages/babel-parser#semver
_Note: Gaps between patch versions are faulty, broken or test releases._ _Note: Gaps between patch versions are faulty, broken or test releases._

View File

@ -1,9 +1,9 @@
<p align="center"> <p align="center">
<img alt="babylon" src="https://raw.githubusercontent.com/babel/logo/master/babylon.png" width="700"> <img alt="@babel/parser" src="https://raw.githubusercontent.com/babel/logo/master/babylon.png" width="700">
</p> </p>
<p align="center"> <p align="center">
Babylon is a JavaScript parser used in <a href="https://github.com/babel/babel">Babel</a>. The Babel parser (previously Babylon) is a JavaScript parser used in <a href="https://github.com/babel/babel">Babel</a>.
</p> </p>
- The latest ECMAScript version enabled by default (ES2017). - The latest ECMAScript version enabled by default (ES2017).
@ -18,9 +18,9 @@ thanks to the awesome work of [@RReverser](https://github.com/RReverser) and [@m
## API ## API
### `babylon.parse(code, [options])` ### `babelParser.parse(code, [options])`
### `babylon.parseExpression(code, [options])` ### `babelParser.parseExpression(code, [options])`
`parse()` parses the provided `code` as an entire ECMAScript program, while `parse()` parses the provided `code` as an entire ECMAScript program, while
`parseExpression()` tries to parse a single Expression with performance in `parseExpression()` tries to parse a single Expression with performance in
@ -43,7 +43,7 @@ mind. When in doubt, use `.parse()`.
- **allowSuperOutsideMethod**: TODO - **allowSuperOutsideMethod**: TODO
- **sourceType**: Indicate the mode the code should be parsed in. Can be - **sourceType**: Indicate the mode the code should be parsed in. Can be
one of `"script"`, `"module"`, or `"unambiguous"`. Defaults to `"script"`. `"unambiguous"` will make Babylon attempt to _guess_, based on the presence of ES6 `import` or `export` statements. Files with ES6 `import`s and `export`s are considered `"module"` and are otherwise `"script"`. one of `"script"`, `"module"`, or `"unambiguous"`. Defaults to `"script"`. `"unambiguous"` will make @babel/parser attempt to _guess_, based on the presence of ES6 `import` or `export` statements. Files with ES6 `import`s and `export`s are considered `"module"` and are otherwise `"script"`.
- **sourceFilename**: Correlate output AST nodes with their source filename. Useful when generating code and source maps from the ASTs of multiple input files. - **sourceFilename**: Correlate output AST nodes with their source filename. Useful when generating code and source maps from the ASTs of multiple input files.
@ -59,7 +59,7 @@ mind. When in doubt, use `.parse()`.
### Output ### Output
Babylon generates AST according to [Babel AST format][]. The Babel parser generates AST according to [Babel AST format][].
It is based on [ESTree spec][] with the following deviations: It is based on [ESTree spec][] with the following deviations:
> There is now an `estree` plugin which reverts these deviations > There is now an `estree` plugin which reverts these deviations
@ -72,39 +72,39 @@ It is based on [ESTree spec][] with the following deviations:
AST for JSX code is based on [Facebook JSX AST][]. AST for JSX code is based on [Facebook JSX AST][].
[Babel AST format]: https://github.com/babel/babylon/blob/master/ast/spec.md [Babel AST format]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md
[ESTree spec]: https://github.com/estree/estree [ESTree spec]: https://github.com/estree/estree
[Literal]: https://github.com/estree/estree/blob/master/es5.md#literal [Literal]: https://github.com/estree/estree/blob/master/es5.md#literal
[Property]: https://github.com/estree/estree/blob/master/es5.md#property [Property]: https://github.com/estree/estree/blob/master/es5.md#property
[MethodDefinition]: https://github.com/estree/estree/blob/master/es2015.md#methoddefinition [MethodDefinition]: https://github.com/estree/estree/blob/master/es2015.md#methoddefinition
[StringLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#stringliteral [StringLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#stringliteral
[NumericLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#numericliteral [NumericLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#numericliteral
[BooleanLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#booleanliteral [BooleanLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#booleanliteral
[NullLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#nullliteral [NullLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#nullliteral
[RegExpLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#regexpliteral [RegExpLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#regexpliteral
[ObjectProperty]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#objectproperty [ObjectProperty]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#objectproperty
[ObjectMethod]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#objectmethod [ObjectMethod]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#objectmethod
[ClassMethod]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#classmethod [ClassMethod]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#classmethod
[Program]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#programs [Program]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#programs
[BlockStatement]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#blockstatement [BlockStatement]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#blockstatement
[Directive]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#directive [Directive]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#directive
[DirectiveLiteral]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#directiveliteral [DirectiveLiteral]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#directiveliteral
[FunctionExpression]: https://github.com/babel/babel/tree/master/packages/babylon/ast/spec.md#functionexpression [FunctionExpression]: https://github.com/babel/babel/tree/master/packages/babel-parser/ast/spec.md#functionexpression
[Facebook JSX AST]: https://github.com/facebook/jsx/blob/master/AST.md [Facebook JSX AST]: https://github.com/facebook/jsx/blob/master/AST.md
### Semver ### Semver
Babylon follows semver in most situations. The only thing to note is that some spec-compliancy bug fixes may be released under patch versions. The Bael Parser follows semver in most situations. The only thing to note is that some spec-compliancy bug fixes may be released under patch versions.
For example: We push a fix to early error on something like [#107](https://github.com/babel/babylon/pull/107) - multiple default exports per file. That would be considered a bug fix even though it would cause a build to fail. For example: We push a fix to early error on something like [#107](https://github.com/babel/babylon/pull/107) - multiple default exports per file. That would be considered a bug fix even though it would cause a build to fail.
### Example ### Example
```javascript ```javascript
require("babylon").parse("code", { require("@babel/parser").parse("code", {
// parse in strict mode and allow module declarations // parse in strict mode and allow module declarations
sourceType: "module", sourceType: "module",
@ -148,20 +148,20 @@ require("babylon").parse("code", {
### FAQ ### FAQ
#### Will Babylon support a plugin system? #### Will the babel parser support a plugin system?
Previous issues: [#1351](https://github.com/babel/babel/issues/1351), [#6694](https://github.com/babel/babel/issues/6694). Previous issues: [#1351](https://github.com/babel/babel/issues/1351), [#6694](https://github.com/babel/babel/issues/6694).
We currently aren't willing to commit to supporting the API for plugins or the resulting ecosystem (there is already enough work maintaining Babel's own plugin system). It's not clear how to make that API effective, and it would limit our ability to refactor and optimize the codebase. We currently aren't willing to commit to supporting the API for plugins or the resulting ecosystem (there is already enough work maintaining Babel's own plugin system). It's not clear how to make that API effective, and it would limit our ability to refactor and optimize the codebase.
Our current recommendation for those that want to create their own custom syntax is for users to fork Babylon. Our current recommendation for those that want to create their own custom syntax is for users to fork babel parser.
To consume your custom parser, you can add to your `.babelrc` via its npm package name or require it if using JavaScript, To consume your custom parser, you can add to your `.babelrc` via its npm package name or require it if using JavaScript,
```json ```json
{ {
"parserOpts": { "parserOpts": {
"parser": "custom-fork-of-babylon-on-npm-here" "parser": "custom-fork-of-babel-parser-on-npm-here"
} }
} }
``` ```

View File

@ -1,7 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
/* eslint no-var: 0 */ /* eslint no-var: 0 */
var babylon = require(".."); var parser = require("..");
var fs = require("fs"); var fs = require("fs");
var filename = process.argv[2]; var filename = process.argv[2];
@ -11,6 +11,6 @@ if (!filename) {
} }
var file = fs.readFileSync(filename, "utf8"); var file = fs.readFileSync(filename, "utf8");
var ast = babylon.parse(file); var ast = parser.parse(file);
console.log(JSON.stringify(ast, null, " ")); console.log(JSON.stringify(ast, null, " "));

View File

@ -1,5 +1,5 @@
{ {
"name": "babylon", "name": "@babel/parser",
"version": "7.0.0-beta.47", "version": "7.0.0-beta.47",
"description": "A JavaScript parser", "description": "A JavaScript parser",
"author": "Sebastian McKenzie <sebmck@gmail.com>", "author": "Sebastian McKenzie <sebmck@gmail.com>",
@ -11,9 +11,9 @@
"parser", "parser",
"tc39", "tc39",
"ecmascript", "ecmascript",
"babylon" "@babel/parser"
], ],
"repository": "https://github.com/babel/babel/tree/master/packages/babylon", "repository": "https://github.com/babel/babel/tree/master/packages/babel-parser",
"main": "lib/index.js", "main": "lib/index.js",
"files": [ "files": [
"bin", "bin",
@ -28,7 +28,7 @@
"unicode-10.0.0": "^0.7.4" "unicode-10.0.0": "^0.7.4"
}, },
"bin": { "bin": {
"babylon": "./bin/babylon.js" "parser": "./bin/babel-parser.js"
}, },
"publishConfig": { "publishConfig": {
"tag": "next" "tag": "next"

View File

@ -916,7 +916,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
} }
// This is similar to checkGetterSetterParams, but as // This is similar to checkGetterSetterParams, but as
// babylon uses non estree properties we cannot reuse it here // @babel/parser uses non estree properties we cannot reuse it here
flowCheckGetterSetterParams( flowCheckGetterSetterParams(
property: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty, property: N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty,
): void { ): void {

View File

@ -73,7 +73,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
tsNextTokenCanFollowModifier() { tsNextTokenCanFollowModifier() {
// Note: TypeScript's implementation is much more complicated because // Note: TypeScript's implementation is much more complicated because
// more things are considered modifiers there. // more things are considered modifiers there.
// This implementation only handles modifiers not handled by babylon itself. And "static". // This implementation only handles modifiers not handled by @babel/parser itself. And "static".
// TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method... // TODO: Would be nice to avoid lookahead. Want a hasLineBreakUpNext() method...
this.next(); this.next();
return ( return (
@ -1887,7 +1887,7 @@ export default (superClass: Class<Parser>): Class<Parser> =>
parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression { parseArrow(node: N.ArrowFunctionExpression): ?N.ArrowFunctionExpression {
if (this.match(tt.colon)) { if (this.match(tt.colon)) {
// This is different from how the TS parser does it. // This is different from how the TS parser does it.
// TS uses lookahead. Babylon parses it as a parenthesized expression and converts. // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.
const state = this.state.clone(); const state = this.state.clone();
try { try {
const returnType = this.tsParseTypeOrTypePredicateAnnotation( const returnType = this.tsParseTypeOrTypePredicateAnnotation(

View File

@ -968,7 +968,7 @@ export type EstreeMethodDefinition = NodeBase & {
// and only allow modifiers that are not considered errors. // and only allow modifiers that are not considered errors.
// * A property named `type` must be renamed to `typeAnnotation` to avoid conflict with the node's type. // * A property named `type` must be renamed to `typeAnnotation` to avoid conflict with the node's type.
// * Sometimes TypeScript allows to parse something which will be a grammar error later; // * Sometimes TypeScript allows to parse something which will be a grammar error later;
// in babylon these cause exceptions, so the AST format is stricter. // in @babel/parser these cause exceptions, so the AST format is stricter.
// ================ // ================
// Misc // Misc
@ -1299,7 +1299,7 @@ export type TsExternalModuleReference = NodeBase & {
}; };
// TypeScript's own parser uses ExportAssignment for both `export default` and `export =`. // TypeScript's own parser uses ExportAssignment for both `export default` and `export =`.
// But for babylon, `export default` is an ExportDefaultDeclaration, // But for @babel/parser, `export default` is an ExportDefaultDeclaration,
// so a TsExportAssignment is always `export =`. // so a TsExportAssignment is always `export =`.
export type TsExportAssignment = NodeBase & { export type TsExportAssignment = NodeBase & {
type: "TSExportAssignment", type: "TSExportAssignment",

Some files were not shown because too many files have changed in this diff Show More