update to core-js 0.8.0
This commit is contained in:
parent
cb0026edfe
commit
07078138f3
6
.gitignore
vendored
6
.gitignore
vendored
@ -11,8 +11,6 @@ test/core/tmp
|
||||
coverage
|
||||
dist
|
||||
.package.json
|
||||
packages/babel-runtime/es5/helpers/*.js
|
||||
packages/babel-runtime/es5/regenerator/*.js
|
||||
packages/babel-runtime/es3/helpers/*.js
|
||||
packages/babel-runtime/es3/regenerator/*.js
|
||||
packages/babel-runtime/helpers/*.js
|
||||
packages/babel-runtime/regenerator/*.js
|
||||
lib
|
||||
|
||||
@ -30,7 +30,7 @@
|
||||
"ast-types": "~0.7.0",
|
||||
"chalk": "^1.0.0",
|
||||
"convert-source-map": "^0.5.0",
|
||||
"core-js": "^0.6.0",
|
||||
"core-js": "^0.8.0",
|
||||
"debug": "^2.1.1",
|
||||
"detect-indent": "^3.0.0",
|
||||
"estraverse": "^1.9.1",
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
module.exports = {
|
||||
"default": require("core-js/client/library"),
|
||||
__esModule: true
|
||||
};
|
||||
@ -5,6 +5,6 @@
|
||||
"repository": "babel/babel",
|
||||
"author": "Sebastian McKenzie <sebmck@gmail.com>",
|
||||
"dependencies": {
|
||||
"core-js": "^0.6.0"
|
||||
"core-js": "^0.8.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,39 +39,34 @@ function writeRootFile(filename, content) {
|
||||
outputFile(filename, content);
|
||||
}
|
||||
|
||||
function doVersion(version) {
|
||||
var transformer = version + ".runtime";
|
||||
|
||||
function writeFile(filename, content) {
|
||||
return writeRootFile(version + "/" + filename, content);
|
||||
}
|
||||
|
||||
function selfContainify(code) {
|
||||
return transform(code, {
|
||||
optional: [transformer]
|
||||
}).code;
|
||||
}
|
||||
|
||||
function buildHelper(helperName) {
|
||||
var tree = t.program(
|
||||
util.template("self-contained-helpers-head", {
|
||||
HELPER: util.template("helper-" + helperName)
|
||||
})
|
||||
);
|
||||
|
||||
return transform.fromAst(tree, null, {
|
||||
optional: [transformer]
|
||||
}).code;
|
||||
}
|
||||
|
||||
each(File.helpers, function (helperName) {
|
||||
writeFile("helpers/" + helperName + ".js", buildHelper(helperName));
|
||||
});
|
||||
|
||||
writeFile("regenerator/index.js", readFile("regenerator-babel/runtime-module", true));
|
||||
writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-babel/runtime")));
|
||||
function writeFile(filename, content) {
|
||||
return writeRootFile(filename, content);
|
||||
}
|
||||
|
||||
doVersion("es3");
|
||||
doVersion("es5");
|
||||
function selfContainify(code) {
|
||||
return transform(code, {
|
||||
optional: ["runtime"]
|
||||
}).code;
|
||||
}
|
||||
|
||||
function buildHelper(helperName) {
|
||||
var tree = t.program(
|
||||
util.template("self-contained-helpers-head", {
|
||||
HELPER: util.template("helper-" + helperName)
|
||||
})
|
||||
);
|
||||
|
||||
return transform.fromAst(tree, null, {
|
||||
optional: ["runtime"]
|
||||
}).code;
|
||||
}
|
||||
|
||||
each(File.helpers, function (helperName) {
|
||||
writeFile("helpers/" + helperName + ".js", buildHelper(helperName));
|
||||
});
|
||||
|
||||
writeFile("regenerator/index.js", readFile("regenerator-babel/runtime-module", true));
|
||||
writeFile("regenerator/runtime.js", selfContainify(readFile("regenerator-babel/runtime")));
|
||||
|
||||
updatePackage();
|
||||
|
||||
@ -1,101 +0,0 @@
|
||||
import includes from "lodash/collection/includes";
|
||||
import * as util from "../../util";
|
||||
import has from "lodash/object/has";
|
||||
import * as t from "../../types";
|
||||
|
||||
var isSymbolIterator = t.buildMatchMemberExpression("Symbol.iterator");
|
||||
|
||||
var ALIASABLE_CONSTRUCTORS = [
|
||||
"Symbol",
|
||||
"Promise",
|
||||
"Map",
|
||||
"WeakMap",
|
||||
"Set",
|
||||
"WeakSet"
|
||||
];
|
||||
|
||||
export default function (exports, core, prefix) {
|
||||
var moduleName = `babel-runtime/${prefix}`;
|
||||
|
||||
function coreHas(node) {
|
||||
return node.name !== "_" && has(core, node.name);
|
||||
}
|
||||
|
||||
var astVisitor = {
|
||||
enter(node, parent, scope, file) {
|
||||
var prop;
|
||||
|
||||
if (this.isMemberExpression() && this.isReferenced()) {
|
||||
// Array.from -> _core.Array.from
|
||||
var obj = node.object;
|
||||
prop = node.property;
|
||||
|
||||
if (!t.isReferenced(obj, node)) return;
|
||||
|
||||
if (!node.computed && coreHas(obj) && has(core[obj.name], prop.name) && !scope.getBindingIdentifier(obj.name)) {
|
||||
this.skip();
|
||||
return t.prependToMemberExpression(node, file.get("coreIdentifier"));
|
||||
}
|
||||
} else if (this.isReferencedIdentifier() && !t.isMemberExpression(parent) && includes(ALIASABLE_CONSTRUCTORS, node.name) && !scope.getBindingIdentifier(node.name)) {
|
||||
// Symbol() -> _core.Symbol(); new Promise -> new _core.Promise
|
||||
return t.memberExpression(file.get("coreIdentifier"), node);
|
||||
} else if (this.isCallExpression()) {
|
||||
// arr[Symbol.iterator]() -> _core.$for.getIterator(arr)
|
||||
|
||||
var callee = node.callee;
|
||||
if (node.arguments.length) return false;
|
||||
|
||||
if (!t.isMemberExpression(callee)) return false;
|
||||
if (!callee.computed) return false;
|
||||
|
||||
prop = callee.property;
|
||||
if (!isSymbolIterator(prop)) return false;
|
||||
|
||||
return util.template("corejs-iterator", {
|
||||
CORE_ID: file.get("coreIdentifier"),
|
||||
VALUE: callee.object
|
||||
});
|
||||
} else if (this.isBinaryExpression()) {
|
||||
// Symbol.iterator in arr -> core.$for.isIterable(arr)
|
||||
|
||||
if (node.operator !== "in") return;
|
||||
|
||||
var left = node.left;
|
||||
if (!isSymbolIterator(left)) return;
|
||||
|
||||
return util.template("corejs-is-iterator", {
|
||||
CORE_ID: file.get("coreIdentifier"),
|
||||
VALUE: node.right
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.metadata = {
|
||||
optional: true
|
||||
};
|
||||
|
||||
exports.Program = function (node, parent, scope, file) {
|
||||
this.traverse(astVisitor, file);
|
||||
};
|
||||
|
||||
exports.pre = function (file) {
|
||||
file.set("helperGenerator", function (name) {
|
||||
return file.addImport(`${moduleName}/helpers/${name}`, name);
|
||||
});
|
||||
|
||||
file.setDynamic("coreIdentifier", function () {
|
||||
return file.addImport(`${moduleName}/core-js`, "core");
|
||||
});
|
||||
|
||||
file.setDynamic("regeneratorIdentifier", function () {
|
||||
return file.addImport(`${moduleName}/regenerator`, "regeneratorRuntime");
|
||||
});
|
||||
};
|
||||
|
||||
exports.Identifier = function (node, parent, scope, file) {
|
||||
if (this.isReferencedIdentifier({ name: "regeneratorRuntime" })) {
|
||||
return file.get("regeneratorIdentifier");
|
||||
}
|
||||
};
|
||||
};
|
||||
@ -1 +1 @@
|
||||
CORE_ID.$for.isIterable(VALUE);
|
||||
CORE_ID.isIterable(VALUE);
|
||||
|
||||
@ -1 +1 @@
|
||||
CORE_ID.$for.getIterator(VALUE);
|
||||
CORE_ID.getIterator(VALUE);
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
import core from "core-js/client/library";
|
||||
import buildRuntimeTransformer from "../../helpers/build-runtime-transformer";
|
||||
|
||||
buildRuntimeTransformer(exports, core, "es3");
|
||||
@ -83,7 +83,6 @@ export default {
|
||||
// needs to be after `regenerator` due to needing `regeneratorRuntime` references
|
||||
// needs to be after `es6.forOf` due to needing `Symbol.iterator` references
|
||||
// needs to be before `es6.modules` due to dynamic imports
|
||||
"es3.runtime": require("./es3/runtime"),
|
||||
runtime: require("./other/runtime"),
|
||||
|
||||
// needs to be before `_blockHoist` due to function hoisting etc
|
||||
|
||||
@ -1,4 +1,99 @@
|
||||
import core from "core-js/library";
|
||||
import buildRuntimeTransformer from "../../helpers/build-runtime-transformer";
|
||||
import includes from "lodash/collection/includes";
|
||||
import * as util from "../../util";
|
||||
import has from "lodash/object/has";
|
||||
import * as t from "../../types";
|
||||
|
||||
buildRuntimeTransformer(exports, core, "es5");
|
||||
var isSymbolIterator = t.buildMatchMemberExpression("Symbol.iterator");
|
||||
|
||||
var ALIASABLE_CONSTRUCTORS = [
|
||||
"Symbol",
|
||||
"Promise",
|
||||
"Map",
|
||||
"WeakMap",
|
||||
"Set",
|
||||
"WeakSet"
|
||||
];
|
||||
|
||||
function coreHas(node) {
|
||||
return node.name !== "_" && has(core, node.name);
|
||||
}
|
||||
|
||||
var astVisitor = {
|
||||
enter(node, parent, scope, file) {
|
||||
var prop;
|
||||
|
||||
if (this.isMemberExpression() && this.isReferenced()) {
|
||||
// Array.from -> _core.Array.from
|
||||
var obj = node.object;
|
||||
prop = node.property;
|
||||
|
||||
if (!t.isReferenced(obj, node)) return;
|
||||
|
||||
if (!node.computed && coreHas(obj) && has(core[obj.name], prop.name) && !scope.getBindingIdentifier(obj.name)) {
|
||||
this.skip();
|
||||
return t.prependToMemberExpression(node, file.get("coreIdentifier"));
|
||||
}
|
||||
} else if (this.isReferencedIdentifier() && !t.isMemberExpression(parent) && includes(ALIASABLE_CONSTRUCTORS, node.name) && !scope.getBindingIdentifier(node.name)) {
|
||||
// Symbol() -> _core.Symbol(); new Promise -> new _core.Promise
|
||||
return t.memberExpression(file.get("coreIdentifier"), node);
|
||||
} else if (this.isCallExpression()) {
|
||||
// arr[Symbol.iterator]() -> _core.$for.getIterator(arr)
|
||||
|
||||
var callee = node.callee;
|
||||
if (node.arguments.length) return false;
|
||||
|
||||
if (!t.isMemberExpression(callee)) return false;
|
||||
if (!callee.computed) return false;
|
||||
|
||||
prop = callee.property;
|
||||
if (!isSymbolIterator(prop)) return false;
|
||||
|
||||
return util.template("corejs-iterator", {
|
||||
CORE_ID: file.get("coreIdentifier"),
|
||||
VALUE: callee.object
|
||||
});
|
||||
} else if (this.isBinaryExpression()) {
|
||||
// Symbol.iterator in arr -> core.$for.isIterable(arr)
|
||||
|
||||
if (node.operator !== "in") return;
|
||||
|
||||
var left = node.left;
|
||||
if (!isSymbolIterator(left)) return;
|
||||
|
||||
return util.template("corejs-is-iterator", {
|
||||
CORE_ID: file.get("coreIdentifier"),
|
||||
VALUE: node.right
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
exports.metadata = {
|
||||
optional: true
|
||||
};
|
||||
|
||||
exports.Program = function (node, parent, scope, file) {
|
||||
this.traverse(astVisitor, file);
|
||||
};
|
||||
|
||||
exports.pre = function (file) {
|
||||
file.set("helperGenerator", function (name) {
|
||||
return file.addImport(`babel-runtime/helpers/${name}`, name);
|
||||
});
|
||||
|
||||
file.setDynamic("coreIdentifier", function () {
|
||||
return file.addImport("babel-runtime/core-js", "core");
|
||||
});
|
||||
|
||||
file.setDynamic("regeneratorIdentifier", function () {
|
||||
return file.addImport("babel-runtime/regenerator", "regeneratorRuntime");
|
||||
});
|
||||
};
|
||||
|
||||
exports.Identifier = function (node, parent, scope, file) {
|
||||
if (this.isReferencedIdentifier({ name: "regeneratorRuntime" })) {
|
||||
return file.get("regeneratorIdentifier");
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@ -1 +0,0 @@
|
||||
Array.isArray(foo);
|
||||
@ -1,5 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
var _core = require("babel-runtime/es3/core-js")["default"];
|
||||
|
||||
_core.Array.isArray(foo);
|
||||
@ -1,4 +0,0 @@
|
||||
{
|
||||
"optional": ["es3.runtime"],
|
||||
"stage": 0
|
||||
}
|
||||
@ -7,7 +7,7 @@ var _didIteratorError = false;
|
||||
var _iteratorError = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator = _core.$for.getIterator(arr), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
for (var _iterator = _core.getIterator(arr), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
var i = _step.value;
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
@ -9,7 +9,7 @@ var arr = (function () {
|
||||
var _iteratorError = undefined;
|
||||
|
||||
try {
|
||||
for (var _iterator = _core.$for.getIterator(nums), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
for (var _iterator = _core.getIterator(nums), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
var i = _step.value;
|
||||
|
||||
_arr.push(i * i);
|
||||
|
||||
@ -8,7 +8,7 @@ var _interopRequire = require("babel-runtime/es5/helpers/interop-require")["defa
|
||||
|
||||
var _interopRequireWildcard = require("babel-runtime/es5/helpers/interop-require-wildcard")["default"];
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
_core.Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
|
||||
|
||||
@ -2,4 +2,4 @@
|
||||
|
||||
var _core = require("babel-runtime/es5/core-js")["default"];
|
||||
|
||||
_core.$for.isIterable(Object(arr));
|
||||
_core.isIterable(Object(arr));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user