fix remaining babel helper issues

This commit is contained in:
Sebastian McKenzie 2015-11-11 22:45:50 -08:00
parent ca1ca2055d
commit fe5aff09a4
11 changed files with 53 additions and 44 deletions

View File

@ -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))
));

View File

@ -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];

View File

@ -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;

View File

@ -1 +1 @@
babelHelpers._instanceof(a, b);
babelHelpers.instanceof(a, b);

View File

@ -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";

View File

@ -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"
});

View File

@ -1,2 +1,2 @@
React.createElement(Component, babelHelpers._extends({}, props, {
React.createElement(Component, babelHelpers.extends({}, props, {
sound: "moo" }));

View File

@ -1 +1 @@
React.createElement(Component, babelHelpers._extends({}, x, { y: 2, z: true }));
React.createElement(Component, babelHelpers.extends({}, x, { y: 2, z: true }));

View File

@ -1 +1 @@
React.createElement(Component, babelHelpers._extends({ y: 2, z: true }, x));
React.createElement(Component, babelHelpers.extends({ y: 2, z: true }, x));

View File

@ -1 +1 @@
React.createElement(Component, babelHelpers._extends({ y: 2 }, x, { z: true }));
React.createElement(Component, babelHelpers.extends({ y: 2 }, x, { z: true }));

View File

@ -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));