Default to non-corejs helpers.
This commit is contained in:
parent
9c598a8e28
commit
3210a7a873
@ -1,8 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault");
|
||||
|
||||
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
||||
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral"));
|
||||
|
||||
function _templateObject() {
|
||||
const data = (0, _taggedTemplateLiteral2.default)(["foo"]);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault");
|
||||
|
||||
var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault"));
|
||||
var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault"));
|
||||
|
||||
console.log(_interopRequireDefault2.default);
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault");
|
||||
|
||||
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
||||
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/builtin/taggedTemplateLiteral"));
|
||||
|
||||
function _templateObject() {
|
||||
const data = (0, _taggedTemplateLiteral2.default)(["foo"]);
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault3 = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
var _interopRequireDefault3 = require("@babel/runtime/helpers/builtin/interopRequireDefault");
|
||||
|
||||
var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/interopRequireDefault"));
|
||||
var _interopRequireDefault2 = _interopRequireDefault3(require("@babel/runtime/helpers/builtin/interopRequireDefault"));
|
||||
|
||||
console.log(_interopRequireDefault2.default);
|
||||
|
||||
@ -1,12 +1,10 @@
|
||||
var _regeneratorRuntime = require("@babel/runtime/regenerator");
|
||||
|
||||
var _Object$keys = require("@babel/runtime/core-js/object/keys");
|
||||
|
||||
var _marked =
|
||||
/*#__PURE__*/
|
||||
_regeneratorRuntime.mark(fn);
|
||||
|
||||
_Object$keys({});
|
||||
Object.keys({});
|
||||
|
||||
function fn() {
|
||||
return _regeneratorRuntime.wrap(function fn$(_context) {
|
||||
|
||||
@ -8,29 +8,82 @@ export default declare((api, options) => {
|
||||
api.assertVersion(7);
|
||||
|
||||
const {
|
||||
helpers,
|
||||
moduleName = "@babel/runtime",
|
||||
polyfill,
|
||||
regenerator,
|
||||
useBuiltIns,
|
||||
useESModules,
|
||||
corejsVersion = false,
|
||||
helpers: useRuntimeHelpers = true,
|
||||
regenerator: useRuntimeRegenerator = true,
|
||||
useESModules = false,
|
||||
version: runtimeVersion = "7.0.0-beta.0",
|
||||
} = options;
|
||||
const regeneratorEnabled = regenerator !== false;
|
||||
const notPolyfillOrDoesUseBuiltIns = polyfill === false || useBuiltIns;
|
||||
const isPolyfillAndUseBuiltIns = polyfill && useBuiltIns;
|
||||
const baseHelpersDir = useBuiltIns ? "helpers/builtin" : "helpers";
|
||||
const helpersDir = useESModules ? `${baseHelpersDir}/es6` : baseHelpersDir;
|
||||
|
||||
if (typeof useRuntimeRegenerator !== "boolean") {
|
||||
throw new Error(
|
||||
"The 'regenerator' option must be undefined, or a boolean.",
|
||||
);
|
||||
}
|
||||
if (typeof useRuntimeHelpers !== "boolean") {
|
||||
throw new Error("The 'helpers' option must be undefined, or a boolean.");
|
||||
}
|
||||
if (typeof useESModules !== "boolean") {
|
||||
throw new Error(
|
||||
"The 'useESModules' option must be undefined, or a boolean.",
|
||||
);
|
||||
}
|
||||
if (
|
||||
corejsVersion !== false &&
|
||||
(typeof corejsVersion !== "number" || corejsVersion !== 2) &&
|
||||
(typeof corejsVersion !== "string" || corejsVersion !== "2")
|
||||
) {
|
||||
throw new Error(
|
||||
`The 'corejsVersion' option must be undefined, false, or 2, or '2', ` +
|
||||
`but got ${JSON.stringify(corejsVersion)}.`,
|
||||
);
|
||||
}
|
||||
|
||||
function has(obj, key) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, key);
|
||||
}
|
||||
if (has(options, "useBuiltIns")) {
|
||||
if (options.useBuiltIns) {
|
||||
throw new Error(
|
||||
"The 'useBuiltIns' option has been removed. The @babel/runtime " +
|
||||
"module now uses builtins by default.",
|
||||
);
|
||||
} else {
|
||||
throw new Error(
|
||||
"The 'useBuiltIns' option has been removed. Use the 'corejsVersion'" +
|
||||
"option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.",
|
||||
);
|
||||
}
|
||||
}
|
||||
if (has(options, "polyfill")) {
|
||||
if (options.polyfill === false) {
|
||||
throw new Error(
|
||||
"The 'polyfill' option has been removed. The @babel/runtime " +
|
||||
"module now skips polyfilling by default.",
|
||||
);
|
||||
} else {
|
||||
throw new Error(
|
||||
"The 'polyfill' option has been removed. Use the 'corejsVersion'" +
|
||||
"option with value '2' to polyfill with CoreJS 2.x via @babel/runtime.",
|
||||
);
|
||||
}
|
||||
}
|
||||
if (has(options, "moduleName")) {
|
||||
throw new Error(
|
||||
"The 'moduleName' option has been removed. @babel/transform-runtime " +
|
||||
"no longer supports arbitrary runtimes.",
|
||||
);
|
||||
}
|
||||
|
||||
const helpersDir = useESModules ? "helpers/es6" : "helpers";
|
||||
const injectCoreJS2 = `${corejsVersion}` === "2";
|
||||
const moduleName = "@babel/runtime";
|
||||
|
||||
const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"];
|
||||
|
||||
return {
|
||||
pre(file) {
|
||||
if (helpers !== false) {
|
||||
if (useRuntimeHelpers) {
|
||||
file.set("helperGenerator", name => {
|
||||
// If the helper didn't exist yet at the version given, we bail
|
||||
// out and let Babel either insert it directly, or throw an error
|
||||
@ -51,21 +104,13 @@ export default declare((api, options) => {
|
||||
isInteropHelper && !isModule(file.path) ? 4 : undefined;
|
||||
|
||||
return this.addDefaultImport(
|
||||
`${moduleName}/${helpersDir}/${name}`,
|
||||
`${moduleName}/${helpersDir}/${injectCoreJS2 ? "" : "builtin/"}${name}`,
|
||||
name,
|
||||
blockHoist,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
if (isPolyfillAndUseBuiltIns) {
|
||||
throw new Error(
|
||||
"The polyfill option conflicts with useBuiltIns; use one or the other",
|
||||
);
|
||||
}
|
||||
|
||||
this.moduleName = moduleName;
|
||||
|
||||
const cache = new Map();
|
||||
|
||||
this.addDefaultImport = (source, nameHint, blockHoist) => {
|
||||
@ -94,17 +139,17 @@ export default declare((api, options) => {
|
||||
visitor: {
|
||||
ReferencedIdentifier(path) {
|
||||
const { node, parent, scope } = path;
|
||||
if (node.name === "regeneratorRuntime" && regeneratorEnabled) {
|
||||
if (node.name === "regeneratorRuntime" && useRuntimeRegenerator) {
|
||||
path.replaceWith(
|
||||
this.addDefaultImport(
|
||||
`${this.moduleName}/regenerator`,
|
||||
`${moduleName}/regenerator`,
|
||||
"regeneratorRuntime",
|
||||
),
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
if (notPolyfillOrDoesUseBuiltIns) return;
|
||||
if (!injectCoreJS2) return;
|
||||
|
||||
if (t.isMemberExpression(parent)) return;
|
||||
if (!has(definitions.builtins, node.name)) return;
|
||||
@ -121,7 +166,7 @@ export default declare((api, options) => {
|
||||
|
||||
// arr[Symbol.iterator]() -> _core.$for.getIterator(arr)
|
||||
CallExpression(path) {
|
||||
if (notPolyfillOrDoesUseBuiltIns) return;
|
||||
if (!injectCoreJS2) return;
|
||||
|
||||
// we can't compile this
|
||||
if (path.node.arguments.length) return;
|
||||
@ -146,7 +191,7 @@ export default declare((api, options) => {
|
||||
|
||||
// Symbol.iterator in arr -> core.$for.isIterable(arr)
|
||||
BinaryExpression(path) {
|
||||
if (notPolyfillOrDoesUseBuiltIns) return;
|
||||
if (!injectCoreJS2) return;
|
||||
|
||||
if (path.node.operator !== "in") return;
|
||||
if (!path.get("left").matchesPattern("Symbol.iterator")) return;
|
||||
@ -165,7 +210,7 @@ export default declare((api, options) => {
|
||||
// Array.from -> _core.Array.from
|
||||
MemberExpression: {
|
||||
enter(path) {
|
||||
if (notPolyfillOrDoesUseBuiltIns) return;
|
||||
if (!injectCoreJS2) return;
|
||||
if (!path.isReferenced()) return;
|
||||
|
||||
const { node } = path;
|
||||
@ -203,7 +248,7 @@ export default declare((api, options) => {
|
||||
},
|
||||
|
||||
exit(path) {
|
||||
if (notPolyfillOrDoesUseBuiltIns) return;
|
||||
if (!injectCoreJS2) return;
|
||||
if (!path.isReferenced()) return;
|
||||
|
||||
const { node } = path;
|
||||
|
||||
@ -1,14 +1,5 @@
|
||||
var _Map = require("@babel/runtime/core-js/map");
|
||||
|
||||
var _Symbol = require("@babel/runtime/core-js/symbol");
|
||||
|
||||
var _Promise = require("@babel/runtime/core-js/promise");
|
||||
|
||||
obj.constructor === Object;
|
||||
obj.constructor === _Promise;
|
||||
|
||||
_Symbol();
|
||||
|
||||
_Symbol("test");
|
||||
|
||||
new _Map();
|
||||
obj.constructor === Promise;
|
||||
Symbol();
|
||||
Symbol("test");
|
||||
new Map();
|
||||
|
||||
@ -1,3 +1 @@
|
||||
var _Promise = require("@babel/runtime/core-js/promise");
|
||||
|
||||
_Promise.resolve;
|
||||
Promise.resolve;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
var _classCallCheck = require("@babel/runtime/helpers/classCallCheck");
|
||||
var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck");
|
||||
|
||||
let Foo = function Foo() {
|
||||
"use strict";
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
import foo, * as bar from "someModule";
|
||||
|
||||
export const myWord = Symbol("abc");
|
||||
export function* giveWord () {
|
||||
yield myWord;
|
||||
}
|
||||
|
||||
foo;
|
||||
bar;
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"plugins": [["transform-runtime", { "moduleName": "foo" }], "transform-regenerator"]
|
||||
}
|
||||
@ -1,24 +0,0 @@
|
||||
import _regeneratorRuntime from "foo/regenerator";
|
||||
import _Symbol from "foo/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;
|
||||
@ -1,11 +1,9 @@
|
||||
var _getIterator = require("@babel/runtime/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) {
|
||||
for (var _iterator = arr[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
||||
var i = _step.value;
|
||||
}
|
||||
} catch (err) {
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
||||
import _Symbol from "@babel/runtime/core-js/symbol";
|
||||
|
||||
var _marked =
|
||||
/*#__PURE__*/
|
||||
_regeneratorRuntime.mark(giveWord);
|
||||
|
||||
import foo, * as bar from "someModule";
|
||||
export const myWord = _Symbol("abc");
|
||||
export const myWord = Symbol("abc");
|
||||
export function giveWord() {
|
||||
return _regeneratorRuntime.wrap(function giveWord$(_context) {
|
||||
while (1) switch (_context.prev = _context.next) {
|
||||
|
||||
@ -1,10 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
|
||||
var _Object$defineProperty = require("@babel/runtime/core-js/object/define-property");
|
||||
|
||||
var _Object$keys = require("@babel/runtime/core-js/object/keys");
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/builtin/interopRequireDefault");
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
@ -14,15 +10,13 @@ var _bar = _interopRequireDefault(require("bar"));
|
||||
|
||||
var _mod = require("mod");
|
||||
|
||||
_Object$keys(_mod).forEach(function (key) {
|
||||
Object.keys(_mod).forEach(function (key) {
|
||||
if (key === "default" || key === "__esModule") return;
|
||||
|
||||
_Object$defineProperty(exports, key, {
|
||||
Object.defineProperty(exports, key, {
|
||||
enumerable: true,
|
||||
get: function () {
|
||||
return _mod[key];
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
_bar.default;
|
||||
|
||||
@ -1,3 +1 @@
|
||||
var _isIterable = require("@babel/runtime/core-js/is-iterable");
|
||||
|
||||
_isIterable(Object(arr));
|
||||
Symbol.iterator in Object(arr);
|
||||
|
||||
@ -1,3 +1 @@
|
||||
var _Symbol$iterator = require("@babel/runtime/core-js/symbol/iterator");
|
||||
|
||||
_Symbol$iterator;
|
||||
Symbol.iterator;
|
||||
|
||||
@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": [["transform-runtime", { "corejsVersion": 2, "useESModules": true }], "transform-classes"]
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
var _classCallCheck = require("@babel/runtime/helpers/builtin/classCallCheck");
|
||||
var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck");
|
||||
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/possibleConstructorReturn");
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn");
|
||||
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/builtin/getPrototypeOf");
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf");
|
||||
|
||||
var _inherits = require("@babel/runtime/helpers/builtin/inherits");
|
||||
var _inherits = require("@babel/runtime/helpers/es6/inherits");
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
3
packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json
vendored
Normal file
3
packages/babel-plugin-transform-runtime/test/fixtures/use-options/corejsVersion/options.json
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"plugins": [["transform-runtime", { "corejsVersion": 2 }], "transform-classes"]
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
var _classCallCheck = require("@babel/runtime/helpers/builtin/es6/classCallCheck");
|
||||
var _classCallCheck = require("@babel/runtime/helpers/classCallCheck");
|
||||
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/builtin/es6/possibleConstructorReturn");
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/possibleConstructorReturn");
|
||||
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/builtin/es6/getPrototypeOf");
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/getPrototypeOf");
|
||||
|
||||
var _inherits = require("@babel/runtime/helpers/builtin/es6/inherits");
|
||||
var _inherits = require("@babel/runtime/helpers/inherits");
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"plugins": [["transform-runtime", { "useBuiltIns": true, "useESModules": true }], "transform-classes"]
|
||||
}
|
||||
@ -1,3 +0,0 @@
|
||||
{
|
||||
"plugins": [["transform-runtime", { "useBuiltIns": true }], "transform-classes"]
|
||||
}
|
||||
@ -1,10 +1,10 @@
|
||||
var _classCallCheck = require("@babel/runtime/helpers/es6/classCallCheck");
|
||||
var _classCallCheck = require("@babel/runtime/helpers/es6/builtin/classCallCheck");
|
||||
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/possibleConstructorReturn");
|
||||
var _possibleConstructorReturn = require("@babel/runtime/helpers/es6/builtin/possibleConstructorReturn");
|
||||
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/es6/getPrototypeOf");
|
||||
var _getPrototypeOf = require("@babel/runtime/helpers/es6/builtin/getPrototypeOf");
|
||||
|
||||
var _inherits = require("@babel/runtime/helpers/es6/inherits");
|
||||
var _inherits = require("@babel/runtime/helpers/es6/builtin/inherits");
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user