Split @babel/runtime into two separate runtime modules.

This commit is contained in:
Logan Smyth
2018-06-24 10:50:26 -07:00
parent 3210a7a873
commit a8224d40e2
74 changed files with 382 additions and 122 deletions

View File

@@ -10,10 +10,10 @@ const t = require("@babel/types");
const transformRuntime = require("../");
const corejs2Definitions = require("../lib/definitions").default;
writeHelpers("@babel/runtime", { corejs2: false });
writeHelpers("@babel/runtime");
writeCoreJS2("@babel/runtime");
writeHelpers("@babel/runtime", { corejs2: true });
writeCoreJS2("@babel/runtime-corejs2");
writeHelpers("@babel/runtime-corejs2", { corejs: 2 });
function writeCoreJS2(runtimeName) {
const pkgDirname = getRuntimeRoot(runtimeName);
@@ -40,32 +40,28 @@ function writeCoreJS2(runtimeName) {
});
}
function writeHelpers(runtimeName, { corejs2 } = {}) {
writeHelperFiles(runtimeName, { corejs2, esm: false });
writeHelperFiles(runtimeName, { corejs2, esm: true });
function writeHelpers(runtimeName, { corejs } = {}) {
writeHelperFiles(runtimeName, { corejs, esm: false });
writeHelperFiles(runtimeName, { corejs, esm: true });
}
function writeHelperFiles(runtimeName, { esm, corejs2 }) {
function writeHelperFiles(runtimeName, { esm, corejs }) {
const pkgDirname = getRuntimeRoot(runtimeName);
for (const helperName of helpers.list) {
const helperFilename = path.join(
pkgDirname,
"helpers",
corejs2 ? "" : "builtin",
esm ? "es6" : "",
esm ? "esm" : "",
`${helperName}.js`
);
outputFile(
helperFilename,
buildHelper(
runtimeName,
pkgDirname,
helperFilename,
helperName,
{ esm, corejs2 }
)
buildHelper(runtimeName, pkgDirname, helperFilename, helperName, {
esm,
corejs,
})
);
}
}
@@ -84,7 +80,7 @@ function buildHelper(
pkgDirname,
helperFilename,
helperName,
{ esm, corejs2 }
{ esm, corejs }
) {
const tree = t.program([], [], esm ? "module" : "script");
const dependencies = {};
@@ -112,7 +108,7 @@ function buildHelper(
return babel.transformFromAst(tree, null, {
presets: [[require("@babel/preset-env"), { modules: false }]],
plugins: [
[transformRuntime, { useBuiltIns: !corejs2, useESModules: esm }],
[transformRuntime, { corejs, useESModules: esm }],
buildRuntimeRewritePlugin(
runtimeName,
path.relative(path.dirname(helperFilename), pkgDirname),
@@ -127,7 +123,7 @@ function buildRuntimeRewritePlugin(runtimeName, relativePath, helperName) {
node.value =
helpers.list.indexOf(node.value) !== -1
? `./${node.value}`
: node.value.replace(runtimeName, relativePath);
: node.value.replace(runtimeName + "/", relativePath + "/");
}
return {

View File

@@ -8,7 +8,7 @@ export default declare((api, options) => {
api.assertVersion(7);
const {
corejsVersion = false,
corejs: corejsVersion = false,
helpers: useRuntimeHelpers = true,
regenerator: useRuntimeRegenerator = true,
useESModules = false,
@@ -34,7 +34,7 @@ export default declare((api, options) => {
(typeof corejsVersion !== "string" || corejsVersion !== "2")
) {
throw new Error(
`The 'corejsVersion' option must be undefined, false, or 2, or '2', ` +
`The 'corejs' option must be undefined, false, or 2, or '2', ` +
`but got ${JSON.stringify(corejsVersion)}.`,
);
}
@@ -50,7 +50,7 @@ export default declare((api, options) => {
);
} else {
throw new Error(
"The 'useBuiltIns' option has been removed. Use the 'corejsVersion'" +
"The 'useBuiltIns' option has been removed. Use the 'corejs'" +
"option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.",
);
}
@@ -63,7 +63,7 @@ export default declare((api, options) => {
);
} else {
throw new Error(
"The 'polyfill' option has been removed. Use the 'corejsVersion'" +
"The 'polyfill' option has been removed. Use the 'corejs'" +
"option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.",
);
}
@@ -75,9 +75,11 @@ export default declare((api, options) => {
);
}
const helpersDir = useESModules ? "helpers/es6" : "helpers";
const helpersDir = useESModules ? "helpers/esm" : "helpers";
const injectCoreJS2 = `${corejsVersion}` === "2";
const moduleName = "@babel/runtime";
const moduleName = injectCoreJS2
? "@babel/runtime-corejs2"
: "@babel/runtime";
const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"];
@@ -104,7 +106,7 @@ export default declare((api, options) => {
isInteropHelper && !isModule(file.path) ? 4 : undefined;
return this.addDefaultImport(
`${moduleName}/${helpersDir}/${injectCoreJS2 ? "" : "builtin/"}${name}`,
`${moduleName}/${helpersDir}/${name}`,
name,
blockHoist,
);

View File

@@ -0,0 +1,7 @@
obj.constructor === Object;
obj.constructor === Promise;
Symbol();
Symbol("test");
new Map();

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"]
}

View File

@@ -0,0 +1,14 @@
var _Map = require("@babel/runtime-corejs2/core-js/map");
var _Symbol = require("@babel/runtime-corejs2/core-js/symbol");
var _Promise = require("@babel/runtime-corejs2/core-js/promise");
obj.constructor === Object;
obj.constructor === _Promise;
_Symbol();
_Symbol("test");
new _Map();

View File

@@ -0,0 +1 @@
Promise.resolve;

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"]
}

View File

@@ -0,0 +1,3 @@
var _Promise = require("@babel/runtime-corejs2/core-js/promise");
_Promise.resolve;

View File

@@ -0,0 +1 @@
class Foo {}

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-classes"]
}

View File

@@ -0,0 +1,7 @@
var _classCallCheck = require("@babel/runtime-corejs2/helpers/classCallCheck");
let Foo = function Foo() {
"use strict";
_classCallCheck(this, Foo);
};

View File

@@ -0,0 +1,3 @@
for (var i of arr) {
}

View File

@@ -0,0 +1,3 @@
{
"plugins": ["transform-for-of", ["transform-runtime", { "corejs": 2 }]]
}

View File

@@ -0,0 +1,24 @@
var _getIterator = require("@babel/runtime-corejs2/core-js/get-iterator");
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = _getIterator(arr), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var i = _step.value;
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}

View File

@@ -0,0 +1,9 @@
import foo, * as bar from "someModule";
export const myWord = Symbol("abc");
export function* giveWord () {
yield myWord;
}
foo;
bar;

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"]
}

View File

@@ -0,0 +1,24 @@
import _regeneratorRuntime from "@babel/runtime-corejs2/regenerator";
import _Symbol from "@babel/runtime-corejs2/core-js/symbol";
var _marked =
/*#__PURE__*/
_regeneratorRuntime.mark(giveWord);
import foo, * as bar from "someModule";
export const myWord = _Symbol("abc");
export function giveWord() {
return _regeneratorRuntime.wrap(function giveWord$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return myWord;
case 2:
case "end":
return _context.stop();
}
}, _marked, this);
}
foo;
bar;

View File

@@ -0,0 +1,5 @@
import foo from "foo";
class Example {
method() {}
}

View File

@@ -0,0 +1,7 @@
{
"plugins": [
["transform-runtime", { "corejs": 2 }],
"transform-modules-commonjs",
"transform-classes"
]
}

View File

@@ -0,0 +1,23 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/createClass"));
var _foo = _interopRequireDefault(require("foo"));
let Example =
/*#__PURE__*/
function () {
function Example() {
(0, _classCallCheck2.default)(this, Example);
}
(0, _createClass2.default)(Example, [{
key: "method",
value: function method() {}
}]);
return Example;
}();

View File

@@ -0,0 +1,4 @@
import foo from "bar";
foo;
export * from "mod";

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-modules-commonjs"]
}

View File

@@ -0,0 +1,28 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
var _Object$defineProperty = require("@babel/runtime-corejs2/core-js/object/define-property");
var _Object$keys = require("@babel/runtime-corejs2/core-js/object/keys");
Object.defineProperty(exports, "__esModule", {
value: true
});
var _bar = _interopRequireDefault(require("bar"));
var _mod = require("mod");
_Object$keys(_mod).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
_Object$defineProperty(exports, key, {
enumerable: true,
get: function () {
return _mod[key];
}
});
});
_bar.default;

View File

@@ -0,0 +1 @@
class Foo {}

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "helpers": false, "corejs": 2 }], "transform-classes"]
}

View File

@@ -0,0 +1,7 @@
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
let Foo = function Foo() {
"use strict";
_classCallCheck(this, Foo);
};

View File

@@ -0,0 +1,2 @@
void function* () {
};

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"]
}

