Use supportsStaticESM to toggle runtime module usage. (#8520)

This commit is contained in:
Logan Smyth
2018-08-24 10:48:47 -07:00
committed by GitHub
parent e841ccca34
commit 39fa102ee8
9 changed files with 75 additions and 3 deletions

View File

@@ -25,6 +25,10 @@ function resolveAbsoluteRuntime(moduleName: string, dirname: string) {
}
}
function supportsStaticESM(caller) {
return !!(caller && caller.supportsStaticESM);
}
export default declare((api, options, dirname) => {
api.assertVersion(7);
@@ -45,9 +49,9 @@ export default declare((api, options, dirname) => {
if (typeof useRuntimeHelpers !== "boolean") {
throw new Error("The 'helpers' option must be undefined, or a boolean.");
}
if (typeof useESModules !== "boolean") {
if (typeof useESModules !== "boolean" && useESModules !== "auto") {
throw new Error(
"The 'useESModules' option must be undefined, or a boolean.",
"The 'useESModules' option must be undefined, or a boolean, or 'auto'.",
);
}
if (
@@ -107,6 +111,9 @@ export default declare((api, options, dirname) => {
);
}
const esModules =
useESModules === "auto" ? api.caller(supportsStaticESM) : useESModules;
const injectCoreJS2 = `${corejsVersion}` === "2";
const moduleName = injectCoreJS2
? "@babel/runtime-corejs2"
@@ -145,7 +152,7 @@ export default declare((api, options, dirname) => {
isInteropHelper && !isModule(file.path) ? 4 : undefined;
const helpersDir =
useESModules && file.path.node.sourceType === "module"
esModules && file.path.node.sourceType === "module"
? "helpers/esm"
: "helpers";

View File

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

View File

@@ -0,0 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": "auto" }], "transform-classes"]
}

View File

@@ -0,0 +1,23 @@
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,3 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": true }], "transform-classes"]
}

View File

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

View File

@@ -0,0 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": "auto" }], "transform-classes"]
}

View File

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

View File

@@ -1,3 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": true }], "transform-classes"]
}