diff --git a/packages/babel-core/src/tools/build-external-helpers.js b/packages/babel-core/src/tools/build-external-helpers.js index 057e4b69e9..063ad8a5be 100644 --- a/packages/babel-core/src/tools/build-external-helpers.js +++ b/packages/babel-core/src/tools/build-external-helpers.js @@ -74,9 +74,9 @@ function buildVar(namespace, builder) { function buildHelpers(body, namespace, whitelist) { each(helpers.list, function (name) { - if (whitelist && whitelist.indexOf(name) >= 0) return; + if (whitelist && whitelist.indexOf(name) < 0) return; - let key = t.identifier(t.toIdentifier(name)); + let key = t.identifier(name); body.push(t.expressionStatement( t.assignmentExpression("=", t.memberExpression(namespace, key), helpers.get(name)) )); diff --git a/packages/babel-helpers/src/helpers.js b/packages/babel-helpers/src/helpers.js index fc4b8ebbf2..6b081e8df2 100644 --- a/packages/babel-helpers/src/helpers.js +++ b/packages/babel-helpers/src/helpers.js @@ -1,12 +1,15 @@ import template from "babel-template"; -export let _typeof = template(` +let helpers = {}; +export default helpers; + +helpers.typeof = template(` (function (obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }); `); -export let createRawReactElement = template(` +helpers.createRawReactElement = template(` (function () { var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7; @@ -24,7 +27,7 @@ export let createRawReactElement = template(` })() `); -export let asyncToGenerator = template(` +helpers.asyncToGenerator = template(` (function (fn) { return function () { var gen = fn.apply(this, arguments); @@ -56,7 +59,7 @@ export let asyncToGenerator = template(` `); -export let classCallCheck = template(` +helpers.classCallCheck = template(` (function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); @@ -64,7 +67,7 @@ export let classCallCheck = template(` }); `); -export let createClass = template(` +helpers.createClass = template(` (function() { function defineProperties(target, props) { for (var i = 0; i < props.length; i ++) { @@ -84,7 +87,7 @@ export let createClass = template(` })() `); -export let defaultProps = template(` +helpers.defaultProps = template(` (function (defaultProps, props) { if (defaultProps) { for (var propName in defaultProps) { @@ -98,7 +101,7 @@ export let defaultProps = template(` `); -export let defineEnumerableProperties = template(` +helpers.defineEnumerableProperties = template(` (function (obj, descs) { for (var key in descs) { var desc = descs[key]; @@ -110,7 +113,7 @@ export let defineEnumerableProperties = template(` }) `); -export let defaults = template(` +helpers.defaults = template(` (function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { @@ -124,7 +127,7 @@ export let defaults = template(` }) `); -export let defineProperty = template(` +helpers.defineProperty = template(` (function (obj, key, value) { // Shortcircuit the slow defineProperty path when possible. // We are trying to avoid issues where setters defined on the @@ -145,7 +148,7 @@ export let defineProperty = template(` }); `); -export let _extends = template(` +helpers.extends = template(` Object.assign || (function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; @@ -159,7 +162,7 @@ export let _extends = template(` }) `); -export let get = template(` +helpers.get = template(` (function get(object, property, receiver) { if (object === null) object = Function.prototype; @@ -188,7 +191,7 @@ export let get = template(` `); -export let inherits = template(` +helpers.inherits = template(` (function (subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); @@ -205,7 +208,7 @@ export let inherits = template(` }) `); -export let _instanceof = template(` +helpers.instanceof = template(` (function (left, right) { if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) { return right[Symbol.hasInstance](left); @@ -216,13 +219,13 @@ export let _instanceof = template(` `); -export let interopRequireDefault = template(` +helpers.interopRequireDefault = template(` (function (obj) { return obj && obj.__esModule ? obj : { default: obj }; }) `); -export let interopRequireWildcard = template(` +helpers.interopRequireWildcard = template(` (function (obj) { if (obj && obj.__esModule) { return obj; @@ -239,7 +242,7 @@ export let interopRequireWildcard = template(` }) `); -export let newArrowCheck = template(` +helpers.newArrowCheck = template(` (function (innerThis, boundThis) { if (innerThis !== boundThis) { throw new TypeError("Cannot instantiate an arrow function"); @@ -247,13 +250,13 @@ export let newArrowCheck = template(` }); `); -export let objectDestructuringEmpty = template(` +helpers.objectDestructuringEmpty = template(` (function (obj) { if (obj == null) throw new TypeError("Cannot destructure undefined"); }); `); -export let objectWithoutProperties = template(` +helpers.objectWithoutProperties = template(` (function (obj, keys) { var target = {}; for (var i in obj) { @@ -265,7 +268,7 @@ export let objectWithoutProperties = template(` }) `); -export let possibleConstructorReturn = template(` +helpers.possibleConstructorReturn = template(` (function (self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); @@ -274,11 +277,11 @@ export let possibleConstructorReturn = template(` }); `); -export let selfGlobal = template(` +helpers.selfGlobal = template(` typeof global === "undefined" ? self : global `); -export let set = template(` +helpers.set = template(` (function set(object, property, value, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); @@ -302,7 +305,7 @@ export let set = template(` }); `); -export let slicedToArray = template(` +helpers.slicedToArray = template(` (function () { // Broken out into a separate function to avoid deoptimizations due to the try/catch for the // array iterator case. @@ -351,7 +354,7 @@ export let slicedToArray = template(` })(); `); -export let slicedToArrayLoose = template(` +helpers.slicedToArrayLoose = template(` (function (arr, i) { if (Array.isArray(arr)) { return arr; @@ -368,7 +371,7 @@ export let slicedToArrayLoose = template(` }); `); -export let taggedTemplateLiteral = template(` +helpers.taggedTemplateLiteral = template(` (function (strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } @@ -376,14 +379,14 @@ export let taggedTemplateLiteral = template(` }); `); -export let taggedTemplateLiteralLoose = template(` +helpers.taggedTemplateLiteralLoose = template(` (function (strings, raw) { strings.raw = raw; return strings; }); `); -export let temporalRef = template(` +helpers.temporalRef = template(` (function (val, name, undef) { if (val === undef) { throw new ReferenceError(name + " is not defined - temporal dead zone"); @@ -393,17 +396,17 @@ export let temporalRef = template(` }) `); -export let temporalUndefined = template(` +helpers.temporalUndefined = template(` ({}) `); -export let toArray = template(` +helpers.toArray = template(` (function (arr) { return Array.isArray(arr) ? arr : Array.from(arr); }); `); -export let toConsumableArray = template(` +helpers.toConsumableArray = template(` (function (arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i]; diff --git a/packages/babel-helpers/src/index.js b/packages/babel-helpers/src/index.js index 46fb1080e0..96a5b4cb10 100644 --- a/packages/babel-helpers/src/index.js +++ b/packages/babel-helpers/src/index.js @@ -1,7 +1,7 @@ -import * as helpers from "./helpers"; +import helpers from "./helpers"; export function get(name) { - let fn = helpers[name] || helpers[`_${name}`]; + let fn = helpers[name]; if (!fn) throw ReferenceError; return fn().expression; diff --git a/packages/babel-plugin-transform-es2015-instanceof/test/fixtures/instanceof/instanceof/expected.js b/packages/babel-plugin-transform-es2015-instanceof/test/fixtures/instanceof/instanceof/expected.js index 5991efed09..1772fba566 100644 --- a/packages/babel-plugin-transform-es2015-instanceof/test/fixtures/instanceof/instanceof/expected.js +++ b/packages/babel-plugin-transform-es2015-instanceof/test/fixtures/instanceof/instanceof/expected.js @@ -1 +1 @@ -babelHelpers._instanceof(a, b); +babelHelpers.instanceof(a, b); diff --git a/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/typeof/expected.js b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/typeof/expected.js index 50931cbb5f..26a766f3d5 100644 --- a/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/typeof/expected.js +++ b/packages/babel-plugin-transform-es2015-typeof-symbol/test/fixtures/symbols/typeof/expected.js @@ -1,5 +1,5 @@ var s = Symbol("s"); -assert.ok((typeof s === "undefined" ? "undefined" : babelHelpers._typeof(s)) === "symbol"); -assert.equal(typeof s === "undefined" ? "undefined" : babelHelpers._typeof(s), "symbol"); -assert.equal(babelHelpers._typeof(babelHelpers._typeof(s.foo)), "symbol"); +assert.ok((typeof s === "undefined" ? "undefined" : babelHelpers.typeof(s)) === "symbol"); +assert.equal(typeof s === "undefined" ? "undefined" : babelHelpers.typeof(s), "symbol"); +assert.equal(babelHelpers.typeof(babelHelpers.typeof(s.foo)), "symbol"); typeof s === "string"; diff --git a/packages/babel-plugin-transform-proto-to-assign/test/fixtures/proto-to-assign/object-literal/expected.js b/packages/babel-plugin-transform-proto-to-assign/test/fixtures/proto-to-assign/object-literal/expected.js index 66c96c814c..d1a37e69a3 100644 --- a/packages/babel-plugin-transform-proto-to-assign/test/fixtures/proto-to-assign/object-literal/expected.js +++ b/packages/babel-plugin-transform-proto-to-assign/test/fixtures/proto-to-assign/object-literal/expected.js @@ -1,9 +1,9 @@ -var foo = babelHelpers._extends({}, bar); +var foo = babelHelpers.extends({}, bar); -var foo = babelHelpers._extends({}, bar, { +var foo = babelHelpers.extends({}, bar, { bar: "foo" }); -var foo = babelHelpers._extends({}, bar, { +var foo = babelHelpers.extends({}, bar, { bar: "foo" }); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/expected.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/expected.js index 6b53e13c76..4f77e7827b 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/expected.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/adds-appropriate-newlines-when-using-spread-attribute/expected.js @@ -1,2 +1,2 @@ -React.createElement(Component, babelHelpers._extends({}, props, { +React.createElement(Component, babelHelpers.extends({}, props, { sound: "moo" })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/expected.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/expected.js index 1f73d98596..9e45d91cee 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/expected.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-first-spread-attributes/expected.js @@ -1 +1 @@ -React.createElement(Component, babelHelpers._extends({}, x, { y: 2, z: true })); +React.createElement(Component, babelHelpers.extends({}, x, { y: 2, z: true })); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/expected.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/expected.js index f4d1b0c28a..893deb2dba 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/expected.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-last-spread-attributes/expected.js @@ -1 +1 @@ -React.createElement(Component, babelHelpers._extends({ y: 2, z: true }, x)); +React.createElement(Component, babelHelpers.extends({ y: 2, z: true }, x)); diff --git a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/expected.js b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/expected.js index 47b25a627b..88573fe613 100644 --- a/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/expected.js +++ b/packages/babel-plugin-transform-react-jsx/test/fixtures/react/wraps-props-in-react-spread-for-middle-spread-attributes/expected.js @@ -1 +1 @@ -React.createElement(Component, babelHelpers._extends({ y: 2 }, x, { z: true })); +React.createElement(Component, babelHelpers.extends({ y: 2 }, x, { z: true })); diff --git a/packages/babel-runtime/scripts/build-dist.js b/packages/babel-runtime/scripts/build-dist.js index c07a62fe7b..8df84595e3 100644 --- a/packages/babel-runtime/scripts/build-dist.js +++ b/packages/babel-runtime/scripts/build-dist.js @@ -1,6 +1,7 @@ var outputFile = require("output-file-sync"); var each = require("lodash/collection/each"); var fs = require("fs"); +var _ = require("lodash"); var coreDefinitions = require("babel-plugin-transform-runtime").definitions; @@ -84,6 +85,11 @@ function buildHelper(helperName) { each(helpers.list, function (helperName) { writeFile("helpers/" + helperName + ".js", buildHelper(helperName)); + + // compat + var helperAlias = _.kebabCase(helperName); + writeFile("helpers/_" + helperAlias + ".js", buildHelper(helperName)); + writeFile("helpers/" + helperAlias + ".js", buildHelper(helperName)); }); writeFile("regenerator/index.js", readFile("regenerator/runtime-module", true));