Skip to content

Commit

Permalink
Use supportsStaticESM to toggle runtime module usage. (#8520)
Browse files Browse the repository at this point in the history
  • Loading branch information
loganfsmyth committed Aug 24, 2018
1 parent e841ccc commit 39fa102
Show file tree
Hide file tree
Showing 9 changed files with 75 additions and 3 deletions.
13 changes: 10 additions & 3 deletions packages/babel-plugin-transform-runtime/src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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 (
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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";

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
class Foo extends Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": "auto" }], "transform-classes"]
}
Original file line number Diff line number Diff line change
@@ -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);
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": true }], "transform-classes"]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
class Foo extends Bar {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": "auto" }], "transform-classes"]
}
Original file line number Diff line number Diff line change
@@ -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);
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
{
"caller": {
"name": "babel-test",
"supportsStaticESM": true
},
"plugins": [["transform-runtime", { "useESModules": true }], "transform-classes"]
}

0 comments on commit 39fa102

Please sign in to comment.