View File

@@ -0,0 +1,13 @@
var _regeneratorRuntime = require("@babel/runtime-corejs2/regenerator");
void
/*#__PURE__*/
_regeneratorRuntime.mark(function _callee() {
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
case "end":
return _context.stop();
}
}, _callee, this);
});

View File

@@ -0,0 +1 @@
Symbol.iterator in Object(arr);

View File

@@ -0,0 +1,6 @@
{
"plugins": [
["transform-runtime", { "corejs": 2 }],
"transform-regenerator"
]
}

View File

@@ -0,0 +1,3 @@
var _isIterable = require("@babel/runtime-corejs2/core-js/is-iterable");
_isIterable(Object(arr));

View File

@@ -0,0 +1 @@
Symbol.iterator;

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-regenerator"]
}

View File

@@ -0,0 +1,3 @@
var _Symbol$iterator = require("@babel/runtime-corejs2/core-js/symbol/iterator");
_Symbol$iterator;

View File

@@ -1,4 +1,4 @@
var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck");
var _classCallCheck = require("@babel/runtime/helpers/classCallCheck");
let Foo = function Foo() {
"use strict";

View File

@@ -1,6 +1,6 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2, "useESModules": true }], "transform-classes"]
}

View File

@@ -0,0 +1,23 @@
var _classCallCheck = require("@babel/runtime-corejs2/helpers/esm/classCallCheck");
var _possibleConstructorReturn = require("@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn");
var _getPrototypeOf = require("@babel/runtime-corejs2/helpers/esm/getPrototypeOf");
var _inherits = require("@babel/runtime-corejs2/helpers/esm/inherits");
let Foo =
/*#__PURE__*/
function (_Bar) {
"use strict";
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments));
}
return Foo;
}(Bar);

