From 32232dd30eb331ee0ef401b1ad23e8d8a909c68e Mon Sep 17 00:00:00 2001
From: Howard Yeh
Date: Sat, 3 Sep 2016 16:32:39 +0800
Subject: [PATCH 001/222] Watch mode should wait for file change. (T7411)
---
packages/babel-cli/src/babel/dir.js | 6 +++++-
packages/babel-cli/src/babel/file.js | 6 +++++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js
index 6bdb2fc194..362ce10858 100644
--- a/packages/babel-cli/src/babel/dir.js
+++ b/packages/babel-cli/src/babel/dir.js
@@ -71,7 +71,11 @@ module.exports = function (commander, filenames) {
_.each(filenames, function (dirname) {
let watcher = chokidar.watch(dirname, {
persistent: true,
- ignoreInitial: true
+ ignoreInitial: true,
+ awaitWriteFinish: {
+ stabilityThreshold: 50,
+ pollInterval: 10,
+ }
});
_.each(["add", "change"], function (type) {
diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js
index 36195ca722..8f852216b4 100644
--- a/packages/babel-cli/src/babel/file.js
+++ b/packages/babel-cli/src/babel/file.js
@@ -138,7 +138,11 @@ module.exports = function (commander, filenames, opts) {
let chokidar = util.requireChokidar();
chokidar.watch(filenames, {
persistent: true,
- ignoreInitial: true
+ ignoreInitial: true,
+ awaitWriteFinish: {
+ stabilityThreshold: 50,
+ pollInterval: 10,
+ }
}).on("all", function (type, filename) {
if (util.shouldIgnore(filename) || !util.canCompile(filename, commander.extensions)) return;
From f4389a1886498195b3f43065a152a01d61f21646 Mon Sep 17 00:00:00 2001
From: Richard Macklin
Date: Fri, 14 Oct 2016 14:49:37 -0700
Subject: [PATCH 002/222] Extract resolvePlugin method to babel-core public API
This encapsulates the logic for turning an acceptable plugin name into
the absolute path for that plugin. It can be used to preprocess a
plugins list to map each plugin to its absolute path, which is necessary
if `babel.transform` is going to be executed on a file outside the
directory subtree where the plugins are installed.
This adds a getPossiblePluginNames helper encapsulating the logic for
what plugin names we should try to resolve, and the resolvePlugin method
just calls this helper and actually resolves them.
---
packages/babel-core/src/api/node.js | 1 +
.../babel-core/src/helpers/get-possible-plugin-names.js | 3 +++
packages/babel-core/src/helpers/resolve-plugin.js | 6 ++++++
.../src/transformation/file/options/option-manager.js | 3 ++-
packages/babel-core/test/api.js | 4 ++++
packages/babel-core/test/get-possible-plugin-names.js | 8 ++++++++
6 files changed, 24 insertions(+), 1 deletion(-)
create mode 100644 packages/babel-core/src/helpers/get-possible-plugin-names.js
create mode 100644 packages/babel-core/src/helpers/resolve-plugin.js
create mode 100644 packages/babel-core/test/get-possible-plugin-names.js
diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js
index 72492e95a5..7899ed2fd4 100644
--- a/packages/babel-core/src/api/node.js
+++ b/packages/babel-core/src/api/node.js
@@ -5,6 +5,7 @@ export { default as File } from "../transformation/file";
export { default as options } from "../transformation/file/options/config";
export { default as buildExternalHelpers } from "../tools/build-external-helpers";
export { default as template } from "babel-template";
+export { default as resolvePlugin } from "../helpers/resolve-plugin";
export { version } from "../../package";
import * as util from "../util";
diff --git a/packages/babel-core/src/helpers/get-possible-plugin-names.js b/packages/babel-core/src/helpers/get-possible-plugin-names.js
new file mode 100644
index 0000000000..9aa95920a8
--- /dev/null
+++ b/packages/babel-core/src/helpers/get-possible-plugin-names.js
@@ -0,0 +1,3 @@
+export default function getPossiblePluginNames(pluginName: string): Array {
+ return [`babel-plugin-${pluginName}`, pluginName];
+}
diff --git a/packages/babel-core/src/helpers/resolve-plugin.js b/packages/babel-core/src/helpers/resolve-plugin.js
new file mode 100644
index 0000000000..7375845d44
--- /dev/null
+++ b/packages/babel-core/src/helpers/resolve-plugin.js
@@ -0,0 +1,6 @@
+import resolve from "./resolve";
+import getPossiblePluginNames from "./get-possible-plugin-names";
+
+export default function resolvePlugin(pluginName: string, dirname: string = process.cwd()): ?string {
+ return getPossiblePluginNames(pluginName).reduce((accum, curr) => accum || resolve(curr, dirname), null);
+}
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index 5af5f58fc9..06a4ff6fe6 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -6,6 +6,7 @@ import Plugin from "../../plugin";
import * as messages from "babel-messages";
import { normaliseOptions } from "./index";
import resolve from "../../../helpers/resolve";
+import resolvePlugin from "../../../helpers/resolve-plugin";
import cloneDeepWith from "lodash/cloneDeepWith";
import clone from "lodash/clone";
import merge from "../../../helpers/merge";
@@ -123,7 +124,7 @@ export default class OptionManager {
// allow plugins to be specified as strings
if (typeof plugin === "string") {
- let pluginLoc = resolve(`babel-plugin-${plugin}`, dirname) || resolve(plugin, dirname);
+ let pluginLoc = resolvePlugin(plugin, dirname);
if (pluginLoc) {
plugin = require(pluginLoc);
} else {
diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js
index 1122e497e8..d0fbadd48e 100644
--- a/packages/babel-core/test/api.js
+++ b/packages/babel-core/test/api.js
@@ -114,6 +114,10 @@ describe("api", function () {
}).marked[0].message, "foobar");
});
+ it("exposes the resolvePlugin method", function() {
+ assert.equal(babel.resolvePlugin("nonexistent-plugin"), null);
+ });
+
it("transformFile", function (done) {
babel.transformFile(__dirname + "/fixtures/api/file.js", {}, function (err, res) {
if (err) return done(err);
diff --git a/packages/babel-core/test/get-possible-plugin-names.js b/packages/babel-core/test/get-possible-plugin-names.js
new file mode 100644
index 0000000000..4a9ec2d080
--- /dev/null
+++ b/packages/babel-core/test/get-possible-plugin-names.js
@@ -0,0 +1,8 @@
+let assert = require("assert");
+let getPossiblePluginNames = require("../lib/helpers/get-possible-plugin-names");
+
+describe("getPossiblePluginNames", function () {
+ it("adds the babel-plugin prefix", function() {
+ assert.deepEqual(getPossiblePluginNames("foobar"), ["babel-plugin-foobar", "foobar"]);
+ });
+});
From e24f07dfda1d6976c0018dfc7d22a74d273132a3 Mon Sep 17 00:00:00 2001
From: Richard Macklin
Date: Fri, 14 Oct 2016 15:09:04 -0700
Subject: [PATCH 003/222] Extract resolvePreset method to babel-core public API
This encapsulates the logic for turning an acceptable preset name into
the absolute path for that preset. It can be used to preprocess a
presets list to map each preset to its absolute path, which is necessary
if `babel.transform` is going to be executed on a file outside the
directory subtree where the presets are installed.
This adds a getPossiblePresetNames helper encapsulating the logic for
what preset names we should try to resolve, and the resolvePreset method
just calls this helper and actually resolves them.
---
packages/babel-core/src/api/node.js | 1 +
.../src/helpers/get-possible-preset-names.js | 13 +++++++++++
.../babel-core/src/helpers/resolve-preset.js | 6 +++++
.../file/options/option-manager.js | 15 ++-----------
packages/babel-core/test/api.js | 8 +++++--
.../test/get-possible-preset-names.js | 22 +++++++++++++++++++
6 files changed, 50 insertions(+), 15 deletions(-)
create mode 100644 packages/babel-core/src/helpers/get-possible-preset-names.js
create mode 100644 packages/babel-core/src/helpers/resolve-preset.js
create mode 100644 packages/babel-core/test/get-possible-preset-names.js
diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js
index 7899ed2fd4..a9e4792465 100644
--- a/packages/babel-core/src/api/node.js
+++ b/packages/babel-core/src/api/node.js
@@ -6,6 +6,7 @@ export { default as options } from "../transformation/file/options/config";
export { default as buildExternalHelpers } from "../tools/build-external-helpers";
export { default as template } from "babel-template";
export { default as resolvePlugin } from "../helpers/resolve-plugin";
+export { default as resolvePreset } from "../helpers/resolve-preset";
export { version } from "../../package";
import * as util from "../util";
diff --git a/packages/babel-core/src/helpers/get-possible-preset-names.js b/packages/babel-core/src/helpers/get-possible-preset-names.js
new file mode 100644
index 0000000000..b9fb1726bd
--- /dev/null
+++ b/packages/babel-core/src/helpers/get-possible-preset-names.js
@@ -0,0 +1,13 @@
+export default function getPossiblePresetNames(presetName: string): Array {
+ let possibleNames = [`babel-preset-${presetName}`, presetName];
+
+ // trying to resolve @organization shortcat
+ // @foo/es2015 -> @foo/babel-preset-es2015
+ let matches = presetName.match(/^(@[^/]+)\/(.+)$/);
+ if (matches) {
+ let [, orgName, presetPath] = matches;
+ possibleNames.push(`${orgName}/babel-preset-${presetPath}`);
+ }
+
+ return possibleNames;
+}
diff --git a/packages/babel-core/src/helpers/resolve-preset.js b/packages/babel-core/src/helpers/resolve-preset.js
new file mode 100644
index 0000000000..a7c1784ce9
--- /dev/null
+++ b/packages/babel-core/src/helpers/resolve-preset.js
@@ -0,0 +1,6 @@
+import resolve from "./resolve";
+import getPossiblePresetNames from "./get-possible-preset-names";
+
+export default function resolvePreset(presetName: string, dirname: string = process.cwd()): ?string {
+ return getPossiblePresetNames(presetName).reduce((accum, curr) => accum || resolve(curr, dirname), null);
+}
diff --git a/packages/babel-core/src/transformation/file/options/option-manager.js b/packages/babel-core/src/transformation/file/options/option-manager.js
index 06a4ff6fe6..3b0c78993b 100644
--- a/packages/babel-core/src/transformation/file/options/option-manager.js
+++ b/packages/babel-core/src/transformation/file/options/option-manager.js
@@ -5,8 +5,8 @@ import type Logger from "../logger";
import Plugin from "../../plugin";
import * as messages from "babel-messages";
import { normaliseOptions } from "./index";
-import resolve from "../../../helpers/resolve";
import resolvePlugin from "../../../helpers/resolve-plugin";
+import resolvePreset from "../../../helpers/resolve-preset";
import cloneDeepWith from "lodash/cloneDeepWith";
import clone from "lodash/clone";
import merge from "../../../helpers/merge";
@@ -262,18 +262,7 @@ export default class OptionManager {
let presetLoc;
try {
if (typeof val === "string") {
- presetLoc = resolve(`babel-preset-${val}`, dirname) || resolve(val, dirname);
-
- // trying to resolve @organization shortcat
- // @foo/es2015 -> @foo/babel-preset-es2015
- if (!presetLoc) {
- let matches = val.match(/^(@[^/]+)\/(.+)$/);
- if (matches) {
- let [, orgName, presetPath] = matches;
- val = `${orgName}/babel-preset-${presetPath}`;
- presetLoc = resolve(val, dirname);
- }
- }
+ presetLoc = resolvePreset(val, dirname);
if (!presetLoc) {
throw new Error(`Couldn't find preset ${JSON.stringify(val)} relative to directory ` +
diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js
index d0fbadd48e..55fc0d013a 100644
--- a/packages/babel-core/test/api.js
+++ b/packages/babel-core/test/api.js
@@ -118,6 +118,10 @@ describe("api", function () {
assert.equal(babel.resolvePlugin("nonexistent-plugin"), null);
});
+ it("exposes the resolvePreset method", function() {
+ assert.equal(babel.resolvePreset("nonexistent-preset"), null);
+ });
+
it("transformFile", function (done) {
babel.transformFile(__dirname + "/fixtures/api/file.js", {}, function (err, res) {
if (err) return done(err);
@@ -266,7 +270,7 @@ describe("api", function () {
presets: ["@babel/es2015"]
});
},
- /Couldn\'t find preset \"\@babel\/babel\-preset\-es2015\" relative to directory/
+ /Couldn\'t find preset \"\@babel\/es2015\" relative to directory/
);
});
@@ -277,7 +281,7 @@ describe("api", function () {
presets: ["@babel/react/optimizations"]
});
},
- /Couldn\'t find preset \"\@babel\/babel\-preset\-react\/optimizations\" relative to directory/
+ /Couldn\'t find preset \"\@babel\/react\/optimizations\" relative to directory/
);
});
diff --git a/packages/babel-core/test/get-possible-preset-names.js b/packages/babel-core/test/get-possible-preset-names.js
new file mode 100644
index 0000000000..88f9166c83
--- /dev/null
+++ b/packages/babel-core/test/get-possible-preset-names.js
@@ -0,0 +1,22 @@
+let assert = require("assert");
+let getPossiblePresetNames = require("../lib/helpers/get-possible-preset-names");
+
+describe("getPossiblePresetNames", function () {
+ it("adds the babel-preset prefix", function() {
+ assert.deepEqual(getPossiblePresetNames("foobar"), ["babel-preset-foobar", "foobar"]);
+ });
+
+ it("inserts babel-preset after @org/", function() {
+ assert.deepEqual(getPossiblePresetNames("@babel/es2015"), [
+ "babel-preset-@babel/es2015",
+ "@babel/es2015",
+ "@babel/babel-preset-es2015"
+ ]);
+
+ assert.deepEqual(getPossiblePresetNames("@babel/react/optimizations"), [
+ "babel-preset-@babel/react/optimizations",
+ "@babel/react/optimizations",
+ "@babel/babel-preset-react/optimizations"
+ ]);
+ });
+});
From 4ea100764559c931cb6c6b4f716fbc533964fa33 Mon Sep 17 00:00:00 2001
From: Richard Macklin
Date: Sat, 15 Oct 2016 14:41:03 -0700
Subject: [PATCH 004/222] Remove unneeded tests
Previously these were testing the logic that is now encapsulated in
getPossiblePresetNames and tested in a unit test
---
packages/babel-core/test/api.js | 22 ----------------------
1 file changed, 22 deletions(-)
diff --git a/packages/babel-core/test/api.js b/packages/babel-core/test/api.js
index 55fc0d013a..0b997fb4a0 100644
--- a/packages/babel-core/test/api.js
+++ b/packages/babel-core/test/api.js
@@ -263,28 +263,6 @@ describe("api", function () {
});
- it("handles preset shortcuts (adds babel-preset-)", function () {
- return assert.throws(
- function () {
- babel.transform("", {
- presets: ["@babel/es2015"]
- });
- },
- /Couldn\'t find preset \"\@babel\/es2015\" relative to directory/
- );
- });
-
- it("handles preset shortcuts 2 (adds babel-preset-)", function () {
- return assert.throws(
- function () {
- babel.transform("", {
- presets: ["@babel/react/optimizations"]
- });
- },
- /Couldn\'t find preset \"\@babel\/react\/optimizations\" relative to directory/
- );
- });
-
it("source map merging", function () {
let result = babel.transform([
"function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }",
From 6ec93d782b730a0312fde00533a848385a866f0b Mon Sep 17 00:00:00 2001
From: Richard Macklin
Date: Sat, 15 Oct 2016 14:46:24 -0700
Subject: [PATCH 005/222] Extract resolveFromPossibleNames to remove duplicated
logic
"DRY"s the duplicated algorithm in resolvePlugin and resolvePreset
---
.../babel-core/src/helpers/resolve-from-possible-names.js | 5 +++++
packages/babel-core/src/helpers/resolve-plugin.js | 4 ++--
packages/babel-core/src/helpers/resolve-preset.js | 4 ++--
3 files changed, 9 insertions(+), 4 deletions(-)
create mode 100644 packages/babel-core/src/helpers/resolve-from-possible-names.js
diff --git a/packages/babel-core/src/helpers/resolve-from-possible-names.js b/packages/babel-core/src/helpers/resolve-from-possible-names.js
new file mode 100644
index 0000000000..e7a34adf01
--- /dev/null
+++ b/packages/babel-core/src/helpers/resolve-from-possible-names.js
@@ -0,0 +1,5 @@
+import resolve from "./resolve";
+
+export default function resolveFromPossibleNames(possibleNames: Array, dirname: string): ?string {
+ return possibleNames.reduce((accum, curr) => accum || resolve(curr, dirname), null);
+}
diff --git a/packages/babel-core/src/helpers/resolve-plugin.js b/packages/babel-core/src/helpers/resolve-plugin.js
index 7375845d44..65aba0138b 100644
--- a/packages/babel-core/src/helpers/resolve-plugin.js
+++ b/packages/babel-core/src/helpers/resolve-plugin.js
@@ -1,6 +1,6 @@
-import resolve from "./resolve";
+import resolveFromPossibleNames from "./resolve-from-possible-names";
import getPossiblePluginNames from "./get-possible-plugin-names";
export default function resolvePlugin(pluginName: string, dirname: string = process.cwd()): ?string {
- return getPossiblePluginNames(pluginName).reduce((accum, curr) => accum || resolve(curr, dirname), null);
+ return resolveFromPossibleNames(getPossiblePluginNames(pluginName), dirname);
}
diff --git a/packages/babel-core/src/helpers/resolve-preset.js b/packages/babel-core/src/helpers/resolve-preset.js
index a7c1784ce9..417aaf9a01 100644
--- a/packages/babel-core/src/helpers/resolve-preset.js
+++ b/packages/babel-core/src/helpers/resolve-preset.js
@@ -1,6 +1,6 @@
-import resolve from "./resolve";
+import resolveFromPossibleNames from "./resolve-from-possible-names";
import getPossiblePresetNames from "./get-possible-preset-names";
export default function resolvePreset(presetName: string, dirname: string = process.cwd()): ?string {
- return getPossiblePresetNames(presetName).reduce((accum, curr) => accum || resolve(curr, dirname), null);
+ return resolveFromPossibleNames(getPossiblePresetNames(presetName), dirname);
}
From fad6483aac4ba59f71f8d0af0ade46a733509179 Mon Sep 17 00:00:00 2001
From: Peter Mikula
Date: Fri, 28 Oct 2016 20:41:10 +0300
Subject: [PATCH 006/222] fixes invalid line offsets in merged sourcemaps
---
packages/babel-cli/src/babel/file.js | 2 +-
.../out-files/script3.js | 2 +-
.../filenames --out-file --source-maps/out-files/script3.js.map | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js
index 1feb8d2aad..b44b27266d 100644
--- a/packages/babel-cli/src/babel/file.js
+++ b/packages/babel-cli/src/babel/file.js
@@ -52,7 +52,7 @@ module.exports = function (commander, filenames, opts) {
}
});
- offset = code.split("\n").length;
+ offset = code.split("\n").length -1;
}
});
diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js
index cd0326f68f..5ab4d85cee 100644
--- a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js
+++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps inline/out-files/script3.js
@@ -11,4 +11,4 @@ arr.map(function (x) {
return x * MULTIPLIER;
});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztJQUFNLEk7Ozs7OztBQ0FOLElBQUksR0FBSixDQUFRO0FBQUEsU0FBSyxJQUFJLFVBQVQ7QUFBQSxDQUFSIiwiZmlsZSI6InNjcmlwdDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjbGFzcyBUZXN0IHtcblxufSIsImFyci5tYXAoeCA9PiB4ICogTVVMVElQTElFUik7Il19
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNjcmlwdC5qcyIsInNjcmlwdDIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztJQUFNLEk7Ozs7O0FDQU4sSUFBSSxHQUFKLENBQVE7QUFBQSxTQUFLLElBQUksVUFBVDtBQUFBLENBQVIiLCJmaWxlIjoic2NyaXB0My5qcyIsInNvdXJjZXNDb250ZW50IjpbImNsYXNzIFRlc3Qge1xuXG59IiwiYXJyLm1hcCh4ID0+IHggKiBNVUxUSVBMSUVSKTsiXX0=
diff --git a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map
index 6dc6dd4027..cd5df70d02 100644
--- a/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map
+++ b/packages/babel-cli/test/fixtures/babel/filenames --out-file --source-maps/out-files/script3.js.map
@@ -1 +1 @@
-{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":";;;;IAAM,I;;;;;;ACAN,IAAI,GAAJ,CAAQ;AAAA,SAAK,IAAI,UAAT;AAAA,CAAR","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]}
+{"version":3,"sources":["script.js","script2.js"],"names":[],"mappings":";;;;IAAM,I;;;;;ACAN,IAAI,GAAJ,CAAQ;AAAA,SAAK,IAAI,UAAT;AAAA,CAAR","file":"script3.js","sourcesContent":["class Test {\n\n}","arr.map(x => x * MULTIPLIER);"]}
From ccf2f56085708a9eac3c39fcf104473a5165b5e7 Mon Sep 17 00:00:00 2001
From: "Diogo Franco (Kovensky)"
Date: Fri, 16 Dec 2016 11:14:39 +0900
Subject: [PATCH 007/222] Don't try to visit ArrowFunctionExpression, they
cannot be named
They will still be visited if the arrow functions are transformed to regular
functions.
Fixes #5004
---
.../src/index.js | 2 +-
.../with-arrow-functions-transform/actual.js | 3 +++
.../with-arrow-functions-transform/expected.js | 9 +++++++++
.../with-arrow-functions-transform/options.json | 3 +++
.../test/fixtures/issues/5004/actual.js | 2 ++
.../test/fixtures/issues/5004/expected.js | 2 ++
.../test/fixtures/issues/5004/options.json | 3 +++
7 files changed, 23 insertions(+), 1 deletion(-)
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/actual.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/expected.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/options.json
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/actual.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/expected.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/options.json
diff --git a/packages/babel-plugin-transform-es2015-function-name/src/index.js b/packages/babel-plugin-transform-es2015-function-name/src/index.js
index ab403e6ec5..d0d870377f 100644
--- a/packages/babel-plugin-transform-es2015-function-name/src/index.js
+++ b/packages/babel-plugin-transform-es2015-function-name/src/index.js
@@ -3,7 +3,7 @@ import nameFunction from "babel-helper-function-name";
export default function () {
return {
visitor: {
- "ArrowFunctionExpression|FunctionExpression": {
+ FunctionExpression: {
exit(path) {
if (path.key !== "value" && !path.parentPath.isObjectProperty()) {
let replacement = nameFunction(path);
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/actual.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/actual.js
new file mode 100644
index 0000000000..c1e980a79f
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/actual.js
@@ -0,0 +1,3 @@
+const x = () => x;
+const y = x => x();
+const z = { z: () => y(x) }.z;
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/expected.js
new file mode 100644
index 0000000000..096e218d2d
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/expected.js
@@ -0,0 +1,9 @@
+const x = function x() {
+ return x;
+};
+const y = function y(x) {
+ return x();
+};
+const z = { z: function z() {
+ return y(x);
+ } }.z;
\ No newline at end of file
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/options.json b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/options.json
new file mode 100644
index 0000000000..32ac45253f
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform/options.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["external-helpers", "transform-es2015-function-name", "transform-es2015-arrow-functions"]
+}
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/actual.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/actual.js
new file mode 100644
index 0000000000..c8b74de50e
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/actual.js
@@ -0,0 +1,2 @@
+export const x = ({x}) => x;
+export const y = function () {};
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/expected.js
new file mode 100644
index 0000000000..e7a7ae72b4
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/expected.js
@@ -0,0 +1,2 @@
+export const x = ({ x }) => x;
+export const y = function y() {};
\ No newline at end of file
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/options.json b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/options.json
new file mode 100644
index 0000000000..f2178b7ef6
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/issues/5004/options.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["external-helpers", "transform-es2015-function-name"]
+}
From 31b85a36dde8428fe6aefffa7cc94d6daff2d3af Mon Sep 17 00:00:00 2001
From: "Diogo Franco (Kovensky)"
Date: Fri, 16 Dec 2016 11:25:42 +0900
Subject: [PATCH 008/222] Add fixture for known bug
---
.../actual.js | 5 +++++
.../expected.js | 16 ++++++++++++++++
.../options.json | 3 +++
3 files changed, 24 insertions(+)
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/actual.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/expected.js
create mode 100644 packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/options.json
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/actual.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/actual.js
new file mode 100644
index 0000000000..f56af5c601
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/actual.js
@@ -0,0 +1,5 @@
+// I don't know if this is a bug with arrow-functions spec: true
+// or with function-name, but the functions are missing their names.
+const x = () => x;
+const y = x => x();
+const z = { z: () => y(x) }.z;
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/expected.js b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/expected.js
new file mode 100644
index 0000000000..b842455dae
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/expected.js
@@ -0,0 +1,16 @@
+var _this = this;
+
+// I don't know if this is a bug with arrow-functions spec: true
+// or with function-name, but the functions are missing their names.
+const x = function () {
+ babelHelpers.newArrowCheck(this, _this);
+ return x;
+}.bind(this);
+const y = function (x) {
+ babelHelpers.newArrowCheck(this, _this);
+ return x();
+}.bind(this);
+const z = { z: function z() {
+ babelHelpers.newArrowCheck(this, _this);
+ return y(x);
+ }.bind(this) }.z;
\ No newline at end of file
diff --git a/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/options.json b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/options.json
new file mode 100644
index 0000000000..d66c99f262
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-function-name/test/fixtures/function-name/with-arrow-functions-transform-spec/options.json
@@ -0,0 +1,3 @@
+{
+ "plugins": ["external-helpers", "transform-es2015-function-name", [ "transform-es2015-arrow-functions", { "spec": true } ]]
+}
From 96084983e6b5a7f2e3f4128cdf162663e56e68be Mon Sep 17 00:00:00 2001
From: Henry Zhu
Date: Wed, 14 Dec 2016 12:12:46 -0500
Subject: [PATCH 009/222] Add Team section [skip ci]
---
README.md | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/README.md b/README.md
index 04057583fe..7145d3f2d7 100644
--- a/README.md
+++ b/README.md
@@ -47,6 +47,7 @@ Try it out at our [REPL](https://babeljs.io/repl/#?babili=false&evaluate=true&li
- [Syntax Plugins](#syntax-plugins)
- [Misc Packages](#misc-packages)
- [License](#license)
+- [Team](#team)
# FAQ
@@ -241,3 +242,25 @@ These are mostly for internal use in various plugins: `babel-helper-x`.
## License
[MIT](https://github.com/babel/babel/blob/master/LICENSE)
+
+## Team
+
+[](https://github.com/babel) | [](https://github.com/danez) | [](https://github.com/loganfsmyth) | [](https://github.com/hzoo) |
+|---|---|---|---|---|
+Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
+:octocat: [@babel](https://github.com/babel) | [@danez](https://github.com/danez) | [@loganfsmyth](https://github.com/loganfsmyth) | [@hzoo](https://github.com/hzoo) |
+:bird: [@babeljs](https://twitter.com/babeljs) | [@TschinderDaniel](https://twitter.com/TschinderDaniel) | [@loganfsmyth](https://twitter.com/loganfsmyth) | [@left_pad](https://twitter.com/left_pad) |
+
+[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) | [](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) |
+|---|---|---|---|---|---|---|---|
+| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco | Juriy Zaytsev | Kai Cataldo | Moti Zilberman |
+| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) | [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) |
+| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) | [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) |
+
+### Inactive
+
+[](https://github.com/amasad) | [](https://github.com/thejameskyle) | [](https://github.com/jmm) | [](https://github.com/kittens) (Creator) |
+|---|---|---|---|
+Amjad Masad | James Kyle | Jesse McCarthy | Sebastian McKenzie |
+[@amasad](https://github.com/amasad) | [@thejameskyle](https://github.com/thejameskyle) | [@jmm](https://github.com/jmm) | [@sebmck](https://twitter.com/sebmck) |
+| [@amasad](https://twitter.com/amasad) | [@thejameskyle](https://twitter.com/thejameskyle) | [@mccjm](https://twitter.com/mccjm) | [@kittens](https://github.com/kittens)
From 84bae86ae2025166ea55b2310d28a864165cc533 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 17 Dec 2016 10:50:24 +0100
Subject: [PATCH 010/222] [skip ci] update README
Add xtuc to members
---
README.md | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 7145d3f2d7..193a6b5d60 100644
--- a/README.md
+++ b/README.md
@@ -251,11 +251,11 @@ Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
:octocat: [@babel](https://github.com/babel) | [@danez](https://github.com/danez) | [@loganfsmyth](https://github.com/loganfsmyth) | [@hzoo](https://github.com/hzoo) |
:bird: [@babeljs](https://twitter.com/babeljs) | [@TschinderDaniel](https://twitter.com/TschinderDaniel) | [@loganfsmyth](https://twitter.com/loganfsmyth) | [@left_pad](https://twitter.com/left_pad) |
-[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) | [](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) |
-|---|---|---|---|---|---|---|---|
-| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco | Juriy Zaytsev | Kai Cataldo | Moti Zilberman |
-| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) | [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) |
-| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) | [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) |
+[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) | [](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) | [](https://github.com/xtuc) |
+|---|---|---|---|---|---|---|---|---|
+| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco | Juriy Zaytsev | Kai Cataldo | Moti Zilberman | Sven Sauleau |
+| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) | [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) | [@xtuc](https://github.com/xtuc) |
+| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) | [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) | [@svensauleau](https://twitter.com/svensauleau) |
### Inactive
From 9fd3f204dd9c3ea42b8a98d333182c45b0afe9d5 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 17 Dec 2016 11:12:36 +0100
Subject: [PATCH 011/222] [skip ci] update README
---
README.md | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 193a6b5d60..f9d9475833 100644
--- a/README.md
+++ b/README.md
@@ -245,19 +245,23 @@ These are mostly for internal use in various plugins: `babel-helper-x`.
## Team
+### Core members
+
[](https://github.com/babel) | [](https://github.com/danez) | [](https://github.com/loganfsmyth) | [](https://github.com/hzoo) |
|---|---|---|---|---|
Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
:octocat: [@babel](https://github.com/babel) | [@danez](https://github.com/danez) | [@loganfsmyth](https://github.com/loganfsmyth) | [@hzoo](https://github.com/hzoo) |
:bird: [@babeljs](https://twitter.com/babeljs) | [@TschinderDaniel](https://twitter.com/TschinderDaniel) | [@loganfsmyth](https://twitter.com/loganfsmyth) | [@left_pad](https://twitter.com/left_pad) |
+### Members
+
[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) | [](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) | [](https://github.com/xtuc) |
|---|---|---|---|---|---|---|---|---|
| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco | Juriy Zaytsev | Kai Cataldo | Moti Zilberman | Sven Sauleau |
| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) | [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) | [@xtuc](https://github.com/xtuc) |
| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) | [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) | [@svensauleau](https://twitter.com/svensauleau) |
-### Inactive
+### Inactive members
[](https://github.com/amasad) | [](https://github.com/thejameskyle) | [](https://github.com/jmm) | [](https://github.com/kittens) (Creator) |
|---|---|---|---|
From aaa250c17ac1b692a381b5fd129f1cf7530c3049 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 17 Dec 2016 11:20:02 +0100
Subject: [PATCH 012/222] [skip ci] Split members in README
---
README.md | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index f9d9475833..75bf7a227f 100644
--- a/README.md
+++ b/README.md
@@ -255,11 +255,17 @@ Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
### Members
-[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) | [](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) | [](https://github.com/xtuc) |
+[](https://github.com/drewml) | [](https://github.com/boopathi) | [](https://github.com/existentialism) | [](https://github.com/danharper) | [](https://github.com/kovensky) |
|---|---|---|---|---|---|---|---|---|
-| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco | Juriy Zaytsev | Kai Cataldo | Moti Zilberman | Sven Sauleau |
-| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) | [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) | [@xtuc](https://github.com/xtuc) |
-| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) | [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) | [@svensauleau](https://twitter.com/svensauleau) |
+| Andrew Levine | Boopathi Rajaa | Brian Ng | Dan Harper | Diogo Franco |
+| [@drewml](https://github.com/drewml) | [@boopathi](https://github.com/boopathi) | [@existentialism](https://github.com/existentialism) | [@danharper](https://github.com/danharper) | [@kovensky](https://github.com/kovensky) |
+| [@drewml](https://twitter.com/drewml) | [@heisenbugger](https://twitter.com/heisenbugger) | [@existentialism](https://twitter.com/existentialism) | [@DanHarper7](https://twitter.com/DanHarper7) | [@kovnsk](https://twitter.com/kovnsk) |
+
+[](https://github.com/kangax) | [](https://github.com/kaicataldo) | [](https://github.com/motiz88) | [](https://github.com/xtuc) |
+|---|---|---|---|---|---|---|---|---|
+| Juriy Zaytsev | Kai Cataldo | Moti Zilberman | Sven Sauleau |
+| [@kangax](https://github.com/kangax) | [@kaicataldo](https://github.com/kaicataldo) | [@motiz88](https://github.com/motiz88) | [@xtuc](https://github.com/xtuc) |
+| [@kangax](https://twitter.com/kangax) | [@kai_cataldo](https://twitter.com/kai_cataldo) | [@motiz88](https://twitter.com/motiz88) | [@svensauleau](https://twitter.com/svensauleau) |
### Inactive members
@@ -268,3 +274,4 @@ Babel | Daniel Tschinder | Logan Smyth | Henry Zhu |
Amjad Masad | James Kyle | Jesse McCarthy | Sebastian McKenzie |
[@amasad](https://github.com/amasad) | [@thejameskyle](https://github.com/thejameskyle) | [@jmm](https://github.com/jmm) | [@sebmck](https://twitter.com/sebmck) |
| [@amasad](https://twitter.com/amasad) | [@thejameskyle](https://twitter.com/thejameskyle) | [@mccjm](https://twitter.com/mccjm) | [@kittens](https://github.com/kittens)
+
From 3ef8e61d72ed38441d21a0023fc7b5d0aa3000f3 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 17 Dec 2016 12:41:49 +0100
Subject: [PATCH 013/222] [skip ci] update babel-core's README
---
packages/babel-core/README.md | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/packages/babel-core/README.md b/packages/babel-core/README.md
index 3db09945ec..9dc2dac20c 100644
--- a/packages/babel-core/README.md
+++ b/packages/babel-core/README.md
@@ -9,7 +9,9 @@ import { transform } from 'babel-core';
import * as babel from 'babel-core';
```
-## babel.transform(code: string, [options?](/docs/usage/api/#options): Object)
+All transformation will use your local configuration files (.babelrc or in package.json). See [options](#options) to disable it.
+
+## babel.transform(code: string, [options?](#options): Object)
Transforms the passed in `code`. Returning an object with the generated code,
source map, and AST.
@@ -27,7 +29,7 @@ result.map;
result.ast;
```
-## babel.transformFile(filename: string, [options?](/docs/usage/api/#options): Object, callback: Function)
+## babel.transformFile(filename: string, [options?](#options): Object, callback: Function)
Asynchronously transforms the entire contents of a file.
@@ -43,7 +45,7 @@ babel.transformFile("filename.js", options, function (err, result) {
});
```
-## babel.transformFileSync(filename: string, [options?](/docs/usage/api/#options): Object)
+## babel.transformFileSync(filename: string, [options?](#options): Object)
Synchronous version of `babel.transformFile`. Returns the transformed contents of
the `filename`.
@@ -58,7 +60,7 @@ babel.transformFileSync(filename, options) // => { code, map, ast }
babel.transformFileSync("filename.js", options).code;
```
-## babel.transformFromAst(ast: Object, code?: string, [options?](/docs/usage/api/#options): Object)
+## babel.transformFromAst(ast: Object, code?: string, [options?](#options): Object)
Given, an [AST](https://astexplorer.net/), transform it.
From 9d76f0b2de7b03ee8f0aea099083c80b073ae45e Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 17 Dec 2016 16:37:45 +0100
Subject: [PATCH 014/222] [skip ci] update README
---
packages/babel-core/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-core/README.md b/packages/babel-core/README.md
index 9dc2dac20c..eda73abf48 100644
--- a/packages/babel-core/README.md
+++ b/packages/babel-core/README.md
@@ -9,7 +9,7 @@ import { transform } from 'babel-core';
import * as babel from 'babel-core';
```
-All transformation will use your local configuration files (.babelrc or in package.json). See [options](#options) to disable it.
+All transformations will use your local configuration files (.babelrc or in package.json). See [options](#options) to disable it.
## babel.transform(code: string, [options?](#options): Object)
From dbc07220ae9188a3fb2bdea3d826ff7f48532a2e Mon Sep 17 00:00:00 2001
From: Logan Smyth
Date: Sat, 17 Dec 2016 20:50:03 -0800
Subject: [PATCH 015/222] Revert babel-helper-builder-react-jsx change from
#4988
---
packages/babel-helper-builder-react-jsx/src/index.js | 4 ----
.../fixtures/react/should-disallow-spread-children/actual.js | 1 -
.../react/should-disallow-spread-children/options.json | 3 ---
3 files changed, 8 deletions(-)
delete mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/actual.js
delete mode 100644 packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/options.json
diff --git a/packages/babel-helper-builder-react-jsx/src/index.js b/packages/babel-helper-builder-react-jsx/src/index.js
index 22f963e342..2438070df0 100644
--- a/packages/babel-helper-builder-react-jsx/src/index.js
+++ b/packages/babel-helper-builder-react-jsx/src/index.js
@@ -17,10 +17,6 @@ export default function (opts) {
throw path.buildCodeFrameError("Namespace tags are not supported. ReactJSX is not XML.");
};
- visitor.JSXSpreadChild = function(path) {
- throw path.buildCodeFrameError("Spread children are not supported.");
- };
-
visitor.JSXElement = {
exit(path, file) {
let callExpr = buildElementCall(path.get("openingElement"), file);
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/actual.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/actual.js
deleted file mode 100644
index 6a05e108dc..0000000000
--- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/actual.js
+++ /dev/null
@@ -1 +0,0 @@
-
{...children}
;
diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/options.json b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/options.json
deleted file mode 100644
index ec71024507..0000000000
--- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/should-disallow-spread-children/options.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "throws": "Spread children are not supported."
-}
From 405697558e977fff0a2e16e88d726340f6bf6e52 Mon Sep 17 00:00:00 2001
From: Logan Smyth
Date: Sat, 17 Dec 2016 21:09:23 -0800
Subject: [PATCH 016/222] v6.21.1 changelog [skip ci]
---
CHANGELOG.md | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index e9c0c57728..7311807047 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -13,6 +13,12 @@ _Note: Gaps between patch versions are faulty, broken or test releases._
See [CHANGELOG - 6to5](CHANGELOG-6to5.md) for the pre-4.0.0 version changelog.
+## 6.21.1 (2016-12-17)
+
+#### :bug: Bug Fix
+* `babel-helper-builder-react-jsx`, `babel-plugin-transform-react-jsx`
+ * [#5015](https://github.com/babel/babel/pull/5015) Revert the introduction of a new error message that ended up introducing its own error ([@loganfsmyth](https://github.com/loganfsmyth))
+
## 6.21.0 (2016-12-16)
#### :rocket: New Feature
From 1a8150ef973ccaeadef93d6d42aa8f562ace142f Mon Sep 17 00:00:00 2001
From: Logan Smyth
Date: Sat, 17 Dec 2016 21:15:33 -0800
Subject: [PATCH 017/222] v6.21.1
---
lerna.json | 2 +-
packages/babel-helper-builder-react-jsx/package.json | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/lerna.json b/lerna.json
index d2ff6578fb..6ad6cc309f 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,6 +1,6 @@
{
"lerna": "2.0.0-beta.23",
- "version": "6.21.0",
+ "version": "6.21.1",
"changelog": {
"repo": "babel/babel",
"labels": {
diff --git a/packages/babel-helper-builder-react-jsx/package.json b/packages/babel-helper-builder-react-jsx/package.json
index 908e3a2c34..d9877f0fe9 100644
--- a/packages/babel-helper-builder-react-jsx/package.json
+++ b/packages/babel-helper-builder-react-jsx/package.json
@@ -1,6 +1,6 @@
{
"name": "babel-helper-builder-react-jsx",
- "version": "6.21.0",
+ "version": "6.21.1",
"description": "Helper function to build react jsx",
"repository": "https://github.com/babel/babel/tree/master/packages/babel-helper-builder-react-jsx",
"license": "MIT",
From 7135751750c2d1f0029ecfc66b04f5f21bc0b624 Mon Sep 17 00:00:00 2001
From: Siddharth Kshetrapal
Date: Wed, 21 Dec 2016 12:28:28 +0530
Subject: [PATCH 018/222] Drop support for Node 0.12 :skull:
---
.travis.yml | 1 -
1 file changed, 1 deletion(-)
diff --git a/.travis.yml b/.travis.yml
index edc8e157cb..992e8e61c3 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,7 +9,6 @@ node_js:
- '6'
- '5'
- '4'
-- '0.12'
script:
- 'if [ -n "${LINT-}" ]; then make lint ; fi'
- 'if [ -z "${LINT-}" ]; then make test-ci ; fi'
From 868c9ecc11d23bf3c991550d6c1054efec7ba87d Mon Sep 17 00:00:00 2001
From: Siddharth Kshetrapal
Date: Wed, 21 Dec 2016 12:35:16 +0530
Subject: [PATCH 019/222] change node version in contributing
---
CONTRIBUTING.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 80c27d86d3..a3e0254067 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -38,7 +38,7 @@ Feel free to check out the `#discussion`/`#development` channels on our [slack](
**Note:** Versions `< 5.1.10` can't be built.
-Babel is built for node 0.10 and up but we develop using node 6. Make sure you are on npm 3.
+Babel is built for node 4 and up but we develop using node 6. Make sure you are on npm 3.
You can check this with `node -v` and `npm -v`.
From 2d7703afd972a2168b8b510a8c9af5f2863368b3 Mon Sep 17 00:00:00 2001
From: chico
Date: Wed, 21 Dec 2016 19:14:39 +0300
Subject: [PATCH 020/222] Like was discussed in Slack chat with @ljharb and
@hzoo spaces was added with no particular reason.
https://babeljs.slack.com/archives/discussion/p1481744017001806
I'm still not sure if everything here is correct (for example source maps)
---
.../src/generators/template-literals.js | 2 --
.../templates-indentation/expected.js | 8 ++++----
.../harmony-edgecase/templates/expected.js | 14 +++++++-------
.../expected.js | 2 +-
4 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/packages/babel-generator/src/generators/template-literals.js b/packages/babel-generator/src/generators/template-literals.js
index a8234a00a8..127b64b0cd 100644
--- a/packages/babel-generator/src/generators/template-literals.js
+++ b/packages/babel-generator/src/generators/template-literals.js
@@ -9,9 +9,7 @@ export function TemplateElement(node: Object, parent: Object) {
let value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${");
- if (!isFirst) this.space();
this.token(value);
- if (!isLast) this.space();
}
export function TemplateLiteral(node: Object) {
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates-indentation/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-indentation/expected.js
index 1f664f0ae2..50f361c162 100644
--- a/packages/babel-generator/test/fixtures/harmony-edgecase/templates-indentation/expected.js
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates-indentation/expected.js
@@ -1,15 +1,15 @@
function multilineTemplate() {
return `I'm done reconfoobling
-${ 'the energy motron' }
- ${ '...or whatever' }`;
+${'the energy motron'}
+ ${'...or whatever'}`;
}
{
const foo = `spam
and eggs!`;
- const bar = `${ 4 + 2 }`;
+ const bar = `${4 + 2}`;
const hello = `Hello
-${ 'world' }`;
+${'world'}`;
}
diff --git a/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
index 93ff1e3ebb..476203f277 100644
--- a/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
+++ b/packages/babel-generator/test/fixtures/harmony-edgecase/templates/expected.js
@@ -15,17 +15,17 @@ Is the order a rabbit?
`;
var middles = `
-Is the order ${ order }?
+Is the order ${order}?
`;
var middles = `
-Is the order ${ order }?
+Is the order ${order}?
`;
var middles = `
-1. ${ cocoa }
-2. ${ chino }
-3. ${ rize }
-4. ${ syaro }
-5. ${ chiya }
+1. ${cocoa}
+2. ${chino}
+3. ${rize}
+4. ${syaro}
+5. ${chiya}
`;
diff --git a/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
index 455ed642b5..b1cd86e7e2 100644
--- a/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
+++ b/packages/babel-generator/test/fixtures/types/TemplateLiteral-TaggedTemplateExpression-TemplateElement/expected.js
@@ -3,7 +3,7 @@ html``;
`multi
lines`;
-`test ${ interpolation } test`;
+`test ${interpolation} test`;
`foob
From 07b5b0edf83b2f735564400252c9039322b709b4 Mon Sep 17 00:00:00 2001
From: chico
Date: Wed, 21 Dec 2016 19:28:36 +0300
Subject: [PATCH 021/222] fix one more fixture
---
.../test/fixtures/regression/4403/expected.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js
index dbf2e9bdb1..32e1b04280 100644
--- a/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js
+++ b/packages/babel-plugin-transform-exponentiation-operator/test/fixtures/regression/4403/expected.js
@@ -1,3 +1,3 @@
var a, b;
-var _ref = `${ b++ }`;
+var _ref = `${b++}`;
a[_ref] = Math.pow(a[_ref], 1)
From b583829809e4dc1d6e98299729d9220d6f8473f4 Mon Sep 17 00:00:00 2001
From: Henry Zhu
Date: Thu, 22 Dec 2016 11:06:00 -0500
Subject: [PATCH 022/222] remove plugin links, just use the website [skip ci]
(#5031)
---
README.md | 76 +++++--------------------------------------------------
1 file changed, 6 insertions(+), 70 deletions(-)
diff --git a/README.md b/README.md
index 75bf7a227f..e255712a25 100644
--- a/README.md
+++ b/README.md
@@ -46,8 +46,8 @@ Try it out at our [REPL](https://babeljs.io/repl/#?babili=false&evaluate=true&li
- [Transform Plugins](#transform-plugins)
- [Syntax Plugins](#syntax-plugins)
- [Misc Packages](#misc-packages)
-- [License](#license)
- [Team](#team)
+- [License](#license)
# FAQ
@@ -166,83 +166,16 @@ Plugins are the heart of Babel and what make it work.
#### Transform Plugins
-There are many kinds of plugins: ones that convert ES6/ES2015 to ES5, transform to ES3, minification, JSX, flow, experimental features, and more.
-
-| Package | Version | External Deps |
-|--------|-------|------------|
-| [`babel-plugin-check-es2015-constants`](/packages/babel-plugin-check-es2015-constants) | [](https://www.npmjs.com/package/babel-plugin-check-es2015-constants) | |
-| [`babel-plugin-transform-async-functions`](/packages/babel-plugin-transform-async-functions) | [](https://www.npmjs.com/package/babel-plugin-transform-async-functions) | |
-| [`babel-plugin-transform-async-generator-functions`](/packages/babel-plugin-transform-async-generator-functions) | [](https://www.npmjs.com/package/babel-plugin-transform-async-generator-functions) |
-| [`babel-plugin-transform-async-to-generator`](/packages/babel-plugin-transform-async-to-generator) | [](https://www.npmjs.com/package/babel-plugin-transform-async-to-generator) | |
-| [`babel-plugin-transform-async-to-module-method`](/packages/babel-plugin-transform-async-to-module-method) | [](https://www.npmjs.com/package/babel-plugin-transform-async-to-module-method) | |
-| [`babel-plugin-transform-class-properties`](/packages/babel-plugin-transform-class-properties) | [](https://www.npmjs.com/package/babel-plugin-transform-class-properties) | |
-| [`babel-plugin-transform-decorators`](/packages/babel-plugin-transform-decorators) | [](https://www.npmjs.com/package/babel-plugin-transform-decorators) | |
-| [`babel-plugin-transform-do-expressions`](/packages/babel-plugin-transform-do-expressions) | [](https://www.npmjs.com/package/babel-plugin-transform-do-expressions) | |
-| [`babel-plugin-transform-es2015-arrow-functions`](/packages/babel-plugin-transform-es2015-arrow-functions) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-arrow-functions) | |
-| [`babel-plugin-transform-es2015-block-scoped-functions`](/packages/babel-plugin-transform-es2015-block-scoped-functions) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-block-scoped-functions) | |
-| [`babel-plugin-transform-es2015-block-scoping`](/packages/babel-plugin-transform-es2015-block-scoping) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-block-scoping) | [](https://david-dm.org/babel/babel?path=packages/babel-plugin-transform-es2015-block-scoping) |
-| [`babel-plugin-transform-es2015-classes`](/packages/babel-plugin-transform-es2015-classes) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-classes) | |
-| [`babel-plugin-transform-es2015-computed-properties`](/packages/babel-plugin-transform-es2015-computed-properties) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-computed-properties) | |
-| [`babel-plugin-transform-es2015-destructuring`](/packages/babel-plugin-transform-es2015-destructuring) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-destructuring) | |
-| [`babel-plugin-transform-es2015-duplicate-keys`](/packages/babel-plugin-transform-es2015-duplicate-keys) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-duplicate-keys) | |
-| [`babel-plugin-transform-es2015-for-of`](/packages/babel-plugin-transform-es2015-for-of) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-for-of) | |
-| [`babel-plugin-transform-es2015-function-name`](/packages/babel-plugin-transform-es2015-function-name) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-function-name) | |
-| [`babel-plugin-transform-es2015-instanceof`](/packages/babel-plugin-transform-es2015-instanceof) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-instanceof) | |
-| [`babel-plugin-transform-es2015-literals`](/packages/babel-plugin-transform-es2015-literals) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-literals) | |
-| [`babel-plugin-transform-es2015-modules-amd`](/packages/babel-plugin-transform-es2015-modules-amd) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-modules-amd) | |
-| [`babel-plugin-transform-es2015-modules-commonjs`](/packages/babel-plugin-transform-es2015-modules-commonjs) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-modules-commonjs) | |
-| [`babel-plugin-transform-es2015-modules-systemjs`](/packages/babel-plugin-transform-es2015-modules-systemjs) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-modules-systemjs) | |
-| [`babel-plugin-transform-es2015-modules-umd`](/packages/babel-plugin-transform-es2015-modules-umd) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-modules-umd) | |
-| [`babel-plugin-transform-es2015-object-super`](/packages/babel-plugin-transform-es2015-object-super) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-object-super) | |
-| [`babel-plugin-transform-es2015-parameters`](/packages/babel-plugin-transform-es2015-parameters) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-parameters) | |
-| [`babel-plugin-transform-es2015-shorthand-properties`](/packages/babel-plugin-transform-es2015-shorthand-properties) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-shorthand-properties) | |
-| [`babel-plugin-transform-es2015-spread`](/packages/babel-plugin-transform-es2015-spread) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-spread) | |
-| [`babel-plugin-transform-es2015-sticky-regex`](/packages/babel-plugin-transform-es2015-sticky-regex) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-sticky-regex) | |
-| [`babel-plugin-transform-es2015-template-literals`](/packages/babel-plugin-transform-es2015-template-literals) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-template-literals) | |
-| [`babel-plugin-transform-es2015-typeof-symbol`](/packages/babel-plugin-transform-es2015-typeof-symbol) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-typeof-symbol) | |
-| [`babel-plugin-transform-es2015-unicode-regex`](/packages/babel-plugin-transform-es2015-unicode-regex) | [](https://www.npmjs.com/package/babel-plugin-transform-es2015-unicode-regex) | [](https://david-dm.org/babel/babel?path=packages/babel-plugin-transform-es2015-unicode-regex) |
-| [`babel-plugin-transform-es3-member-expression-literals`](/packages/babel-plugin-transform-es3-member-expression-literals) | [](https://www.npmjs.com/package/babel-plugin-transform-es3-member-expression-literals) | |
-| [`babel-plugin-transform-es3-property-literals`](/packages/babel-plugin-transform-es3-property-literals) | [](https://www.npmjs.com/package/babel-plugin-transform-es3-property-literals) | |
-| [`babel-plugin-transform-es5-property-mutators`](/packages/babel-plugin-transform-es5-property-mutators) | [](https://www.npmjs.com/package/babel-plugin-transform-es5-property-mutators) | |
-| [`babel-plugin-transform-eval`](/packages/babel-plugin-transform-eval) | [](https://www.npmjs.com/package/babel-plugin-transform-eval) | |
-| [`babel-plugin-transform-exponentiation-operator`](/packages/babel-plugin-transform-exponentiation-operator) | [](https://www.npmjs.com/package/babel-plugin-transform-exponentiation-operator) | |
-| [`babel-plugin-transform-export-extensions`](/packages/babel-plugin-transform-export-extensions) | [](https://www.npmjs.com/package/babel-plugin-transform-export-extensions) | |
-| [`babel-plugin-transform-flow-comments`](/packages/babel-plugin-transform-flow-comments) | [](https://www.npmjs.com/package/babel-plugin-transform-flow-comments) | |
-| [`babel-plugin-transform-flow-strip-types`](/packages/babel-plugin-transform-flow-strip-types) | [](https://www.npmjs.com/package/babel-plugin-transform-flow-strip-types) | |
-| [`babel-plugin-transform-function-bind`](/packages/babel-plugin-transform-function-bind) | [](https://www.npmjs.com/package/babel-plugin-transform-function-bind) | |
-| [`babel-plugin-transform-jscript`](/packages/babel-plugin-transform-jscript) | [](https://www.npmjs.com/package/babel-plugin-transform-jscript) | |
-| [`babel-plugin-transform-object-assign`](/packages/babel-plugin-transform-object-assign) | [](https://www.npmjs.com/package/babel-plugin-transform-object-assign) | |
-| [`babel-plugin-transform-object-rest-spread`](/packages/babel-plugin-transform-object-rest-spread) | [](https://www.npmjs.com/package/babel-plugin-transform-object-rest-spread) | |
-| [`babel-plugin-transform-object-set-prototype-of-to-assign`](/packages/babel-plugin-transform-object-set-prototype-of-to-assign) | [](https://www.npmjs.com/package/babel-plugin-transform-object-set-prototype-of-to-assign) | |
-| [`babel-plugin-transform-proto-to-assign`](/packages/babel-plugin-transform-proto-to-assign) | [](https://www.npmjs.com/package/babel-plugin-transform-proto-to-assign) | [](https://david-dm.org/babel/babel?path=packages/babel-plugin-transform-proto-to-assign) |
-| [`babel-plugin-transform-react-constant-elements`](/packages/babel-plugin-transform-react-constant-elements) | [](https://www.npmjs.com/package/babel-plugin-transform-react-constant-elements) | |
-| [`babel-plugin-transform-react-display-name`](/packages/babel-plugin-transform-react-display-name) | [](https://www.npmjs.com/package/babel-plugin-transform-react-display-name) | |
-| [`babel-plugin-transform-react-inline-elements`](/packages/babel-plugin-transform-react-inline-elements) | [](https://www.npmjs.com/package/babel-plugin-transform-react-inline-elements) | |
-| [`babel-plugin-transform-react-jsx`](/packages/babel-plugin-transform-react-jsx) | [](https://www.npmjs.com/package/babel-plugin-transform-react-jsx) | |
-| [`babel-plugin-transform-react-jsx-compat`](/packages/babel-plugin-transform-react-jsx-compat) | [](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-compat) | |
-| [`babel-plugin-transform-react-jsx-self`](/packages/babel-plugin-transform-react-jsx-self) | [](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-self) | |
-| [`babel-plugin-transform-react-jsx-source`](/packages/babel-plugin-transform-react-jsx-source) | [](https://www.npmjs.com/package/babel-plugin-transform-react-jsx-source) | |
-| [`babel-plugin-transform-regenerator`](/packages/babel-plugin-transform-regenerator) | [](https://www.npmjs.com/package/babel-plugin-transform-regenerator) | [](https://david-dm.org/babel/babel?path=packages/babel-plugin-transform-regenerator) |
-| [`babel-plugin-transform-runtime`](/packages/babel-plugin-transform-runtime) | [](https://www.npmjs.com/package/babel-plugin-transform-runtime) | |
-| [`babel-plugin-transform-strict-mode`](/packages/babel-plugin-transform-strict-mode) | [](https://www.npmjs.com/package/babel-plugin-transform-strict-mode) | |
+There are many kinds of plugins: ones that convert ES6/ES2015 to ES5, transform to ES3, minification, JSX, flow, experimental features, and more. Check out our [website for more](http://babeljs.io/docs/plugins/#transform-plugins).
#### Syntax Plugins
-These just enable the transform plugins to be able to parse certain features (the transform plugins already include the syntax plugins so you don't need both): `babel-plugin-syntax-x`.
+These just enable the transform plugins to be able to parse certain features (the transform plugins already include the syntax plugins so you don't need both): `babel-plugin-syntax-x`. Check out our [website for more](http://babeljs.io/docs/plugins/#syntax-plugins).
### Helpers
These are mostly for internal use in various plugins: `babel-helper-x`.
-### Misc Packages
-
-- [`babel`](/packages/babel) the deprecated `babel` package on npm that was used in Babel 5.
-- [`babel-messages`](/packages/babel-messages) a package to keep error messages, etc (not always used)
-
-## License
-
-[MIT](https://github.com/babel/babel/blob/master/LICENSE)
-
## Team
### Core members
@@ -275,3 +208,6 @@ Amjad Masad | James Kyle | Jesse McCarthy | Sebastian McKenzie |
[@amasad](https://github.com/amasad) | [@thejameskyle](https://github.com/thejameskyle) | [@jmm](https://github.com/jmm) | [@sebmck](https://twitter.com/sebmck) |
| [@amasad](https://twitter.com/amasad) | [@thejameskyle](https://twitter.com/thejameskyle) | [@mccjm](https://twitter.com/mccjm) | [@kittens](https://github.com/kittens)
+## License
+
+[MIT](https://github.com/babel/babel/blob/master/LICENSE)
From b2e6926042751f63ec51fe23f2e64c32680405f5 Mon Sep 17 00:00:00 2001
From: Janus Troelsen
Date: Thu, 22 Dec 2016 23:57:53 +0100
Subject: [PATCH 023/222] Upgrade glob to v7 (#5027)
---
packages/babel-cli/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-cli/package.json b/packages/babel-cli/package.json
index 9dfdd70124..1fbe3bebd8 100644
--- a/packages/babel-cli/package.json
+++ b/packages/babel-cli/package.json
@@ -14,7 +14,7 @@
"commander": "^2.8.1",
"convert-source-map": "^1.1.0",
"fs-readdir-recursive": "^1.0.0",
- "glob": "^5.0.5",
+ "glob": "^7.0.0",
"lodash": "^4.2.0",
"output-file-sync": "^1.1.0",
"path-is-absolute": "^1.0.0",
From 8b25e215207b3788cc1c9bb94d6ef2a452682360 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sun, 25 Dec 2016 20:54:20 +0100
Subject: [PATCH 024/222] build: remove Circle CI
---
circle.yml | 8 --------
1 file changed, 8 deletions(-)
delete mode 100644 circle.yml
diff --git a/circle.yml b/circle.yml
deleted file mode 100644
index 8aa7e6da90..0000000000
--- a/circle.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-machine:
- node:
- version:
- 0.10.46
-
-test:
- override:
- - make test-ci
From 90279f102f2b4b6972f26b858e5faae4783117f2 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sun, 25 Dec 2016 20:54:38 +0100
Subject: [PATCH 025/222] docs: remove compiler support for 0.10
---
doc/design/compiler-environment-support.md | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/doc/design/compiler-environment-support.md b/doc/design/compiler-environment-support.md
index 77c01b0878..30b016cb15 100644
--- a/doc/design/compiler-environment-support.md
+++ b/doc/design/compiler-environment-support.md
@@ -2,12 +2,12 @@
**NOTE:** Compiler support does not dictate the runtime requirements of compiled code.
-## Supported environments
+## Officially supported environments
The Babel compiler is **only** supported in these environments:
- Modern browsers such as Chrome, Firefox, Safari, Edge etc.
- - Node 0.10+
+ - Node 4
## Unsupported environments
From b1635f8c05084a0093f5c55c6d6ece9ff632b6d0 Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Tue, 27 Dec 2016 08:30:14 -0600
Subject: [PATCH 026/222] Fix some README links [skip ci] (#5045)
---
packages/babel-plugin-check-es2015-constants/README.md | 2 +-
.../babel-plugin-transform-es2015-modules-umd/README.md | 2 +-
.../babel-plugin-transform-es2015-typeof-symbol/README.md | 2 +-
packages/babel-register/README.md | 7 +++++--
4 files changed, 8 insertions(+), 5 deletions(-)
diff --git a/packages/babel-plugin-check-es2015-constants/README.md b/packages/babel-plugin-check-es2015-constants/README.md
index ee85b823e7..608891b3d2 100644
--- a/packages/babel-plugin-check-es2015-constants/README.md
+++ b/packages/babel-plugin-check-es2015-constants/README.md
@@ -56,4 +56,4 @@ require("babel-core").transform("code", {
## Note
-This check will only validate consts. If you need it to compile down to `var` then you must also install and enable [`transform-es2015-block-scoping`](../babel-plugin-transform-es2015-block-scoping).
+This check will only validate consts. If you need it to compile down to `var` then you must also install and enable [`transform-es2015-block-scoping`](http://babeljs.io/docs/plugins/transform-es2015-block-scoping/).
diff --git a/packages/babel-plugin-transform-es2015-modules-umd/README.md b/packages/babel-plugin-transform-es2015-modules-umd/README.md
index 31fc415480..fe32773781 100644
--- a/packages/babel-plugin-transform-es2015-modules-umd/README.md
+++ b/packages/babel-plugin-transform-es2015-modules-umd/README.md
@@ -110,7 +110,7 @@ factory(global.fooBAR, global.fooBAR);
because again the transform is only using the basename of the import.
_Second_, the specified override will still be passed to the `toIdentifier`
-function in [babel-types/src/converters](../babel-types/src/converters.js).
+function in [babel-types/src/converters](https://github.com/babel/babel/blob/master/packages/babel-types/src/converters.js).
This means that if you specify an override as a member expression like:
```json
diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/README.md b/packages/babel-plugin-transform-es2015-typeof-symbol/README.md
index 53b9236ab3..92a7d2d61c 100644
--- a/packages/babel-plugin-transform-es2015-typeof-symbol/README.md
+++ b/packages/babel-plugin-transform-es2015-typeof-symbol/README.md
@@ -1,6 +1,6 @@
# babel-plugin-transform-es2015-typeof-symbol
-> ES6 introduces a new native type called [symbols](http://babeljs.io/docs/learn-es6#symbols). This transformer wraps all `typeof` expressions with a method that replicates native behaviour. (ie. returning "symbol" for symbols)
+> ES6 introduces a new native type called [symbols](https://babeljs.io/learn-es2015/#ecmascript-2015-features-symbols). This transformer wraps all `typeof` expressions with a method that replicates native behaviour. (ie. returning "symbol" for symbols)
## Example
diff --git a/packages/babel-register/README.md b/packages/babel-register/README.md
index 0abbe9b81f..2f05d6a7f7 100644
--- a/packages/babel-register/README.md
+++ b/packages/babel-register/README.md
@@ -25,7 +25,8 @@ and `.js` will be transformed by Babel.
Polyfill not included
- You must include the polyfill separately when using features that require it, like generators.
+ You must include the polyfill separately
+ when using features that require it, like generators.
@@ -69,7 +70,9 @@ require("babel-register")({
});
```
-You can pass in all other [options](/docs/usage/options/#options) as well, including `plugins` and `presets`. But note that the closest [`.babelrc`](/docs/usage/babelrc/) to each file still applies, and takes precedence over any options you pass in here.
+You can pass in all other [options](https://babeljs.io/docs/usage/api/#options) as well,
+including `plugins` and `presets`. But note that the closest [`.babelrc`](https://babeljs.io/docs/usage/babelrc/)
+to each file still applies, and takes precedence over any options you pass in here.
## Environment variables
From 438c872e64b0d611a65c171e08c55e0ac4744c32 Mon Sep 17 00:00:00 2001
From: gitanupam
Date: Wed, 28 Dec 2016 16:24:00 +0530
Subject: [PATCH 027/222] Adding more info to the Install section
It was confusing to see the Install command for babel-present-react again when the earlier command to install CLI also included babel-preset-react. Hence the edit.
---
packages/babel-preset-react/README.md | 2 ++
1 file changed, 2 insertions(+)
diff --git a/packages/babel-preset-react/README.md b/packages/babel-preset-react/README.md
index 827160b246..57a51b2984 100644
--- a/packages/babel-preset-react/README.md
+++ b/packages/babel-preset-react/README.md
@@ -4,6 +4,8 @@
## Install
+(Note: Run the following command to install without the CLI (for example, if CLI is already installed))
+
```sh
npm install --save-dev babel-preset-react
```
From fbeadc46eac3cba7eb7dc312d9fd9bb8f2440786 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Wed, 28 Dec 2016 21:49:40 +0100
Subject: [PATCH 028/222] [skip ci] merge documentation with the website
---
packages/babel-preset-react/README.md | 34 +++++++++++++++++++++++++--
1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/packages/babel-preset-react/README.md b/packages/babel-preset-react/README.md
index 57a51b2984..aceb108aff 100644
--- a/packages/babel-preset-react/README.md
+++ b/packages/babel-preset-react/README.md
@@ -2,12 +2,42 @@
> Babel preset for all React plugins.
+This preset includes the following plugins:
+
+- [syntax-flow](https://babeljs.io/docs/plugins/syntax-flow/)
+- [syntax-jsx](https://babeljs.io/docs/plugins/syntax-jsx/)
+- [transform-flow-strip-types](https://babeljs.io/docs/plugins/transform-flow-strip-types/)
+- [transform-react-jsx](https://babeljs.io/docs/plugins/transform-react-jsx/)
+- [transform-react-display-name](https://babeljs.io/docs/plugins/transform-react-display-name/)
+
## Install
-(Note: Run the following command to install without the CLI (for example, if CLI is already installed))
+> You can also check out the React [Getting Started page](https://facebook.github.io/react/docs/hello-world.html)
+
+> For more info, check out the setup page on the [cli](/docs/setup/) and the [usage](/docs/usage/cli/) docs.
+
+Install the CLI and this preset
```sh
-npm install --save-dev babel-preset-react
+npm install --save-dev babel-cli babel-preset-react
+```
+
+Make a .babelrc config file with the preset
+
+```sh
+echo '{ "presets": ["react"] }' > .babelrc
+```
+
+Create a file to run on
+
+```sh
+echo '
Hello, world!
' > index.js
+```
+
+View the output
+
+```sh
+./node_modules/.bin/babel index.js
```
## Usage
From 39cda64fe2d351bfd2c53d9b28ee82f8b7a0d353 Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sun, 1 Jan 2017 14:59:50 +0100
Subject: [PATCH 029/222] docs: [skip ci] incorrect snippet language (#5059)
---
packages/babel-helpers/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-helpers/README.md b/packages/babel-helpers/README.md
index 5a57c5d46a..2614f1160e 100644
--- a/packages/babel-helpers/README.md
+++ b/packages/babel-helpers/README.md
@@ -4,7 +4,7 @@
## Install
-```js
+```sh
npm install --save-dev babel-helpers
```
From f611cab0f517351e8862581e483ba44a77dcc611 Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Mon, 2 Jan 2017 02:01:08 -0600
Subject: [PATCH 030/222] Fix some doc lint issues (#5061)
* Remove duplicate usage section from transform-es2015-classes [skip ci]
* Fix doc lint issue with transform-function-bind [skip ci]
---
.../README.md | 22 -------------------
.../README.md | 2 +-
2 files changed, 1 insertion(+), 23 deletions(-)
diff --git a/packages/babel-plugin-transform-es2015-classes/README.md b/packages/babel-plugin-transform-es2015-classes/README.md
index aa68fde1ca..e115f62cfa 100644
--- a/packages/babel-plugin-transform-es2015-classes/README.md
+++ b/packages/babel-plugin-transform-es2015-classes/README.md
@@ -79,25 +79,3 @@ class Bar extends Foo {
When `Bar.prototype.foo` is defined it triggers the setter on `Foo`. This is a
case that is very unlikely to appear in production code however it's something
to keep in mind.
-
-## Usage
-
-### Via `.babelrc` (Recommended)
-
-**.babelrc**
-
-```js
-// without options
-{
- "plugins": ["transform-es2015-classes"]
-}
-
-// with options
-{
- "plugins": [
- ["transform-es2015-classes", {
- "loose": true
- }]
- ]
-}
-```
diff --git a/packages/babel-plugin-transform-function-bind/README.md b/packages/babel-plugin-transform-function-bind/README.md
index 8e11aeae86..0de2810294 100644
--- a/packages/babel-plugin-transform-function-bind/README.md
+++ b/packages/babel-plugin-transform-function-bind/README.md
@@ -117,4 +117,4 @@ require("babel-core").transform("code", {
## References
* [Proposal](https://github.com/zenparsing/es-function-bind)
-* [Babel Blog: Function Bind Syntax](/blog/2015/05/14/function-bind)
\ No newline at end of file
+* [Babel Blog: Function Bind Syntax](/blog/2015/05/14/function-bind)
From 2a8d3173d3530963293fe59b08ae36cb867a0253 Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Thu, 5 Jan 2017 07:16:35 -0600
Subject: [PATCH 031/222] Remove unused define-map helper from
computed-properties (#5053)
---
.../package.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/packages/babel-plugin-transform-es2015-computed-properties/package.json b/packages/babel-plugin-transform-es2015-computed-properties/package.json
index e86661c43c..62deca861f 100644
--- a/packages/babel-plugin-transform-es2015-computed-properties/package.json
+++ b/packages/babel-plugin-transform-es2015-computed-properties/package.json
@@ -9,7 +9,6 @@
"babel-plugin"
],
"dependencies": {
- "babel-helper-define-map": "^6.8.0",
"babel-template": "^6.8.0",
"babel-runtime": "^6.0.0"
},
From 796c6c07632f93b15e7481cca42b2751e1129205 Mon Sep 17 00:00:00 2001
From: Andres Suarez
Date: Thu, 5 Jan 2017 08:17:16 -0500
Subject: [PATCH 032/222] Remove unused dependency (#5038)
---
packages/babel-plugin-transform-decorators/package.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/packages/babel-plugin-transform-decorators/package.json b/packages/babel-plugin-transform-decorators/package.json
index 05b2e6e480..f8f1b5c5ca 100644
--- a/packages/babel-plugin-transform-decorators/package.json
+++ b/packages/babel-plugin-transform-decorators/package.json
@@ -10,7 +10,6 @@
],
"dependencies": {
"babel-types": "^6.13.0",
- "babel-helper-define-map": "^6.8.0",
"babel-plugin-syntax-decorators": "^6.13.0",
"babel-helper-explode-class": "^6.8.0",
"babel-template": "^6.8.0",
From 3ef99d1467fc456c08b296708e625b77cbb6fe2a Mon Sep 17 00:00:00 2001
From: Andrii Bida
Date: Thu, 5 Jan 2017 22:43:26 +0200
Subject: [PATCH 033/222] Fix typo in README.md (#5070)
Minor typo fix: added the missing space.
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index e255712a25..00afe123e6 100644
--- a/README.md
+++ b/README.md
@@ -71,7 +71,7 @@ https://phabricator.babeljs.io/T2168 mostly corresponds to https://github.com/ba
## Want to report an issue with [babeljs.io](https://babeljs.io) (the website)?
-For documentation and website issues please visit the [babel/babel.github.io](https://github.com/babel/babel.github.io)repo.
+For documentation and website issues please visit the [babel/babel.github.io](https://github.com/babel/babel.github.io) repo.
## Want to contribute to Babel?
From d1cd179c457fcbd5f3396dcc077df062b751f259 Mon Sep 17 00:00:00 2001
From: Anthony Zotti
Date: Thu, 5 Jan 2017 13:12:12 -0800
Subject: [PATCH 034/222] Update LICENSE (#5058)
---
LICENSE | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/LICENSE b/LICENSE
index 6a5e2b14bd..d6b2e00435 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2014-2016 Sebastian McKenzie
+Copyright (c) 2014-2017 Sebastian McKenzie
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
From de1a76413fce425fca48a736cdba997f592c44ad Mon Sep 17 00:00:00 2001
From: Karsten Gohm
Date: Mon, 9 Jan 2017 15:02:19 +0100
Subject: [PATCH 035/222] Static function call result comment does not match
variable content (#5077)
static staticProperty, defined in line 18, value is 'babeliscool' but comment on line 33 the given sample output is 'babelIsCool'.
this commit fixes this inconsistency
---
packages/babel-plugin-transform-class-properties/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-plugin-transform-class-properties/README.md b/packages/babel-plugin-transform-class-properties/README.md
index a4c7ea02c0..9dbe559082 100644
--- a/packages/babel-plugin-transform-class-properties/README.md
+++ b/packages/babel-plugin-transform-class-properties/README.md
@@ -15,7 +15,7 @@ Below is a class with four class properties which will be transformed.
}
//Static class properties
- static staticProperty = "babeliscool";
+ static staticProperty = "babelIsCool";
static staticFunction = function() {
return Bork.staticProperty;
}
From dc617129f63ca513a18c4f9922518a33dca63e92 Mon Sep 17 00:00:00 2001
From: Daniel Tschinder
Date: Mon, 9 Jan 2017 15:05:23 +0100
Subject: [PATCH 036/222] Optimize removal-hooks for ArrowFunctions (#5076)
---
packages/babel-traverse/package.json | 3 ++
.../src/path/lib/removal-hooks.js | 9 +----
packages/babel-traverse/test/removal.js | 34 +++++++++++++++++++
3 files changed, 38 insertions(+), 8 deletions(-)
create mode 100644 packages/babel-traverse/test/removal.js
diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json
index f88baac088..cca9351535 100644
--- a/packages/babel-traverse/package.json
+++ b/packages/babel-traverse/package.json
@@ -17,5 +17,8 @@
"globals": "^9.0.0",
"invariant": "^2.2.0",
"lodash": "^4.2.0"
+ },
+ "devDependencies": {
+ "babel-generator": "^6.21.0"
}
}
diff --git a/packages/babel-traverse/src/path/lib/removal-hooks.js b/packages/babel-traverse/src/path/lib/removal-hooks.js
index e016c712f3..07cc98ab46 100644
--- a/packages/babel-traverse/src/path/lib/removal-hooks.js
+++ b/packages/babel-traverse/src/path/lib/removal-hooks.js
@@ -5,13 +5,6 @@
*/
export let hooks = [
- function (self, parent) {
- if (self.key === "body" && parent.isArrowFunctionExpression()) {
- self.replaceWith(self.scope.buildUndefinedNode());
- return true;
- }
- },
-
function (self, parent) {
let removeParent = false;
@@ -69,7 +62,7 @@ export let hooks = [
function (self, parent) {
if (
(parent.isIfStatement() && (self.key === "consequent" || self.key === "alternate")) ||
- (parent.isLoop() && self.key === "body")
+ (self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression()))
) {
self.replaceWith({
type: "BlockStatement",
diff --git a/packages/babel-traverse/test/removal.js b/packages/babel-traverse/test/removal.js
new file mode 100644
index 0000000000..d09091db0e
--- /dev/null
+++ b/packages/babel-traverse/test/removal.js
@@ -0,0 +1,34 @@
+import traverse from "../lib";
+import assert from "assert";
+import { parse } from "babylon";
+import generate from "babel-generator";
+
+function getPath(code) {
+ const ast = parse(code);
+ let path;
+ traverse(ast, {
+ Program: function (_path) {
+ path = _path;
+ _path.stop();
+ }
+ });
+
+ return path;
+}
+
+function generateCode(path) {
+ return generate(path.node).code;
+}
+
+describe("removal", function () {
+ describe("ArrowFunction", function () {
+ it("remove body", function () {
+ const rootPath = getPath("x = () => b;");
+ const path = rootPath.get("body")[0].get("expression").get("right");
+ const body = path.get("body");
+ body.remove();
+
+ assert.equal(generateCode(rootPath), "x = () => {};", "body should be replaced with BlockStatement");
+ });
+ });
+});
From 39d18679e1e6f50b7141473d9bf404c0e73bb8fd Mon Sep 17 00:00:00 2001
From: Ryan Tsao
Date: Mon, 9 Jan 2017 06:08:07 -0800
Subject: [PATCH 037/222] Fix getBindingIdentifiers in babel-types (#5068)
* Added getBindingIdentifier tests
* Added failing test for getBindingIdentifiers
* Fix babel-types getBindingIdentifiers
---
packages/babel-types/src/retrievers.js | 4 ++--
packages/babel-types/test/retrievers.js | 27 +++++++++++++++++++++++++
2 files changed, 29 insertions(+), 2 deletions(-)
create mode 100644 packages/babel-types/test/retrievers.js
diff --git a/packages/babel-types/src/retrievers.js b/packages/babel-types/src/retrievers.js
index 12bba815b0..c4d7647b4a 100644
--- a/packages/babel-types/src/retrievers.js
+++ b/packages/babel-types/src/retrievers.js
@@ -29,8 +29,8 @@ export function getBindingIdentifiers(
}
if (t.isExportDeclaration(id)) {
- if (t.isDeclaration(node.declaration)) {
- search.push(node.declaration);
+ if (t.isDeclaration(id.declaration)) {
+ search.push(id.declaration);
}
continue;
}
diff --git a/packages/babel-types/test/retrievers.js b/packages/babel-types/test/retrievers.js
new file mode 100644
index 0000000000..68eb34c4f3
--- /dev/null
+++ b/packages/babel-types/test/retrievers.js
@@ -0,0 +1,27 @@
+import * as t from "../lib";
+import assert from "assert";
+import { parse } from "babylon";
+
+function getBody(program) {
+ return parse(program, {sourceType: "module"}).program.body;
+}
+
+describe("retrievers", function () {
+ describe("getBindingIdentifiers", function () {
+ it("variable declarations", function () {
+ const program = "var a = 1; let b = 2; const c = 3;";
+ const ids = t.getBindingIdentifiers(getBody(program));
+ assert.deepEqual(Object.keys(ids), ["a", "b", "c"]);
+ });
+ it("function declarations", function () {
+ const program = "var foo = 1; function bar() { var baz = 2; }";
+ const ids = t.getBindingIdentifiers(getBody(program));
+ assert.deepEqual(Object.keys(ids), ["bar", "foo"]);
+ });
+ it("export named declarations", function () {
+ const program = "export const foo = 'foo';";
+ const ids = t.getBindingIdentifiers(getBody(program));
+ assert.deepEqual(Object.keys(ids), ["foo"]);
+ });
+ });
+});
From a749907bc2cfd757d2e23922f7952ab79fce2b51 Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Wed, 11 Jan 2017 09:23:21 -0600
Subject: [PATCH 038/222] Ensure array is always copied during destructure
---
.../src/index.js | 5 +----
.../test/fixtures/destructuring/issue-5090/exec.js | 9 +++++++++
2 files changed, 10 insertions(+), 4 deletions(-)
create mode 100644 packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
diff --git a/packages/babel-plugin-transform-es2015-destructuring/src/index.js b/packages/babel-plugin-transform-es2015-destructuring/src/index.js
index 3fe8c9fd3b..b82ac321dd 100644
--- a/packages/babel-plugin-transform-es2015-destructuring/src/index.js
+++ b/packages/babel-plugin-transform-es2015-destructuring/src/index.js
@@ -294,10 +294,7 @@ export default function ({ types: t }) {
if (t.isRestElement(elem)) {
elemRef = this.toArray(arrayRef);
-
- if (i > 0) {
- elemRef = t.callExpression(t.memberExpression(elemRef, t.identifier("slice")), [t.numericLiteral(i)]);
- }
+ elemRef = t.callExpression(t.memberExpression(elemRef, t.identifier("slice")), [t.numericLiteral(i)]);
// set the element to the rest element argument since we've dealt with it
// being a rest already
diff --git a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
new file mode 100644
index 0000000000..d295a9c9f6
--- /dev/null
+++ b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
@@ -0,0 +1,9 @@
+const assign = ([...arr], index, value) => {
+ arr[index] = value;
+ return arr;
+}
+
+const arr = [1, 2, 3];
+assign(arr, 1, 42);
+
+assert.deepEqual(arr, [1, 2, 3]);
From 46d9339488829e482ec7190eed7e64ae8935dcb1 Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Wed, 11 Jan 2017 17:12:09 -0600
Subject: [PATCH 039/222] arrow
---
.../test/fixtures/destructuring/issue-5090/exec.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
index d295a9c9f6..b7727da604 100644
--- a/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
+++ b/packages/babel-plugin-transform-es2015-destructuring/test/fixtures/destructuring/issue-5090/exec.js
@@ -1,4 +1,4 @@
-const assign = ([...arr], index, value) => {
+const assign = function([...arr], index, value) {
arr[index] = value;
return arr;
}
From 3a1c0c84fb3f54dcfd4c472e6d4ec4b0175b400c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9rgio=20Batista?=
Date: Fri, 13 Jan 2017 15:16:07 +0100
Subject: [PATCH 040/222] Fix broken repository url (#5100)
---
packages/babel-plugin-transform-react-jsx/package.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/packages/babel-plugin-transform-react-jsx/package.json b/packages/babel-plugin-transform-react-jsx/package.json
index c80e86560f..fd57cffaa3 100644
--- a/packages/babel-plugin-transform-react-jsx/package.json
+++ b/packages/babel-plugin-transform-react-jsx/package.json
@@ -2,7 +2,7 @@
"name": "babel-plugin-transform-react-jsx",
"version": "6.8.0",
"description": "Turn JSX into React function calls",
- "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-jsx",
+ "repository": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx",
"license": "MIT",
"main": "lib/index.js",
"keywords": [
From d2113d4881371e410ad434cad4167e2d3b9da0dd Mon Sep 17 00:00:00 2001
From: Simon Lydell
Date: Fri, 13 Jan 2017 18:11:44 +0100
Subject: [PATCH 041/222] babel-code-frame: Upgrade to js-tokens@3 (#5094)
That version brings a big performance boost.
---
packages/babel-code-frame/package.json | 2 +-
packages/babel-code-frame/src/index.js | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/packages/babel-code-frame/package.json b/packages/babel-code-frame/package.json
index f480727283..82b2bcdc10 100644
--- a/packages/babel-code-frame/package.json
+++ b/packages/babel-code-frame/package.json
@@ -10,6 +10,6 @@
"dependencies": {
"chalk": "^1.1.0",
"esutils": "^2.0.2",
- "js-tokens": "^2.0.0"
+ "js-tokens": "^3.0.0"
}
}
diff --git a/packages/babel-code-frame/src/index.js b/packages/babel-code-frame/src/index.js
index 05637e9e40..1e570ab692 100644
--- a/packages/babel-code-frame/src/index.js
+++ b/packages/babel-code-frame/src/index.js
@@ -1,4 +1,4 @@
-import jsTokens from "js-tokens";
+import jsTokens, {matchToToken} from "js-tokens";
import esutils from "esutils";
import Chalk from "chalk";
@@ -47,7 +47,7 @@ const BRACKET = /^[()\[\]{}]$/;
function getTokenType(match) {
let [offset, text] = match.slice(-2);
- let token = jsTokens.matchToToken(match);
+ let token = matchToToken(match);
if (token.type === "name") {
if (esutils.keyword.isReservedWordES6(token.value)) {
From b820d8ebc9e2f39daad2048cd5329dba09382bb4 Mon Sep 17 00:00:00 2001
From: Jeff Morrison
Date: Sat, 24 Dec 2016 17:30:13 -0600
Subject: [PATCH 042/222] Strip Flow's new shorthand import-type specifiers
---
.../fixtures/strip-types/strip-type-annotations/actual.js | 4 ++++
.../fixtures/strip-types/strip-type-annotations/expected.js | 5 +++++
packages/babel-traverse/package.json | 2 +-
packages/babel-traverse/src/path/lib/virtual-types.js | 4 +++-
4 files changed, 13 insertions(+), 2 deletions(-)
diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/actual.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/actual.js
index 36cfd7f425..f602db2cbc 100644
--- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/actual.js
+++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/actual.js
@@ -97,5 +97,9 @@ import type2, { foo3 } from "bar";
import type * as namespace from "bar";
export type { foo };
export type { foo2 } from "bar";
+import {type T} from "foo";
+import {type T2, V1} from "foo";
+import {typeof V2} from "foo";
+import {typeof V3, V4} from "foo";
export interface foo5 { p: number }
export interface foo6 { p: T }
diff --git a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/expected.js b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/expected.js
index 62bf507aae..a6c982a6a3 100644
--- a/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/expected.js
+++ b/packages/babel-plugin-transform-flow-strip-types/test/fixtures/strip-types/strip-type-annotations/expected.js
@@ -90,3 +90,8 @@ var identity;
import type from "foo";
import type2, { foo3 } from "bar";
+
+import "foo";
+import { V1 } from "foo";
+import "foo";
+import { V4 } from "foo";
diff --git a/packages/babel-traverse/package.json b/packages/babel-traverse/package.json
index cca9351535..b42120c302 100644
--- a/packages/babel-traverse/package.json
+++ b/packages/babel-traverse/package.json
@@ -12,7 +12,7 @@
"babel-messages": "^6.8.0",
"babel-runtime": "^6.20.0",
"babel-types": "^6.21.0",
- "babylon": "^6.11.0",
+ "babylon": "^6.15.0",
"debug": "^2.2.0",
"globals": "^9.0.0",
"invariant": "^2.2.0",
diff --git a/packages/babel-traverse/src/path/lib/virtual-types.js b/packages/babel-traverse/src/path/lib/virtual-types.js
index 396be80b90..fec4dea2ef 100644
--- a/packages/babel-traverse/src/path/lib/virtual-types.js
+++ b/packages/babel-traverse/src/path/lib/virtual-types.js
@@ -105,7 +105,7 @@ export let Pure = {
};
export let Flow = {
- types: ["Flow", "ImportDeclaration", "ExportDeclaration"],
+ types: ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"],
checkPath({ node }: NodePath): boolean {
if (t.isFlow(node)) {
return true;
@@ -113,6 +113,8 @@ export let Flow = {
return node.importKind === "type" || node.importKind === "typeof";
} else if (t.isExportDeclaration(node)) {
return node.exportKind === "type";
+ } else if (t.isImportSpecifier(node)) {
+ return node.importKind === "type" || node.importKind === "typeof";
} else {
return false;
}
From 761079fac0e6b76e359824706f2e6f41f3f4e97b Mon Sep 17 00:00:00 2001
From: Brian Ng
Date: Fri, 13 Jan 2017 19:23:13 -0600
Subject: [PATCH 043/222] Add examples to computed-props and for-of READMEs
[skip ci] (#5096)
---
.../README.md | 77 ++++++++++++++++-
.../README.md | 83 +++++++++++++------
2 files changed, 133 insertions(+), 27 deletions(-)
diff --git a/packages/babel-plugin-transform-es2015-computed-properties/README.md b/packages/babel-plugin-transform-es2015-computed-properties/README.md
index db0e270a38..573996ff5b 100644
--- a/packages/babel-plugin-transform-es2015-computed-properties/README.md
+++ b/packages/babel-plugin-transform-es2015-computed-properties/README.md
@@ -2,6 +2,49 @@
> Compile ES2015 computed properties to ES5
+## Example
+
+**In**
+
+```js
+var obj = {
+ ["x" + foo]: "heh",
+ ["y" + bar]: "noo",
+ foo: "foo",
+ bar: "bar"
+};
+```
+
+**Out**
+
+```js
+var _obj;
+
+function _defineProperty(obj, key, value) {
+ if (key in obj) {
+ Object.defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+}
+
+var obj = (
+ _obj = {},
+ _defineProperty(_obj, "x" + foo, "heh"),
+ _defineProperty(_obj, "y" + bar, "noo"),
+ _defineProperty(_obj, "foo", "foo"),
+ _defineProperty(_obj, "bar", "bar"),
+ _obj
+);
+```
+
## Installation
```sh
@@ -46,6 +89,38 @@ require("babel-core").transform("code", {
## Options
-* `loose` - Just like method assignment in classes, in loose mode, computed property names
+### `loose`
+
+`boolean`, defaults to `false`
+
+Just like method assignment in classes, in loose mode, computed property names
use simple assignments instead of being defined. This is unlikely to be an issue
in production code.
+
+#### Example
+
+***In***
+
+```js
+var obj = {
+ ["x" + foo]: "heh",
+ ["y" + bar]: "noo",
+ foo: "foo",
+ bar: "bar"
+};
+```
+
+***Out***
+
+```js
+var _obj;
+
+var obj = (
+ _obj = {},
+ _obj["x" + foo] = "heh",
+ _obj["y" + bar] = "noo",
+ _obj.foo = "foo",
+ _obj.bar = "bar",
+ _obj
+);
+```
diff --git a/packages/babel-plugin-transform-es2015-for-of/README.md b/packages/babel-plugin-transform-es2015-for-of/README.md
index 22aae1b1a0..7aff9a00f2 100644
--- a/packages/babel-plugin-transform-es2015-for-of/README.md
+++ b/packages/babel-plugin-transform-es2015-for-of/README.md
@@ -2,6 +2,41 @@
> Compile ES2015 for...of to ES5
+## Example
+
+**In**
+
+```js
+for (var i of foo) {}
+```
+
+**Out**
+
+```js
+var _iteratorNormalCompletion = true;
+var _didIteratorError = false;
+var _iteratorError = undefined;
+
+try {
+ for (var _iterator = foo[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
+ var i = _step.value;
+ }
+} catch (err) {
+ _didIteratorError = true;
+ _iteratorError = err;
+} finally {
+ try {
+ if (!_iteratorNormalCompletion && _iterator.return) {
+ _iterator.return();
+ }
+ } finally {
+ if (_didIteratorError) {
+ throw _iteratorError;
+ }
+ }
+}
+```
+
## Installation
```sh
@@ -44,52 +79,48 @@ require("babel-core").transform("code", {
});
```
-## Options `loose`
+## Options
-#### Abrupt completions
+### `loose`
-In loose mode an iterators `return` method will not be called on abrupt completions caused by thrown errors.
+`boolean`, defaults to `false`
-Please see [google/traceur-compiler#1773](https://github.com/google/traceur-compiler/issues/1773) and
-[babel/babel#838](https://github.com/babel/babel/issues/838) for more information.
+In loose mode, arrays are put in a fast path, thus heavily increasing performance.
+All other iterables will continue to work fine.
-#### Arrays
+#### Example
-Under loose mode the `forOf` transformer will output more verbose iteration code.
+**In**
-For example the following:
-
-```javascript
+```js
for (var i of foo) {}
```
-is normally output as:
+**Out**
-```javascript
-for (var _iterator = foo[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {
- var i = _step.value;
-}
-```
-
-Under loose mode however it's output as:
-
-```javascript
+```js
for (var _iterator = foo, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var i;
+ var _ref;
+
if (_isArray) {
if (_i >= _iterator.length) break;
- i = _iterator[_i++];
+ _ref = _iterator[_i++];
} else {
_i = _iterator.next();
if (_i.done) break;
- i = _i.value;
+ _ref = _i.value;
}
+
+ var i = _ref;
}
```
-The result is that arrays are put in a fast path, heavily increasing performance.
-All other iterables will continue to work fine but array iteration will be
-significantly faster.
+#### Abrupt completions
+
+In loose mode an iterator's `return` method will not be called on abrupt completions caused by thrown errors.
+
+Please see [google/traceur-compiler#1773](https://github.com/google/traceur-compiler/issues/1773) and
+[babel/babel#838](https://github.com/babel/babel/issues/838) for more information.
### Optimization
From 80a757819f0697b86d37c3f8f0521b3fc894a289 Mon Sep 17 00:00:00 2001
From: Logan Smyth
Date: Fri, 13 Jan 2017 22:13:27 -0800
Subject: [PATCH 044/222] Validate importKind and ensure code generation
exists.
---
packages/babel-generator/src/generators/modules.js | 5 +++++
.../test/fixtures/flow/type-annotations/actual.js | 4 ++++
.../test/fixtures/flow/type-annotations/expected.js | 4 ++++
packages/babel-types/src/definitions/es2015.js | 4 ++++
4 files changed, 17 insertions(+)
diff --git a/packages/babel-generator/src/generators/modules.js b/packages/babel-generator/src/generators/modules.js
index 6a87a02512..f92ed919e4 100644
--- a/packages/babel-generator/src/generators/modules.js
+++ b/packages/babel-generator/src/generators/modules.js
@@ -1,6 +1,11 @@
import * as t from "babel-types";
export function ImportSpecifier(node: Object) {
+ if (node.importKind === "type" || node.importKind === "typeof") {
+ this.word(node.importKind);
+ this.space();
+ }
+
this.print(node.imported, node);
if (node.local && node.local.name !== node.imported.name) {
this.space();
diff --git a/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js b/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
index 2690152d34..d252ef635a 100644
--- a/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
+++ b/packages/babel-generator/test/fixtures/flow/type-annotations/actual.js
@@ -97,6 +97,10 @@ import type { foo as bar } from "baz";
import type from "foo";
import type, { foo } from "bar";
import type * as namespace from "bar";
+import { type Foo } from "bar";
+import { typeof Foo } from "bar";
+import { type Foo as Bar } from "bar";
+import { typeof Foo as Bar } from "bar";
export type { foo };
export type { bar } from "bar";
export interface baz { p: number };
diff --git a/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js b/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
index 7a9406eaa3..205513cb00 100644
--- a/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
+++ b/packages/babel-generator/test/fixtures/flow/type-annotations/expected.js
@@ -101,6 +101,10 @@ import type { foo as bar } from "baz";
import type from "foo";
import type, { foo } from "bar";
import type * as namespace from "bar";
+import { type Foo } from "bar";
+import { typeof Foo } from "bar";
+import { type Foo as Bar } from "bar";
+import { typeof Foo as Bar } from "bar";
export type { foo };
export type { bar } from "bar";
export interface baz { p: number };
diff --git a/packages/babel-types/src/definitions/es2015.js b/packages/babel-types/src/definitions/es2015.js
index 4f4ff0807c..820ddcf238 100644
--- a/packages/babel-types/src/definitions/es2015.js
+++ b/packages/babel-types/src/definitions/es2015.js
@@ -227,6 +227,10 @@ defineType("ImportSpecifier", {
},
imported: {
validate: assertNodeType("Identifier")
+ },
+ importKind: {
+ // Handle Flowtype's extension "import {typeof foo} from"
+ validate: assertOneOf(null, "type", "typeof")
}
}
});
From 1691fc959f0021ba2af365d2ade85270d88fb8ca Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 14 Jan 2017 14:21:58 +0100
Subject: [PATCH 045/222] Add mention-bot (#5057) [skip ci]
---
.mention-bot | 6 ++++++
1 file changed, 6 insertions(+)
create mode 100644 .mention-bot
diff --git a/.mention-bot b/.mention-bot
new file mode 100644
index 0000000000..6c013ed41f
--- /dev/null
+++ b/.mention-bot
@@ -0,0 +1,6 @@
+{
+ "userBlacklist": [ "amasad", "thejameskyle", "jmm", "kittens" ],
+ "fileBlacklist": ["*.md"], // mention-bot will ignore any files that match these file globs
+ "skipAlreadyAssignedPR": true, // mention-bot will ignore already assigned PR's,
+ "createReviewRequest": true
+}
From d3f3aced40d354b3a3e085f78089b6cddd126685 Mon Sep 17 00:00:00 2001
From: Henry Zhu
Date: Sat, 14 Jan 2017 09:29:45 -0500
Subject: [PATCH 046/222] mention-bot: remove comments [skip ci]
---
.mention-bot | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.mention-bot b/.mention-bot
index 6c013ed41f..32b2d0479e 100644
--- a/.mention-bot
+++ b/.mention-bot
@@ -1,6 +1,6 @@
{
"userBlacklist": [ "amasad", "thejameskyle", "jmm", "kittens" ],
- "fileBlacklist": ["*.md"], // mention-bot will ignore any files that match these file globs
- "skipAlreadyAssignedPR": true, // mention-bot will ignore already assigned PR's,
+ "fileBlacklist": ["*.md"],
+ "skipAlreadyAssignedPR": true,
"createReviewRequest": true
}
From 982850731e67005f17720f74bc10a4e54f87839b Mon Sep 17 00:00:00 2001
From: Sven SAULEAU
Date: Sat, 14 Jan 2017 15:45:20 +0100
Subject: [PATCH 047/222] fix: [skip ci] consistent documentation (#5111)
---
.../babel-plugin-transform-es2015-duplicate-keys/README.md | 4 +++-
packages/babel-plugin-transform-es2015-parameters/README.md | 6 ++++++
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/packages/babel-plugin-transform-es2015-duplicate-keys/README.md b/packages/babel-plugin-transform-es2015-duplicate-keys/README.md
index bfcb7c4257..aa502cce50 100644
--- a/packages/babel-plugin-transform-es2015-duplicate-keys/README.md
+++ b/packages/babel-plugin-transform-es2015-duplicate-keys/README.md
@@ -1,6 +1,8 @@
# babel-plugin-transform-es2015-duplicate-keys
-> Compile objects with duplicate keys to valid strict ES5. This plugin actually converts duplicate keys in objects to be computed properties, which then must be handled by the [transform-es2015-computed-properties](http://babeljs.io/docs/plugins/transform-es2015-computed-properties) plugin. The final result won't contain any object literals with duplicate keys.
+> Compile objects with duplicate keys to valid strict ES5.
+
+This plugin actually converts duplicate keys in objects to be computed properties, which then must be handled by the [transform-es2015-computed-properties](http://babeljs.io/docs/plugins/transform-es2015-computed-properties) plugin. The final result won't contain any object literals with duplicate keys.
## Example
diff --git a/packages/babel-plugin-transform-es2015-parameters/README.md b/packages/babel-plugin-transform-es2015-parameters/README.md
index bd55bbc350..5c52e0c0c8 100644
--- a/packages/babel-plugin-transform-es2015-parameters/README.md
+++ b/packages/babel-plugin-transform-es2015-parameters/README.md
@@ -2,6 +2,12 @@
> Compile ES2015 default and rest parameters to ES5
+This plugin transforms ES2015 parameters to ES5, this includes:
+
+- Destructuring parameters
+- Default parameters
+- Rest parameters
+
## Installation
```sh
From 672adba9a14aa3b4d4676ef6b8699616d2062a55 Mon Sep 17 00:00:00 2001
From: Henry Zhu
Date: Sat, 14 Jan 2017 09:48:52 -0500
Subject: [PATCH 048/222] enable prefer const (#5113)
---
package.json | 3 +-
packages/babel-cli/src/_babel-node.js | 18 +-
packages/babel-cli/src/babel-node.js | 12 +-
packages/babel-cli/src/babel/dir.js | 32 ++--
packages/babel-cli/src/babel/file.js | 48 +++---
packages/babel-cli/src/babel/index.js | 24 +--
packages/babel-cli/src/babel/util.js | 22 +--
packages/babel-cli/test/index.js | 62 +++----
packages/babel-code-frame/src/index.js | 32 ++--
packages/babel-code-frame/test/index.js | 18 +-
packages/babel-core/src/api/browser.js | 18 +-
packages/babel-core/src/api/node.js | 8 +-
.../src/helpers/get-possible-preset-names.js | 6 +-
packages/babel-core/src/helpers/merge.js | 4 +-
packages/babel-core/src/helpers/resolve.js | 4 +-
packages/babel-core/src/store.js | 2 +-
.../src/tools/build-external-helpers.js | 20 +--
.../src/transformation/file/index.js | 112 ++++++------
.../src/transformation/file/logger.js | 6 +-
.../src/transformation/file/metadata.js | 36 ++--
.../file/options/build-config-chain.js | 24 +--
.../src/transformation/file/options/index.js | 4 +-
.../file/options/option-manager.js | 34 ++--
.../transformation/file/options/parsers.js | 2 +-
.../internal-plugins/block-hoist.js | 2 +-
.../internal-plugins/shadow-functions.js | 12 +-
.../babel-core/src/transformation/pipeline.js | 6 +-
.../babel-core/src/transformation/plugin.js | 12 +-
packages/babel-core/src/util.js | 10 +-
packages/babel-core/test/api.js | 50 +++---
packages/babel-core/test/browserify.js | 10 +-
packages/babel-core/test/config-chain.js | 32 ++--
packages/babel-core/test/evaluation.js | 10 +-
.../test/get-possible-plugin-names.js | 4 +-
.../test/get-possible-preset-names.js | 4 +-
packages/babel-core/test/option-manager.js | 12 +-
packages/babel-core/test/path.js | 34 ++--
packages/babel-core/test/resolution.js | 16 +-
packages/babel-core/test/util.js | 12 +-
packages/babel-generator/src/buffer.js | 10 +-
.../babel-generator/src/generators/base.js | 2 +-
.../src/generators/expressions.js | 10 +-
.../babel-generator/src/generators/flow.js | 2 +-
.../babel-generator/src/generators/jsx.js | 4 +-
.../babel-generator/src/generators/methods.js | 4 +-
.../babel-generator/src/generators/modules.js | 10 +-
.../src/generators/statements.js | 24 +--
.../src/generators/template-literals.js | 4 +-
.../babel-generator/src/generators/types.js | 12 +-
packages/babel-generator/src/index.js | 16 +-
packages/babel-generator/src/node/index.js | 22 +--
.../babel-generator/src/node/parentheses.js | 8 +-
.../babel-generator/src/node/whitespace.js | 6 +-
packages/babel-generator/src/printer.js | 26 +--
packages/babel-generator/src/whitespace.js | 8 +-
packages/babel-generator/test/index.js | 78 ++++-----
.../src/index.js | 10 +-
.../src/index.js | 16 +-
.../src/index.js | 14 +-
.../src/index.js | 18 +-
.../babel-helper-call-delegate/src/index.js | 8 +-
packages/babel-helper-define-map/src/index.js | 24 +--
.../src/index.js | 12 +-
.../babel-helper-explode-class/src/index.js | 10 +-
packages/babel-helper-fixtures/src/index.js | 40 ++---
.../babel-helper-function-name/src/index.js | 20 +--
.../src/index.js | 4 +-
.../babel-helper-hoist-variables/src/index.js | 10 +-
.../src/index.js | 2 +-
packages/babel-helper-regex/src/index.js | 2 +-
.../src/for-await.js | 20 +--
.../src/index.js | 34 ++--
.../babel-helper-replace-supers/src/index.js | 30 ++--
.../src/helpers.js | 2 +-
.../src/index.js | 40 ++---
packages/babel-helpers/src/helpers.js | 2 +-
packages/babel-helpers/src/index.js | 4 +-
packages/babel-messages/src/index.js | 2 +-
.../src/index.js | 6 +-
.../src/index.js | 4 +-
.../src/index.js | 14 +-
.../src/index.js | 40 ++---
.../src/index.js | 26 +--
.../src/index.js | 2 +-
.../src/index.js | 4 +-
.../src/index.js | 10 +-
.../src/index.js | 152 ++++++++---------
.../src/tdz.js | 24 +--
.../src/index.js | 14 +-
.../src/lib/memoise-decorators.js | 8 +-
.../src/loose.js | 6 +-
.../src/vanilla.js | 70 ++++----
.../src/index.js | 32 ++--
.../src/index.js | 94 +++++-----
.../src/index.js | 36 ++--
.../src/index.js | 56 +++---
.../src/index.js | 6 +-
.../src/index.js | 2 +-
.../src/index.js | 22 +--
.../src/index.js | 128 +++++++-------
.../test/esmodule-flag.js | 10 +-
.../src/index.js | 74 ++++----
.../src/index.js | 42 ++---
.../src/index.js | 10 +-
.../src/default.js | 34 ++--
.../src/destructuring.js | 14 +-
.../src/index.js | 4 +-
.../src/rest.js | 44 ++---
.../src/index.js | 2 +-
.../src/index.js | 28 +--
.../src/index.js | 2 +-
.../src/index.js | 16 +-
.../src/index.js | 12 +-
.../src/index.js | 2 +-
.../src/index.js | 2 +-
.../src/index.js | 6 +-
.../babel-plugin-transform-eval/src/index.js | 6 +-
.../src/index.js | 10 +-
.../src/index.js | 10 +-
.../src/index.js | 4 +-
.../src/index.js | 14 +-
.../src/index.js | 2 +-
.../src/index.js | 54 +++---
.../src/index.js | 16 +-
.../src/index.js | 6 +-
.../src/index.js | 14 +-
.../src/index.js | 20 +--
.../src/index.js | 2 +-
.../src/index.js | 2 +-
.../src/index.js | 14 +-
.../src/index.js | 20 +--
.../src/index.js | 4 +-
.../src/index.js | 10 +-
packages/babel-polyfill/src/index.js | 2 +-
packages/babel-preset-es2015/test/index.js | 4 +-
packages/babel-preset-es2015/test/traceur.js | 2 +-
packages/babel-register/src/node.js | 16 +-
packages/babel-template/src/index.js | 10 +-
packages/babel-template/test/index.js | 14 +-
packages/babel-traverse/src/context.js | 20 +--
packages/babel-traverse/src/index.js | 8 +-
packages/babel-traverse/src/path/ancestry.js | 28 +--
packages/babel-traverse/src/path/comments.js | 10 +-
packages/babel-traverse/src/path/context.js | 18 +-
.../babel-traverse/src/path/conversion.js | 4 +-
.../babel-traverse/src/path/evaluation.js | 74 ++++----
packages/babel-traverse/src/path/family.js | 24 +--
packages/babel-traverse/src/path/index.js | 18 +-
.../src/path/inference/index.js | 14 +-
.../src/path/inference/inferer-reference.js | 38 ++---
.../src/path/inference/inferers.js | 12 +-
.../babel-traverse/src/path/introspection.js | 76 ++++-----
.../babel-traverse/src/path/lib/hoister.js | 34 ++--
.../src/path/lib/removal-hooks.js | 2 +-
.../src/path/lib/virtual-types.js | 26 +--
.../babel-traverse/src/path/modification.js | 36 ++--
packages/babel-traverse/src/path/removal.js | 2 +-
.../babel-traverse/src/path/replacement.js | 30 ++--
packages/babel-traverse/src/scope/index.js | 160 +++++++++---------
.../babel-traverse/src/scope/lib/renamer.js | 28 +--
packages/babel-traverse/src/visitors.js | 62 +++----
packages/babel-traverse/test/ancestry.js | 26 +--
packages/babel-traverse/test/evaluation.js | 8 +-
packages/babel-traverse/test/family.js | 8 +-
packages/babel-traverse/test/scope.js | 8 +-
packages/babel-traverse/test/traverse.js | 44 ++---
packages/babel-types/src/converters.js | 26 +--
packages/babel-types/src/definitions/core.js | 6 +-
.../babel-types/src/definitions/es2015.js | 2 +-
packages/babel-types/src/definitions/index.js | 28 +--
packages/babel-types/src/flow.js | 18 +-
packages/babel-types/src/index.js | 74 ++++----
packages/babel-types/src/react.js | 14 +-
packages/babel-types/src/retrievers.js | 10 +-
packages/babel-types/src/validators.js | 10 +-
packages/babel-types/test/cloning.js | 44 ++---
packages/babel-types/test/validators.js | 14 +-
177 files changed, 1862 insertions(+), 1863 deletions(-)
diff --git a/package.json b/package.json
index e62332ff19..6f082e6cd1 100644
--- a/package.json
+++ b/package.json
@@ -26,8 +26,7 @@
"codecov": "^1.0.1",
"derequire": "^2.0.2",
"eslint": "^3.9.0",
- "eslint-config-babel": "^2.0.1",
- "eslint-plugin-babel": "^3.3.0",
+ "eslint-config-babel": "^5.0.0",
"eslint-plugin-flowtype": "^2.20.0",
"flow-bin": "^0.34.0",
"gulp": "^3.9.0",
diff --git a/packages/babel-cli/src/_babel-node.js b/packages/babel-cli/src/_babel-node.js
index 3c7c40ed4d..40471639bd 100644
--- a/packages/babel-cli/src/_babel-node.js
+++ b/packages/babel-cli/src/_babel-node.js
@@ -11,7 +11,7 @@ import _ from "lodash";
import "babel-polyfill";
import register from "babel-register";
-let program = new commander.Command("babel-node");
+const program = new commander.Command("babel-node");
program.option("-e, --eval [script]", "Evaluate script");
program.option("-p, --print [code]", "Evaluate script and print result");
@@ -21,7 +21,7 @@ program.option("-x, --extensions [extensions]", "List of extensions to hook into
program.option("-w, --plugins [string]", "", util.list);
program.option("-b, --presets [string]", "", util.list);
-let pkg = require("../package.json");
+const pkg = require("../package.json");
program.version(pkg.version);
program.usage("[options] [ -e script | script.js ] [arguments]");
program.parse(process.argv);
@@ -38,7 +38,7 @@ register({
//
-let replPlugin = ({ types: t }) => ({
+const replPlugin = ({ types: t }) => ({
visitor: {
ModuleDeclaration(path) {
throw path.buildCodeFrameError("Modules aren't supported in the REPL");
@@ -62,7 +62,7 @@ let replPlugin = ({ types: t }) => ({
//
-let _eval = function (code, filename) {
+const _eval = function (code, filename) {
code = code.trim();
if (!code) return undefined;
@@ -84,7 +84,7 @@ if (program.eval || program.print) {
global.__filename = "[eval]";
global.__dirname = process.cwd();
- let module = new Module(global.__filename);
+ const module = new Module(global.__filename);
module.filename = global.__filename;
module.paths = Module._nodeModulePaths(global.__dirname);
@@ -92,9 +92,9 @@ if (program.eval || program.print) {
global.module = module;
global.require = module.require.bind(module);
- let result = _eval(code, global.__filename);
+ const result = _eval(code, global.__filename);
if (program.print) {
- let output = _.isString(result) ? result : inspect(result);
+ const output = _.isString(result) ? result : inspect(result);
process.stdout.write(output + "\n");
}
} else {
@@ -111,7 +111,7 @@ if (program.eval || program.print) {
}
if (arg[0] === "-") {
- let parsedArg = program[arg.slice(2)];
+ const parsedArg = program[arg.slice(2)];
if (parsedArg && parsedArg !== true) {
ignoreNext = true;
}
@@ -123,7 +123,7 @@ if (program.eval || program.print) {
args = args.slice(i);
// make the filename absolute
- let filename = args[0];
+ const filename = args[0];
if (!pathIsAbsolute(filename)) args[0] = path.join(process.cwd(), filename);
// add back on node and concat the sliced args
diff --git a/packages/babel-cli/src/babel-node.js b/packages/babel-cli/src/babel-node.js
index 0830a2313d..e3d0c2e901 100755
--- a/packages/babel-cli/src/babel-node.js
+++ b/packages/babel-cli/src/babel-node.js
@@ -5,8 +5,8 @@
* when found, before invoking the "real" _babel-node(1) executable.
*/
-let getV8Flags = require("v8flags");
-let path = require("path");
+const getV8Flags = require("v8flags");
+const path = require("path");
let args = [path.join(__dirname, "_babel-node")];
@@ -14,7 +14,7 @@ let babelArgs = process.argv.slice(2);
let userArgs;
// separate node arguments from script arguments
-let argSeparator = babelArgs.indexOf("--");
+const argSeparator = babelArgs.indexOf("--");
if (argSeparator > -1) {
userArgs = babelArgs.slice(argSeparator); // including the --
babelArgs = babelArgs.slice(0, argSeparator);
@@ -75,13 +75,13 @@ getV8Flags(function (err, v8Flags) {
}
try {
- let kexec = require("kexec");
+ const kexec = require("kexec");
kexec(process.argv[0], args);
} catch (err) {
if (err.code !== "MODULE_NOT_FOUND") throw err;
- let child_process = require("child_process");
- let proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
+ const child_process = require("child_process");
+ const proc = child_process.spawn(process.argv[0], args, { stdio: "inherit" });
proc.on("exit", function (code, signal) {
process.on("exit", function () {
if (signal) {
diff --git a/packages/babel-cli/src/babel/dir.js b/packages/babel-cli/src/babel/dir.js
index 78be975c88..f097874a2a 100644
--- a/packages/babel-cli/src/babel/dir.js
+++ b/packages/babel-cli/src/babel/dir.js
@@ -1,18 +1,18 @@
-let outputFileSync = require("output-file-sync");
-let slash = require("slash");
-let path = require("path");
-let util = require("./util");
-let fs = require("fs");
-let _ = require("lodash");
+const outputFileSync = require("output-file-sync");
+const slash = require("slash");
+const path = require("path");
+const util = require("./util");
+const fs = require("fs");
+const _ = require("lodash");
module.exports = function (commander, filenames) {
function write(src, relative) {
// remove extension and then append back on .js
relative = relative.replace(/\.(\w*?)$/, "") + ".js";
- let dest = path.join(commander.outDir, relative);
+ const dest = path.join(commander.outDir, relative);
- let data = util.compile(src, {
+ const data = util.compile(src, {
sourceFileName: slash(path.relative(dest + "/..", src)),
sourceMapTarget: path.basename(relative)
});
@@ -20,7 +20,7 @@ module.exports = function (commander, filenames) {
// we've requested explicit sourcemaps to be written to disk
if (data.map && commander.sourceMaps && commander.sourceMaps !== "inline") {
- let mapLoc = dest + ".map";
+ const mapLoc = dest + ".map";
data.code = util.addSourceMappingUrl(data.code, mapLoc);
outputFileSync(mapLoc, JSON.stringify(data.map));
}
@@ -37,7 +37,7 @@ module.exports = function (commander, filenames) {
if (util.canCompile(filename, commander.extensions)) {
write(src, filename);
} else if (commander.copyFiles) {
- let dest = path.join(commander.outDir, filename);
+ const dest = path.join(commander.outDir, filename);
outputFileSync(dest, fs.readFileSync(src));
util.chmod(src, dest);
}
@@ -46,13 +46,13 @@ module.exports = function (commander, filenames) {
function handle(filename) {
if (!fs.existsSync(filename)) return;
- let stat = fs.statSync(filename);
+ const stat = fs.statSync(filename);
if (stat.isDirectory(filename)) {
- let dirname = filename;
+ const dirname = filename;
_.each(util.readdir(dirname), function (filename) {
- let src = path.join(dirname, filename);
+ const src = path.join(dirname, filename);
handleFile(src, filename);
});
} else {
@@ -65,17 +65,17 @@ module.exports = function (commander, filenames) {
}
if (commander.watch) {
- let chokidar = util.requireChokidar();
+ const chokidar = util.requireChokidar();
_.each(filenames, function (dirname) {
- let watcher = chokidar.watch(dirname, {
+ const watcher = chokidar.watch(dirname, {
persistent: true,
ignoreInitial: true
});
_.each(["add", "change"], function (type) {
watcher.on(type, function (filename) {
- let relative = path.relative(dirname, filename) || filename;
+ const relative = path.relative(dirname, filename) || filename;
try {
handleFile(filename, relative);
} catch (err) {
diff --git a/packages/babel-cli/src/babel/file.js b/packages/babel-cli/src/babel/file.js
index 1feb8d2aad..bb1f6e9494 100644
--- a/packages/babel-cli/src/babel/file.js
+++ b/packages/babel-cli/src/babel/file.js
@@ -1,10 +1,10 @@
-let convertSourceMap = require("convert-source-map");
-let sourceMap = require("source-map");
-let slash = require("slash");
-let path = require("path");
-let util = require("./util");
-let fs = require("fs");
-let _ = require("lodash");
+const convertSourceMap = require("convert-source-map");
+const sourceMap = require("source-map");
+const slash = require("slash");
+const path = require("path");
+const util = require("./util");
+const fs = require("fs");
+const _ = require("lodash");
module.exports = function (commander, filenames, opts) {
if (commander.sourceMaps === "inline") {
@@ -13,8 +13,8 @@ module.exports = function (commander, filenames, opts) {
let results = [];
- let buildResult = function () {
- let map = new sourceMap.SourceMapGenerator({
+ const buildResult = function () {
+ const map = new sourceMap.SourceMapGenerator({
file: path.basename(commander.outFile || "") || "stdout",
sourceRoot: opts.sourceRoot
});
@@ -26,8 +26,8 @@ module.exports = function (commander, filenames, opts) {
code += result.code + "\n";
if (result.map) {
- let consumer = new sourceMap.SourceMapConsumer(result.map);
- let sources = new Set();
+ const consumer = new sourceMap.SourceMapConsumer(result.map);
+ const sources = new Set();
consumer.eachMapping(function (mapping) {
if (mapping.source != null) sources.add(mapping.source);
@@ -46,7 +46,7 @@ module.exports = function (commander, filenames, opts) {
});
sources.forEach((source) => {
- let content = consumer.sourceContentFor(source, true);
+ const content = consumer.sourceContentFor(source, true);
if (content !== null) {
map.setSourceContent(source, content);
}
@@ -68,13 +68,13 @@ module.exports = function (commander, filenames, opts) {
};
};
- let output = function () {
- let result = buildResult();
+ const output = function () {
+ const result = buildResult();
if (commander.outFile) {
// we've requested for a sourcemap to be written to disk
if (commander.sourceMaps && commander.sourceMaps !== "inline") {
- let mapLoc = commander.outFile + ".map";
+ const mapLoc = commander.outFile + ".map";
result.code = util.addSourceMappingUrl(result.code, mapLoc);
fs.writeFileSync(mapLoc, JSON.stringify(result.map));
}
@@ -85,13 +85,13 @@ module.exports = function (commander, filenames, opts) {
}
};
- let stdin = function () {
+ const stdin = function () {
let code = "";
process.stdin.setEncoding("utf8");
process.stdin.on("readable", function () {
- let chunk = process.stdin.read();
+ const chunk = process.stdin.read();
if (chunk !== null) code += chunk;
});
@@ -103,16 +103,16 @@ module.exports = function (commander, filenames, opts) {
});
};
- let walk = function () {
- let _filenames = [];
+ const walk = function () {
+ const _filenames = [];
results = [];
_.each(filenames, function (filename) {
if (!fs.existsSync(filename)) return;
- let stat = fs.statSync(filename);
+ const stat = fs.statSync(filename);
if (stat.isDirectory()) {
- let dirname = filename;
+ const dirname = filename;
_.each(util.readdirFilter(filename), function (filename) {
_filenames.push(path.join(dirname, filename));
@@ -131,7 +131,7 @@ module.exports = function (commander, filenames, opts) {
}
sourceFilename = slash(sourceFilename);
- let data = util.compile(filename, {
+ const data = util.compile(filename, {
sourceFileName: sourceFilename,
});
@@ -142,14 +142,14 @@ module.exports = function (commander, filenames, opts) {
output();
};
- let files = function () {
+ const files = function () {
if (!commander.skipInitialBuild) {
walk();
}
if (commander.watch) {
- let chokidar = util.requireChokidar();
+ const chokidar = util.requireChokidar();
chokidar.watch(filenames, {
persistent: true,
ignoreInitial: true
diff --git a/packages/babel-cli/src/babel/index.js b/packages/babel-cli/src/babel/index.js
index 236c2df72a..0e1472d953 100755
--- a/packages/babel-cli/src/babel/index.js
+++ b/packages/babel-cli/src/babel/index.js
@@ -3,14 +3,14 @@
require("babel-core");
-let fs = require("fs");
-let commander = require("commander");
-let kebabCase = require("lodash/kebabCase");
-let options = require("babel-core").options;
-let util = require("babel-core").util;
-let uniq = require("lodash/uniq");
-let each = require("lodash/each");
-let glob = require("glob");
+const fs = require("fs");
+const commander = require("commander");
+const kebabCase = require("lodash/kebabCase");
+const options = require("babel-core").options;
+const util = require("babel-core").util;
+const uniq = require("lodash/uniq");
+const each = require("lodash/each");
+const glob = require("glob");
each(options, function (option, key) {
if (option.hidden) return;
@@ -31,7 +31,7 @@ each(options, function (option, key) {
arg = "-" + option.shorthand + ", " + arg;
}
- let desc = [];
+ const desc = [];
if (option.deprecated) desc.push("[DEPRECATED] " + option.deprecated);
if (option.description) desc.push(option.description);
@@ -46,7 +46,7 @@ commander.option("-d, --out-dir [out]", "Compile an input directory of modules i
commander.option("-D, --copy-files", "When compiling a directory copy over non-compilable files");
commander.option("-q, --quiet", "Don't log anything");
-let pkg = require("../../package.json");
+const pkg = require("../../package.json");
commander.version(pkg.version + " (babel-core " + require("babel-core").version + ")");
commander.usage("[options] ");
commander.parse(process.argv);
@@ -59,7 +59,7 @@ if (commander.extensions) {
//
-let errors = [];
+const errors = [];
let filenames = commander.args.reduce(function (globbed, input) {
let files = glob.sync(input);
@@ -104,7 +104,7 @@ if (errors.length) {
//
-let opts = exports.opts = {};
+const opts = exports.opts = {};
each(options, function (opt, key) {
if (commander[key] !== undefined && commander[key] !== opt.default) {
diff --git a/packages/babel-cli/src/babel/util.js b/packages/babel-cli/src/babel/util.js
index fd06aa6ce7..df8c72b3aa 100644
--- a/packages/babel-cli/src/babel/util.js
+++ b/packages/babel-cli/src/babel/util.js
@@ -1,11 +1,11 @@
-let commander = require("commander");
-let readdir = require("fs-readdir-recursive");
-let index = require("./index");
-let babel = require("babel-core");
-let util = require("babel-core").util;
-let path = require("path");
-let fs = require("fs");
-let _ = require("lodash");
+const commander = require("commander");
+const readdir = require("fs-readdir-recursive");
+const index = require("./index");
+const babel = require("babel-core");
+const util = require("babel-core").util;
+const path = require("path");
+const fs = require("fs");
+const _ = require("lodash");
export function chmod(src, dest) {
fs.chmodSync(dest, fs.statSync(src).mode);
@@ -19,7 +19,7 @@ export function readdirFilter(filename) {
export { readdir };
-export let canCompile = util.canCompile;
+export const canCompile = util.canCompile;
export function shouldIgnore(loc) {
return util.shouldIgnore(loc, index.opts.ignore, index.opts.only);
@@ -37,7 +37,7 @@ export function transform(filename, code, opts) {
opts = _.defaults(opts || {}, index.opts);
opts.filename = filename;
- let result = babel.transform(code, opts);
+ const result = babel.transform(code, opts);
result.filename = filename;
result.actual = code;
return result;
@@ -45,7 +45,7 @@ export function transform(filename, code, opts) {
export function compile(filename, opts) {
try {
- let code = fs.readFileSync(filename, "utf8");
+ const code = fs.readFileSync(filename, "utf8");
return transform(filename, code, opts);
} catch (err) {
if (commander.watch) {
diff --git a/packages/babel-cli/test/index.js b/packages/babel-cli/test/index.js
index 61cb19aed9..9a5d9f0594 100644
--- a/packages/babel-cli/test/index.js
+++ b/packages/babel-cli/test/index.js
@@ -1,29 +1,29 @@
-let readdir = require("fs-readdir-recursive");
-let helper = require("babel-helper-fixtures");
-let assert = require("assert");
-let rimraf = require("rimraf");
-let outputFileSync = require("output-file-sync");
-let child = require("child_process");
-let path = require("path");
-let chai = require("chai");
-let fs = require("fs");
-let _ = require("lodash");
+const readdir = require("fs-readdir-recursive");
+const helper = require("babel-helper-fixtures");
+const assert = require("assert");
+const rimraf = require("rimraf");
+const outputFileSync = require("output-file-sync");
+const child = require("child_process");
+const path = require("path");
+const chai = require("chai");
+const fs = require("fs");
+const _ = require("lodash");
-let fixtureLoc = path.join(__dirname, "fixtures");
-let tmpLoc = path.join(__dirname, "tmp");
+const fixtureLoc = path.join(__dirname, "fixtures");
+const tmpLoc = path.join(__dirname, "tmp");
-let presetLocs = [
+const presetLocs = [
path.join(__dirname, "../../babel-preset-es2015"),
path.join(__dirname, "../../babel-preset-react")
].join(",");
-let pluginLocs = [
+const pluginLocs = [
path.join(__dirname, "/../../babel-plugin-transform-strict-mode"),
path.join(__dirname, "/../../babel-plugin-transform-es2015-modules-commonjs"),
].join(",");
-let readDir = function (loc) {
- let files = {};
+const readDir = function (loc) {
+ const files = {};
if (fs.existsSync(loc)) {
_.each(readdir(loc), function (filename) {
files[filename] = helper.readFile(path.join(loc, filename));
@@ -32,14 +32,14 @@ let readDir = function (loc) {
return files;
};
-let saveInFiles = function (files) {
+const saveInFiles = function (files) {
_.each(files, function (content, filename) {
outputFileSync(filename, content);
});
};
-let assertTest = function (stdout, stderr, opts) {
- let expectStderr = opts.stderr.trim();
+const assertTest = function (stdout, stderr, opts) {
+ const expectStderr = opts.stderr.trim();
stderr = stderr.trim();
if (opts.stderr) {
@@ -52,7 +52,7 @@ let assertTest = function (stdout, stderr, opts) {
throw new Error("stderr:\n" + stderr);
}
- let expectStdout = opts.stdout.trim();
+ const expectStdout = opts.stdout.trim();
stdout = stdout.trim();
stdout = stdout.replace(/\\/g, "/");
@@ -67,13 +67,13 @@ let assertTest = function (stdout, stderr, opts) {
}
_.each(opts.outFiles, function (expect, filename) {
- let actual = helper.readFile(filename);
+ const actual = helper.readFile(filename);
chai.expect(actual).to.equal(expect, "out-file " + filename);
});
};
-let buildTest = function (binName, testName, opts) {
- let binLoc = path.join(__dirname, "../lib", binName);
+const buildTest = function (binName, testName, opts) {
+ const binLoc = path.join(__dirname, "../lib", binName);
return function (callback) {
clear();
@@ -91,7 +91,7 @@ let buildTest = function (binName, testName, opts) {
args = args.concat(opts.args);
- let spawn = child.spawn(process.execPath, args);
+ const spawn = child.spawn(process.execPath, args);
let stderr = "";
let stdout = "";
@@ -127,7 +127,7 @@ let buildTest = function (binName, testName, opts) {
};
};
-let clear = function () {
+const clear = function () {
process.chdir(__dirname);
if (fs.existsSync(tmpLoc)) rimraf.sync(tmpLoc);
fs.mkdirSync(tmpLoc);
@@ -137,22 +137,22 @@ let clear = function () {
_.each(fs.readdirSync(fixtureLoc), function (binName) {
if (binName[0] === ".") return;
- let suiteLoc = path.join(fixtureLoc, binName);
+ const suiteLoc = path.join(fixtureLoc, binName);
describe("bin/" + binName, function () {
_.each(fs.readdirSync(suiteLoc), function (testName) {
if (testName[0] === ".") return;
- let testLoc = path.join(suiteLoc, testName);
+ const testLoc = path.join(suiteLoc, testName);
- let opts = {
+ const opts = {
args: []
};
- let optionsLoc = path.join(testLoc, "options.json");
+ const optionsLoc = path.join(testLoc, "options.json");
if (fs.existsSync(optionsLoc)) _.merge(opts, require(optionsLoc));
_.each(["stdout", "stdin", "stderr"], function (key) {
- let loc = path.join(testLoc, key + ".txt");
+ const loc = path.join(testLoc, key + ".txt");
if (fs.existsSync(loc)) {
opts[key] = helper.readFile(loc);
} else {
@@ -163,7 +163,7 @@ _.each(fs.readdirSync(fixtureLoc), function (binName) {
opts.outFiles = readDir(path.join(testLoc, "out-files"));
opts.inFiles = readDir(path.join(testLoc, "in-files"));
- let babelrcLoc = path.join(testLoc, ".babelrc");
+ const babelrcLoc = path.join(testLoc, ".babelrc");
if (fs.existsSync(babelrcLoc)) {
// copy .babelrc file to tmp directory
opts.inFiles[".babelrc"] = helper.readFile(babelrcLoc);
diff --git a/packages/babel-code-frame/src/index.js b/packages/babel-code-frame/src/index.js
index 1e570ab692..9476ef617d 100644
--- a/packages/babel-code-frame/src/index.js
+++ b/packages/babel-code-frame/src/index.js
@@ -46,8 +46,8 @@ const BRACKET = /^[()\[\]{}]$/;
*/
function getTokenType(match) {
- let [offset, text] = match.slice(-2);
- let token = matchToToken(match);
+ const [offset, text] = match.slice(-2);
+ const token = matchToToken(match);
if (token.type === "name") {
if (esutils.keyword.isReservedWordES6(token.value)) {
@@ -79,8 +79,8 @@ function getTokenType(match) {
function highlight(defs: Object, text: string) {
return text.replace(jsTokens, function (...args) {
- let type = getTokenType(args);
- let colorize = defs[type];
+ const type = getTokenType(args);
+ const colorize = defs[type];
if (colorize) {
return args[0].split(NEWLINE).map((str) => colorize(str)).join("\n");
} else {
@@ -101,21 +101,21 @@ export default function (
): string {
colNumber = Math.max(colNumber, 0);
- let highlighted = (opts.highlightCode && Chalk.supportsColor) || opts.forceColor;
+ const highlighted = (opts.highlightCode && Chalk.supportsColor) || opts.forceColor;
let chalk = Chalk;
if (opts.forceColor) {
chalk = new Chalk.constructor({ enabled: true });
}
- let maybeHighlight = (chalkFn, string) => {
+ const maybeHighlight = (chalkFn, string) => {
return highlighted ? chalkFn(string) : string;
};
- let defs = getDefs(chalk);
+ const defs = getDefs(chalk);
if (highlighted) rawLines = highlight(defs, rawLines);
- let linesAbove = opts.linesAbove || 2;
- let linesBelow = opts.linesBelow || 3;
+ const linesAbove = opts.linesAbove || 2;
+ const linesBelow = opts.linesBelow || 3;
- let lines = rawLines.split(NEWLINE);
+ const lines = rawLines.split(NEWLINE);
let start = Math.max(lineNumber - (linesAbove + 1), 0);
let end = Math.min(lines.length, lineNumber + linesBelow);
@@ -124,16 +124,16 @@ export default function (
end = lines.length;
}
- let numberMaxWidth = String(end).length;
+ const numberMaxWidth = String(end).length;
- let frame = lines.slice(start, end).map((line, index) => {
- let number = start + 1 + index;
- let paddedNumber = ` ${number}`.slice(-numberMaxWidth);
- let gutter = ` ${paddedNumber} | `;
+ const frame = lines.slice(start, end).map((line, index) => {
+ const number = start + 1 + index;
+ const paddedNumber = ` ${number}`.slice(-numberMaxWidth);
+ const gutter = ` ${paddedNumber} | `;
if (number === lineNumber) {
let markerLine = "";
if (colNumber) {
- let markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " ");
+ const markerSpacing = line.slice(0, colNumber - 1).replace(/[^\t]/g, " ");
markerLine = [
"\n ",
maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")),
diff --git a/packages/babel-code-frame/test/index.js b/packages/babel-code-frame/test/index.js
index c85d59ddec..b00b88386d 100644
--- a/packages/babel-code-frame/test/index.js
+++ b/packages/babel-code-frame/test/index.js
@@ -1,6 +1,6 @@
-let assert = require("assert");
-let chalk = require("chalk");
-let codeFrame = require("..");
+const assert = require("assert");
+const chalk = require("chalk");
+const codeFrame = require("..");
describe("babel-code-frame", function () {
it("basic usage", function () {
@@ -119,7 +119,7 @@ describe("babel-code-frame", function () {
});
it("opts.linesAbove", function () {
- let rawLines = [
+ const rawLines = [
"/**",
" * Sums two numbers.",
" *",
@@ -143,7 +143,7 @@ describe("babel-code-frame", function () {
});
it("opts.linesBelow", function () {
- let rawLines = [
+ const rawLines = [
"/**",
" * Sums two numbers.",
" *",
@@ -166,7 +166,7 @@ describe("babel-code-frame", function () {
});
it("opts.linesAbove and opts.linesBelow", function () {
- let rawLines = [
+ const rawLines = [
"/**",
" * Sums two numbers.",
" *",
@@ -188,10 +188,10 @@ describe("babel-code-frame", function () {
});
it("opts.forceColor", function() {
- let marker = chalk.red.bold;
- let gutter = chalk.grey;
+ const marker = chalk.red.bold;
+ const gutter = chalk.grey;
- let rawLines = [
+ const rawLines = [
"",
"",
"",
diff --git a/packages/babel-core/src/api/browser.js b/packages/babel-core/src/api/browser.js
index 1c53951acf..d5d89f6b71 100644
--- a/packages/babel-core/src/api/browser.js
+++ b/packages/babel-core/src/api/browser.js
@@ -29,16 +29,16 @@ export function run(code: string, opts: Object = {}): any {
export function load(url: string, callback: Function, opts: Object = {}, hold?: boolean) {
opts.filename = opts.filename || url;
- let xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest();
+ const xhr = global.ActiveXObject ? new global.ActiveXObject("Microsoft.XMLHTTP") : new global.XMLHttpRequest();
xhr.open("GET", url, true);
if ("overrideMimeType" in xhr) xhr.overrideMimeType("text/plain");
xhr.onreadystatechange = function () {
if (xhr.readyState !== 4) return;
- let status = xhr.status;
+ const status = xhr.status;
if (status === 0 || status === 200) {
- let param = [xhr.responseText, opts];
+ const param = [xhr.responseText, opts];
if (!hold) run(param);
if (callback) callback(param);
} else {
@@ -50,8 +50,8 @@ export function load(url: string, callback: Function, opts: Object = {}, hold?:
}
function runScripts() {
- let scripts: Array | Object> = [];
- let types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];
+ const scripts: Array | Object> = [];
+ const types = ["text/ecmascript-6", "text/6to5", "text/babel", "module"];
let index = 0;
/**
@@ -59,7 +59,7 @@ function runScripts() {
*/
function exec() {
- let param = scripts[index];
+ const param = scripts[index];
if (param instanceof Array) {
run(param, index);
index++;
@@ -72,7 +72,7 @@ function runScripts() {
*/
function run(script: Object, i: number) {
- let opts = {};
+ const opts = {};
if (script.src) {
load(script.src, function (param) {
@@ -87,10 +87,10 @@ function runScripts() {
// Collect scripts with Babel `types`.
- let _scripts = global.document.getElementsByTagName("script");
+ const _scripts = global.document.getElementsByTagName("script");
for (let i = 0; i < _scripts.length; ++i) {
- let _script = _scripts[i];
+ const _script = _scripts[i];
if (types.indexOf(_script.type) >= 0) scripts.push(_script);
}
diff --git a/packages/babel-core/src/api/node.js b/packages/babel-core/src/api/node.js
index a9e4792465..de1cfea682 100644
--- a/packages/babel-core/src/api/node.js
+++ b/packages/babel-core/src/api/node.js
@@ -31,10 +31,10 @@ export function Plugin(alias) {
import Pipeline from "../transformation/pipeline";
export { Pipeline };
-let pipeline = new Pipeline;
-export let analyse = pipeline.analyse.bind(pipeline);
-export let transform = pipeline.transform.bind(pipeline);
-export let transformFromAst = pipeline.transformFromAst.bind(pipeline);
+const pipeline = new Pipeline;
+export const analyse = pipeline.analyse.bind(pipeline);
+export const transform = pipeline.transform.bind(pipeline);
+export const transformFromAst = pipeline.transformFromAst.bind(pipeline);
export function transformFile(filename: string, opts?: Object, callback: Function) {
if (isFunction(opts)) {
diff --git a/packages/babel-core/src/helpers/get-possible-preset-names.js b/packages/babel-core/src/helpers/get-possible-preset-names.js
index b9fb1726bd..a2140b9887 100644
--- a/packages/babel-core/src/helpers/get-possible-preset-names.js
+++ b/packages/babel-core/src/helpers/get-possible-preset-names.js
@@ -1,11 +1,11 @@
export default function getPossiblePresetNames(presetName: string): Array {
- let possibleNames = [`babel-preset-${presetName}`, presetName];
+ const possibleNames = [`babel-preset-${presetName}`, presetName];
// trying to resolve @organization shortcat
// @foo/es2015 -> @foo/babel-preset-es2015
- let matches = presetName.match(/^(@[^/]+)\/(.+)$/);
+ const matches = presetName.match(/^(@[^/]+)\/(.+)$/);
if (matches) {
- let [, orgName, presetPath] = matches;
+ const [, orgName, presetPath] = matches;
possibleNames.push(`${orgName}/babel-preset-${presetPath}`);
}
diff --git a/packages/babel-core/src/helpers/merge.js b/packages/babel-core/src/helpers/merge.js
index 5a695f6afa..1a01e22889 100644
--- a/packages/babel-core/src/helpers/merge.js
+++ b/packages/babel-core/src/helpers/merge.js
@@ -5,9 +5,9 @@ export default function (dest?: Object, src?: Object): ?Object {
return mergeWith(dest, src, function (a, b) {
if (b && Array.isArray(a)) {
- let newArray = b.slice(0);
+ const newArray = b.slice(0);
- for (let item of a) {
+ for (const item of a) {
if (newArray.indexOf(item) < 0) {
newArray.push(item);
}
diff --git a/packages/babel-core/src/helpers/resolve.js b/packages/babel-core/src/helpers/resolve.js
index 623a910cbf..e8493ac8f5 100644
--- a/packages/babel-core/src/helpers/resolve.js
+++ b/packages/babel-core/src/helpers/resolve.js
@@ -1,7 +1,7 @@
import Module from "module";
import path from "path";
-let relativeModules = {};
+const relativeModules = {};
export default function (loc: string, relative: string = process.cwd()): ?string {
// we're in the browser, probably
@@ -18,7 +18,7 @@ export default function (loc: string, relative: string = process.cwd()): ?string
// Node presumes "." is process.cwd(), not our relative path.
// Since this fake module is never "loaded", we don't have to worry about mutating
// any global Node module cache state here.
- let filename = path.join(relative, ".babelrc");
+ const filename = path.join(relative, ".babelrc");
relativeMod.id = filename;
relativeMod.filename = filename;
diff --git a/packages/babel-core/src/store.js b/packages/babel-core/src/store.js
index fab3d10f34..1b172efbe0 100644
--- a/packages/babel-core/src/store.js
+++ b/packages/babel-core/src/store.js
@@ -15,7 +15,7 @@ export default class Store extends Map {
return super.get(key);
} else {
if (Object.prototype.hasOwnProperty.call(this.dynamicData, key)) {
- let val = this.dynamicData[key]();
+ const val = this.dynamicData[key]();
this.set(key, val);
return val;
}
diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js
index a26febd34b..237daf532c 100644
--- a/packages/babel-core/src/tools/build-external-helpers.js
+++ b/packages/babel-core/src/tools/build-external-helpers.js
@@ -7,7 +7,7 @@ import template from "babel-template";
import each from "lodash/each";
import * as t from "babel-types";
-let buildUmdWrapper = template(`
+const buildUmdWrapper = template(`
(function (root, factory) {
if (typeof define === "function" && define.amd) {
define(AMD_ARGUMENTS, factory);
@@ -22,9 +22,9 @@ let buildUmdWrapper = template(`
`);
function buildGlobal(namespace, builder) {
- let body = [];
- let container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body));
- let tree = t.program([t.expressionStatement(t.callExpression(container, [helpers.get("selfGlobal")]))]);
+ const body = [];
+ const container = t.functionExpression(null, [t.identifier("global")], t.blockStatement(body));
+ const tree = t.program([t.expressionStatement(t.callExpression(container, [helpers.get("selfGlobal")]))]);
body.push(t.variableDeclaration("var", [
t.variableDeclarator(
@@ -39,7 +39,7 @@ function buildGlobal(namespace, builder) {
}
function buildUmd(namespace, builder) {
- let body = [];
+ const body = [];
body.push(t.variableDeclaration("var", [
t.variableDeclarator(namespace, t.identifier("global"))
]));
@@ -63,7 +63,7 @@ function buildUmd(namespace, builder) {
}
function buildVar(namespace, builder) {
- let body = [];
+ const body = [];
body.push(t.variableDeclaration("var", [
t.variableDeclarator(namespace, t.objectExpression([]))
]));
@@ -76,7 +76,7 @@ function buildHelpers(body, namespace, whitelist) {
each(helpers.list, function (name) {
if (whitelist && whitelist.indexOf(name) < 0) return;
- let key = t.identifier(name);
+ const key = t.identifier(name);
body.push(t.expressionStatement(
t.assignmentExpression("=", t.memberExpression(namespace, key), helpers.get(name))
));
@@ -86,15 +86,15 @@ export default function (
whitelist?: Array,
outputType: "global" | "umd" | "var" = "global",
) {
- let namespace = t.identifier("babelHelpers");
+ const namespace = t.identifier("babelHelpers");
- let builder = function (body) {
+ const builder = function (body) {
return buildHelpers(body, namespace, whitelist);
};
let tree;
- let build = {
+ const build = {
global: buildGlobal,
umd: buildUmd,
var: buildVar,
diff --git a/packages/babel-core/src/transformation/file/index.js b/packages/babel-core/src/transformation/file/index.js
index 01d5b7efc9..a013eb5d6a 100644
--- a/packages/babel-core/src/transformation/file/index.js
+++ b/packages/babel-core/src/transformation/file/index.js
@@ -32,9 +32,9 @@ const INTERNAL_PLUGINS = [
[shadowFunctionsPlugin]
];
-let errorVisitor = {
+const errorVisitor = {
enter(path, state) {
- let loc = path.node.loc;
+ const loc = path.node.loc;
if (loc) {
state.loc = loc;
path.stop();
@@ -69,7 +69,7 @@ export default class File extends Store {
// All the "per preset" options are inherited from the main options.
this.perPresetOpts = [];
this.opts.presets.forEach((presetOpts) => {
- let perPresetOpts = Object.assign(Object.create(this.opts), presetOpts);
+ const perPresetOpts = Object.assign(Object.create(this.opts), presetOpts);
this.perPresetOpts.push(perPresetOpts);
this.buildPluginsForOptions(perPresetOpts);
});
@@ -125,7 +125,7 @@ export default class File extends Store {
getMetadata() {
let has = false;
- for (let node of (this.ast.program.body: Array
-
-
-
+
+
+
From 56ac8b8f833b6436932ad1d9b2c6cb9d9fdce384 Mon Sep 17 00:00:00 2001
From: Daniel Tschinder
Date: Tue, 17 Jan 2017 11:16:30 +0100
Subject: [PATCH 065/222] Increase cache timeout to 12h for top badges
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index d05e4f6168..dca5d6b564 100644
--- a/README.md
+++ b/README.md
@@ -9,11 +9,11 @@
-
-
-
+
+
+
-
+
Babel is a community-driven tool that helps you write the latest version of JavaScript.
From c76b8eec829e493698d6019e327b6c5ef7e568f4 Mon Sep 17 00:00:00 2001
From: Logan Smyth
Date: Tue, 17 Jan 2017 11:46:23 -0800
Subject: [PATCH 066/222] Run Babel's unittests in a custom sandbox. (#5135)
---
.../src/index.js | 110 ++++++++++++++----
1 file changed, 89 insertions(+), 21 deletions(-)
diff --git a/packages/babel-helper-transform-fixture-test-runner/src/index.js b/packages/babel-helper-transform-fixture-test-runner/src/index.js
index 39a8aa8d33..14f3343849 100644
--- a/packages/babel-helper-transform-fixture-test-runner/src/index.js
+++ b/packages/babel-helper-transform-fixture-test-runner/src/index.js
@@ -10,11 +10,97 @@ import extend from "lodash/extend";
import merge from "lodash/merge";
import assert from "assert";
import chai from "chai";
-import "babel-polyfill";
import fs from "fs";
import path from "path";
+import vm from "vm";
+import Module from "module";
-const babelHelpers = eval(buildExternalHelpers(null, "var"));
+const moduleCache = {};
+const testContext = {
+ ...helpers,
+ babelHelpers: null,
+ assert: chai.assert,
+ transform: babel.transform,
+ global: null,
+};
+testContext.global = testContext;
+vm.createContext(testContext);
+
+// Initialize the test context with the polyfill, and then freeze the global to prevent implicit
+// global creation in tests, which could cause things to bleed between tests.
+runModuleInTestContext("babel-polyfill", __filename);
+
+// Populate the "babelHelpers" global with Babel's helper utilities.
+runCodeInTestContext(buildExternalHelpers());
+
+/**
+ * A basic implementation of CommonJS so we can execute `babel-polyfill` inside our test context.
+ * This allows us to run our unittests
+ */
+function runModuleInTestContext(id: string, relativeFilename: string) {
+ let filename;
+ if (id[0] === ".") {
+ filename = require.resolve(path.resolve(path.dirname(relativeFilename), id));
+ } else {
+ // This code is a gross hack using internal APIs, but we also have the same logic in babel-core
+ // to resolve presets and plugins, so if this breaks, we'll have even worse issues to deal with.
+ const relativeMod = new Module();
+ relativeMod.id = relativeFilename;
+ relativeMod.filename = relativeFilename;
+ relativeMod.paths = Module._nodeModulePaths(path.dirname(relativeFilename));
+ try {
+ filename = Module._resolveFilename(id, relativeMod);
+ } catch (err) {
+ filename = null;
+ }
+
+ // Expose Node-internal modules if the tests want them. Note, this will not execute inside
+ // the context's global scope.
+ if (filename === id) return require(id);
+ }
+
+ if (moduleCache[filename]) return moduleCache[filename].exports;
+
+ const module = moduleCache[filename] = {
+ id: filename,
+ exports: {},
+ };
+ const dirname = path.dirname(filename);
+ const req = (id) => runModuleInTestContext(id, filename);
+
+ const src = fs.readFileSync(filename, "utf8");
+ const code = `(function (exports, require, module, __filename, __dirname) {${src}\n});`;
+
+ vm.runInContext(code, testContext, {
+ filename,
+ displayErrors: true,
+ }).call(module.exports, module.exports, req, module, filename, dirname);
+
+ return module.exports;
+}
+
+/**
+ * Run the given snippet of code inside a CommonJS module
+ */
+function runCodeInTestContext(code: string, opts: {filename?: string} = {}) {
+ const filename = opts.filename || null;
+ const dirname = filename ? path.dirname(filename) : null;
+ const req = filename ? ((id) => runModuleInTestContext(id, filename)) : null;
+
+ const module = {
+ id: filename,
+ exports: {},
+ };
+
+ // Expose the test options as "opts", but otherwise run the test in a CommonJS-like environment.
+ // Note: This isn't doing .call(module.exports, ...) because some of our tests currently
+ // rely on 'this === global'.
+ const src = `(function(exports, require, module, __filename, __dirname, opts) {${code}\n});`;
+ return vm.runInContext(src, testContext, {
+ filename,
+ displayErrors: true,
+ })(module.exports, req, module, filename, dirname, opts);
+}
function wrapPackagesArray(type, names, optionsDir) {
return (names || []).map(function (val) {
@@ -68,12 +154,11 @@ function run(task) {
if (execCode) {
const execOpts = getOpts(exec);
- const execDirName = path.dirname(exec.loc);
result = babel.transform(execCode, execOpts);
execCode = result.code;
try {
- resultExec = runExec(execOpts, execCode, execDirName);
+ resultExec = runCodeInTestContext(execCode, execOpts);
} catch (err) {
err.message = exec.loc + ": " + err.message;
err.message += codeFrame(execCode);
@@ -114,23 +199,6 @@ function run(task) {
}
}
-function runExec(opts, execCode, execDirname) {
- const sandbox = {
- ...helpers,
- babelHelpers,
- assert: chai.assert,
- transform: babel.transform,
- opts,
- exports: {},
- require(id) {
- return require(id[0] === "." ? path.resolve(execDirname, id) : id);
- }
- };
-
- const fn = new Function(...Object.keys(sandbox), execCode);
- return fn.apply(null, Object.values(sandbox));
-}
-
export default function (
fixturesLoc: string,
name: string,
From 387123672396bbcdd048bdd9d045f0e088a36b2b Mon Sep 17 00:00:00 2001
From: Toru Kobayashi
Date: Wed, 18 Jan 2017 04:47:04 +0900
Subject: [PATCH 067/222] transform-react-constant-elements hoists Composite
Components (#5137) [skip ci]
---
.../README.md | 6 ------
1 file changed, 6 deletions(-)
diff --git a/packages/babel-plugin-transform-react-constant-elements/README.md b/packages/babel-plugin-transform-react-constant-elements/README.md
index 6a75ab7a4a..4f0db40e03 100644
--- a/packages/babel-plugin-transform-react-constant-elements/README.md
+++ b/packages/babel-plugin-transform-react-constant-elements/README.md
@@ -37,12 +37,6 @@ const Hr = () => {