Use the imports helper in transform-runtime.
This commit is contained in:
@@ -8,6 +8,9 @@
|
||||
"keywords": [
|
||||
"babel-plugin"
|
||||
],
|
||||
"dependencies": {
|
||||
"babel-helper-module-imports": "7.0.0-beta.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-helper-plugin-test-runner": "7.0.0-beta.2"
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import { addDefault, isModule } from "babel-helper-module-imports";
|
||||
|
||||
import definitions from "./definitions";
|
||||
|
||||
export default function({ types: t }) {
|
||||
@@ -9,7 +11,7 @@ export default function({ types: t }) {
|
||||
return Object.prototype.hasOwnProperty.call(obj, key);
|
||||
}
|
||||
|
||||
const HELPER_BLACKLIST = ["interopRequireWildcard", "interopRequireDefault"];
|
||||
const HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"];
|
||||
|
||||
return {
|
||||
pre(file) {
|
||||
@@ -23,12 +25,19 @@ export default function({ types: t }) {
|
||||
? `${baseHelpersDir}/es6`
|
||||
: baseHelpersDir;
|
||||
file.set("helperGenerator", name => {
|
||||
if (HELPER_BLACKLIST.indexOf(name) < 0) {
|
||||
return this.addDefaultImport(
|
||||
`${moduleName}/${helpersDir}/${name}`,
|
||||
name,
|
||||
);
|
||||
}
|
||||
const isInteropHelper = HEADER_HELPERS.indexOf(name) !== -1;
|
||||
|
||||
// Explicitly set the CommonJS interop helpers to their reserve
|
||||
// blockHoist of 4 so they are guaranteed to exist
|
||||
// when other things used them to import.
|
||||
const blockHoist =
|
||||
isInteropHelper && !isModule(file.path) ? 4 : undefined;
|
||||
|
||||
return this.addDefaultImport(
|
||||
`${moduleName}/${helpersDir}/${name}`,
|
||||
name,
|
||||
blockHoist,
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
@@ -40,8 +49,28 @@ export default function({ types: t }) {
|
||||
|
||||
this.moduleName = moduleName;
|
||||
|
||||
this.addDefaultImport = (source, nameHint) => {
|
||||
return file.addImport(source, "default", nameHint);
|
||||
const cache = new Map();
|
||||
|
||||
this.addDefaultImport = (source, nameHint, blockHoist) => {
|
||||
// If something on the page adds a helper when the file is an ES6
|
||||
// file, we can't reused the cached helper name after things have been
|
||||
// transformed because it has almost certainly been renamed.
|
||||
const cacheKey = isModule(file.path);
|
||||
const key = `${source}:${nameHint}:${cacheKey || ""}`;
|
||||
|
||||
let cached = cache.get(key);
|
||||
if (cached) {
|
||||
cached = t.cloneDeep(cached);
|
||||
} else {
|
||||
cached = addDefault(file.path, source, {
|
||||
importedInterop: "compiled",
|
||||
nameHint,
|
||||
blockHoist,
|
||||
});
|
||||
|
||||
cache.set(key, cached);
|
||||
}
|
||||
return cached;
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
import _Map from "babel-runtime/core-js/map";
|
||||
import _Symbol from "babel-runtime/core-js/symbol";
|
||||
import _Promise from "babel-runtime/core-js/promise";
|
||||
var _Map = require("babel-runtime/core-js/map").default;
|
||||
|
||||
var _Symbol = require("babel-runtime/core-js/symbol").default;
|
||||
|
||||
var _Promise = require("babel-runtime/core-js/promise").default;
|
||||
|
||||
obj.constructor === Object;
|
||||
obj.constructor === _Promise;
|
||||
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
import _Promise from "babel-runtime/core-js/promise";
|
||||
var _Promise = require("babel-runtime/core-js/promise").default;
|
||||
|
||||
_Promise.resolve;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import _classCallCheck from "babel-runtime/helpers/classCallCheck";
|
||||
var _classCallCheck = require("babel-runtime/helpers/classCallCheck").default;
|
||||
|
||||
let Foo = function Foo() {
|
||||
_classCallCheck(this, Foo);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import _getIterator from "babel-runtime/core-js/get-iterator";
|
||||
var _getIterator = require("babel-runtime/core-js/get-iterator").default;
|
||||
|
||||
var _iteratorNormalCompletion = true;
|
||||
var _didIteratorError = false;
|
||||
var _iteratorError = undefined;
|
||||
|
||||
5
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/actual.mjs
vendored
Normal file
5
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/actual.mjs
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
import foo from "foo";
|
||||
|
||||
class Example {
|
||||
method() {}
|
||||
}
|
||||
23
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/expected.js
vendored
Normal file
23
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/expected.js
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("babel-runtime/helpers/interopRequireDefault").default;
|
||||
|
||||
var _classCallCheck2 = _interopRequireDefault(require("babel-runtime/helpers/classCallCheck"));
|
||||
|
||||
var _createClass2 = _interopRequireDefault(require("babel-runtime/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;
|
||||
}();
|
||||
7
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/options.json
vendored
Normal file
7
packages/babel-plugin-transform-runtime/test/fixtures/runtime/modules-helpers/options.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"plugins": [
|
||||
"transform-runtime",
|
||||
"transform-es2015-modules-commonjs",
|
||||
"transform-es2015-classes"
|
||||
]
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
"use strict";
|
||||
|
||||
import _Object$defineProperty from "babel-runtime/core-js/object/define-property";
|
||||
import _Object$keys from "babel-runtime/core-js/object/keys";
|
||||
var _interopRequireDefault = require("babel-runtime/helpers/interopRequireDefault").default;
|
||||
|
||||
var _Object$defineProperty = require("babel-runtime/core-js/object/define-property").default;
|
||||
|
||||
var _Object$keys = require("babel-runtime/core-js/object/keys").default;
|
||||
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
@@ -21,6 +25,4 @@ _Object$keys(_mod).forEach(function (key) {
|
||||
});
|
||||
});
|
||||
|
||||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
||||
|
||||
_bar.default;
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import _regeneratorRuntime from "babel-runtime/regenerator";
|
||||
var _regeneratorRuntime = require("babel-runtime/regenerator").default;
|
||||
|
||||
void
|
||||
/*#__PURE__*/
|
||||
_regeneratorRuntime.mark(function _callee() {
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
import _isIterable from "babel-runtime/core-js/is-iterable";
|
||||
var _isIterable = require("babel-runtime/core-js/is-iterable").default;
|
||||
|
||||
_isIterable(Object(arr));
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
import _Symbol$iterator from "babel-runtime/core-js/symbol/iterator";
|
||||
var _Symbol$iterator = require("babel-runtime/core-js/symbol/iterator").default;
|
||||
|
||||
_Symbol$iterator;
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import _classCallCheck from "babel-runtime/helpers/builtin/es6/classCallCheck";
|
||||
import _possibleConstructorReturn from "babel-runtime/helpers/builtin/es6/possibleConstructorReturn";
|
||||
import _inherits from "babel-runtime/helpers/builtin/es6/inherits";
|
||||
var _classCallCheck = require("babel-runtime/helpers/builtin/es6/classCallCheck").default;
|
||||
|
||||
var _possibleConstructorReturn = require("babel-runtime/helpers/builtin/es6/possibleConstructorReturn").default;
|
||||
|
||||
var _inherits = require("babel-runtime/helpers/builtin/es6/inherits").default;
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import _classCallCheck from "babel-runtime/helpers/builtin/classCallCheck";
|
||||
import _possibleConstructorReturn from "babel-runtime/helpers/builtin/possibleConstructorReturn";
|
||||
import _inherits from "babel-runtime/helpers/builtin/inherits";
|
||||
var _classCallCheck = require("babel-runtime/helpers/builtin/classCallCheck").default;
|
||||
|
||||
var _possibleConstructorReturn = require("babel-runtime/helpers/builtin/possibleConstructorReturn").default;
|
||||
|
||||
var _inherits = require("babel-runtime/helpers/builtin/inherits").default;
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
import _Object$getPrototypeOf from "babel-runtime/core-js/object/get-prototype-of";
|
||||
import _classCallCheck from "babel-runtime/helpers/es6/classCallCheck";
|
||||
import _possibleConstructorReturn from "babel-runtime/helpers/es6/possibleConstructorReturn";
|
||||
import _inherits from "babel-runtime/helpers/es6/inherits";
|
||||
var _Object$getPrototypeOf = require("babel-runtime/core-js/object/get-prototype-of").default;
|
||||
|
||||
var _classCallCheck = require("babel-runtime/helpers/es6/classCallCheck").default;
|
||||
|
||||
var _possibleConstructorReturn = require("babel-runtime/helpers/es6/possibleConstructorReturn").default;
|
||||
|
||||
var _inherits = require("babel-runtime/helpers/es6/inherits").default;
|
||||
|
||||
let Foo =
|
||||
/*#__PURE__*/
|
||||
|
||||
Reference in New Issue
Block a user