View File

@@ -0,0 +1,3 @@
{
"plugins": [["transform-runtime", { "corejs": 2 }], "transform-classes"]
}

View File

@@ -0,0 +1,23 @@
var _classCallCheck = require("@babel/runtime-corejs2/helpers/classCallCheck");
var _possibleConstructorReturn = require("@babel/runtime-corejs2/helpers/possibleConstructorReturn");
var _getPrototypeOf = require("@babel/runtime-corejs2/helpers/getPrototypeOf");
var _inherits = require("@babel/runtime-corejs2/helpers/inherits");
let Foo =
/*#__PURE__*/
function (_Bar) {
"use strict";
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments));
}
return Foo;
}(Bar);

View File

@@ -1,3 +0,0 @@
{
"plugins": [["transform-runtime", { "corejsVersion": 2, "useESModules": true }], "transform-classes"]
}

View File

@@ -1,23 +0,0 @@
var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck");
var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn");
var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf");
var _inherits = require("@babel/runtime/helpers/es6/inherits");
let Foo =
/*#__PURE__*/
function (_Bar) {
"use strict";
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments));
}
return Foo;
}(Bar);

View File

@@ -1,3 +0,0 @@
{
"plugins": [["transform-runtime", { "corejsVersion": 2 }], "transform-classes"]
}

View File

@@ -1,23 +0,0 @@
var _classCallCheck = require("@babel/runtime/helpers/classCallCheck");
var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn");
var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf");
var _inherits = require("@babel/runtime/helpers/inherits");
let Foo =
/*#__PURE__*/
function (_Bar) {
"use strict";
_inherits(Foo, _Bar);
function Foo() {
_classCallCheck(this, Foo);
return _possibleConstructorReturn(this, _getPrototypeOf(Foo).apply(this, arguments));
}
return Foo;
}(Bar);

View File

@@ -1,10 +1,10 @@
var _classCallCheck = require("@babel/runtime/helpers/es6/builtin/classCallCheck");
var _classCallCheck = require("@babel/runtime/helpers/esm/classCallCheck");
var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/builtin/possibleConstructorReturn");
var _possibleConstructorReturn = require("@babel/runtime/helpers/esm/possibleConstructorReturn");
var _getPrototypeOf = require("@babel/runtime/helpers/es6/builtin/getPrototypeOf");
var _getPrototypeOf = require("@babel/runtime/helpers/esm/getPrototypeOf");
var _inherits = require("@babel/runtime/helpers/es6/builtin/inherits");
var _inherits = require("@babel/runtime/helpers/esm/inherits");
let Foo =
/*#__PURE__*/