diff --git a/src/babel/transformation/file/index.js b/src/babel/transformation/file/index.js index 94c92d9117..c83194fdfe 100644 --- a/src/babel/transformation/file/index.js +++ b/src/babel/transformation/file/index.js @@ -62,7 +62,6 @@ export default class File { "create-decorated-object", "tagged-template-literal", "tagged-template-literal-loose", - "interop-require", "to-array", "to-consumable-array", "sliced-to-array", @@ -74,6 +73,7 @@ export default class File { "define-property", "async-to-generator", "interop-require-wildcard", + "interop-require-default", "typeof", "extends", "get", @@ -83,7 +83,10 @@ export default class File { "temporal-undefined", "temporal-assert-defined", "self-global", - "default-props" + "default-props", + + // legacy + "interop-require", ]; static soloHelpers = [ diff --git a/src/babel/transformation/modules/common.js b/src/babel/transformation/modules/common.js index 20527e71ae..0679e2ed76 100644 --- a/src/babel/transformation/modules/common.js +++ b/src/babel/transformation/modules/common.js @@ -55,7 +55,7 @@ export default class CommonJSFormatter extends DefaultFormatter { var uid = this.scope.generateUidBasedOnNode(node, "import"); nodes.push(t.variableDeclaration("var", [ - t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-wildcard"), [ref])) + t.variableDeclarator(uid, t.callExpression(this.file.addHelper("interop-require-default"), [ref])) ])); this.internalRemap[variableName.name] = t.memberExpression(uid, t.identifier("default")); diff --git a/src/babel/transformation/templates/helper-interop-require-default.js b/src/babel/transformation/templates/helper-interop-require-default.js new file mode 100644 index 0000000000..495e2ee2d0 --- /dev/null +++ b/src/babel/transformation/templates/helper-interop-require-default.js @@ -0,0 +1,3 @@ +(function (obj) { + return obj && obj.__esModule ? obj : { default: obj }; +}) diff --git a/src/babel/transformation/templates/helper-interop-require-wildcard.js b/src/babel/transformation/templates/helper-interop-require-wildcard.js index 6e4e95f3f6..61411d8723 100644 --- a/src/babel/transformation/templates/helper-interop-require-wildcard.js +++ b/src/babel/transformation/templates/helper-interop-require-wildcard.js @@ -2,15 +2,13 @@ if (obj && obj.__esModule) { return obj; } else { - var hop = Object.prototype.hasOwnProperty; - var es_obj = { "default": obj }; + var newObj = {}; if (typeof obj === "object" && obj !== null) { for (var key in obj) { - if (key !== "default" && hop.call(obj, key)) { - es_obj[key] = obj[key]; - } + if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } - return es_obj; + newObj.default = obj; + return newObj; } }) diff --git a/test/core/fixtures/transformation/es6.modules-amd/exports-from/expected.js b/test/core/fixtures/transformation/es6.modules-amd/exports-from/expected.js index 996f66aea3..db5a7c3606 100644 --- a/test/core/fixtures/transformation/es6.modules-amd/exports-from/expected.js +++ b/test/core/fixtures/transformation/es6.modules-amd/exports-from/expected.js @@ -1,7 +1,7 @@ define(["exports", "foo"], function (exports, _foo) { "use strict"; - var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; + var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }; var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; @@ -53,4 +53,4 @@ define(["exports", "foo"], function (exports, _foo) { return _foo.bar; } }); -}); +}); \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/exports-from/expected.js b/test/core/fixtures/transformation/es6.modules-common/exports-from/expected.js index 1a75c39e4a..9ab68d6c9d 100644 --- a/test/core/fixtures/transformation/es6.modules-common/exports-from/expected.js +++ b/test/core/fixtures/transformation/es6.modules-common/exports-from/expected.js @@ -1,6 +1,6 @@ "use strict"; -var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; +var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }; var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; @@ -53,4 +53,4 @@ Object.defineProperty(exports, "bar", { get: function get() { return _foo.bar; } -}); +}); \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/imports-default/expected.js b/test/core/fixtures/transformation/es6.modules-common/imports-default/expected.js index e2402e5892..e746b176e9 100644 --- a/test/core/fixtures/transformation/es6.modules-common/imports-default/expected.js +++ b/test/core/fixtures/transformation/es6.modules-common/imports-default/expected.js @@ -1,12 +1,10 @@ "use strict"; -var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; - var _foo = require("foo"); -var _foo2 = _interopRequireWildcard(_foo); +var _foo2 = babelHelpers.interopRequireDefault(_foo); -var _foo22 = _interopRequireWildcard(_foo); +var _foo22 = babelHelpers.interopRequireDefault(_foo); _foo2["default"]; -_foo22["default"]; +_foo22["default"]; \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/imports-default/options.json b/test/core/fixtures/transformation/es6.modules-common/imports-default/options.json new file mode 100644 index 0000000000..7d6e6cda1c --- /dev/null +++ b/test/core/fixtures/transformation/es6.modules-common/imports-default/options.json @@ -0,0 +1,3 @@ +{ + "externalHelpers": true +} diff --git a/test/core/fixtures/transformation/es6.modules-common/imports-glob/expected.js b/test/core/fixtures/transformation/es6.modules-common/imports-glob/expected.js index 7122feb0d4..ef361817e2 100644 --- a/test/core/fixtures/transformation/es6.modules-common/imports-glob/expected.js +++ b/test/core/fixtures/transformation/es6.modules-common/imports-glob/expected.js @@ -1,7 +1,7 @@ "use strict"; -var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; +var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }; var _import = require("foo"); -var foo = _interopRequireWildcard(_import); +var foo = _interopRequireWildcard(_import); \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/imports-mixing/expected.js b/test/core/fixtures/transformation/es6.modules-common/imports-mixing/expected.js index 23c26deb1d..a12225a350 100644 --- a/test/core/fixtures/transformation/es6.modules-common/imports-mixing/expected.js +++ b/test/core/fixtures/transformation/es6.modules-common/imports-mixing/expected.js @@ -1,10 +1,8 @@ "use strict"; -var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; - var _foo$xyz = require("foo"); -var _foo$xyz2 = _interopRequireWildcard(_foo$xyz); +var _foo$xyz2 = babelHelpers.interopRequireDefault(_foo$xyz); _foo$xyz2["default"]; -_foo$xyz.baz; +_foo$xyz.baz; \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/imports-mixing/options.json b/test/core/fixtures/transformation/es6.modules-common/imports-mixing/options.json new file mode 100644 index 0000000000..7d6e6cda1c --- /dev/null +++ b/test/core/fixtures/transformation/es6.modules-common/imports-mixing/options.json @@ -0,0 +1,3 @@ +{ + "externalHelpers": true +} diff --git a/test/core/fixtures/transformation/es6.modules-common/overview/expected.js b/test/core/fixtures/transformation/es6.modules-common/overview/expected.js index 3505641d79..55be7569e4 100644 --- a/test/core/fixtures/transformation/es6.modules-common/overview/expected.js +++ b/test/core/fixtures/transformation/es6.modules-common/overview/expected.js @@ -1,7 +1,5 @@ "use strict"; -var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; - Object.defineProperty(exports, "__esModule", { value: true }); @@ -14,11 +12,11 @@ require("./directory/foo-bar"); var _foo = require("foo2"); -var _foo2 = _interopRequireWildcard(_foo); +var _foo2 = babelHelpers.interopRequireDefault(_foo); var _import = require("foo3"); -var foo2 = _interopRequireWildcard(_import); +var foo2 = babelHelpers.interopRequireWildcard(_import); var _bar = require("foo4"); @@ -30,4 +28,4 @@ var test = 5; exports.test = test; _bar.bar; _bar2.foo; -_foo2["default"]; +_foo2["default"]; \ No newline at end of file diff --git a/test/core/fixtures/transformation/es6.modules-common/overview/options.json b/test/core/fixtures/transformation/es6.modules-common/overview/options.json new file mode 100644 index 0000000000..7d6e6cda1c --- /dev/null +++ b/test/core/fixtures/transformation/es6.modules-common/overview/options.json @@ -0,0 +1,3 @@ +{ + "externalHelpers": true +} diff --git a/test/core/fixtures/transformation/es6.modules-umd/exports-from/expected.js b/test/core/fixtures/transformation/es6.modules-umd/exports-from/expected.js index 55390f918b..85293a2999 100644 --- a/test/core/fixtures/transformation/es6.modules-umd/exports-from/expected.js +++ b/test/core/fixtures/transformation/es6.modules-umd/exports-from/expected.js @@ -13,7 +13,7 @@ })(this, function (exports, _foo) { "use strict"; - var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var hop = Object.prototype.hasOwnProperty; var es_obj = { "default": obj }; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (key !== "default" && hop.call(obj, key)) { es_obj[key] = obj[key]; } } } return es_obj; } }; + var _interopRequireWildcard = function (obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (typeof obj === "object" && obj !== null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj["default"] = obj; return newObj; } }; var _defaults = function (obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }; @@ -65,4 +65,4 @@ return _foo.bar; } }); -}); +}); \ No newline at end of file diff --git a/test/core/fixtures/transformation/es7.decorators/class-modules/expected.js b/test/core/fixtures/transformation/es7.decorators/class-modules/expected.js index a061a0b3de..730b97d0ad 100644 --- a/test/core/fixtures/transformation/es7.decorators/class-modules/expected.js +++ b/test/core/fixtures/transformation/es7.decorators/class-modules/expected.js @@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { var _foo = require("foo"); -var _foo2 = babelHelpers.interopRequireWildcard(_foo); +var _foo2 = babelHelpers.interopRequireDefault(_foo); var Foo = (function () { function Foo() { diff --git a/test/core/fixtures/transformation/es7.export-extensions/default-commonjs/expected.js b/test/core/fixtures/transformation/es7.export-extensions/default-commonjs/expected.js index a6080cb65e..40f2fd7f7d 100644 --- a/test/core/fixtures/transformation/es7.export-extensions/default-commonjs/expected.js +++ b/test/core/fixtures/transformation/es7.export-extensions/default-commonjs/expected.js @@ -6,6 +6,6 @@ Object.defineProperty(exports, "__esModule", { var _foo2 = require("bar"); -var _foo3 = babelHelpers.interopRequireWildcard(_foo2); +var _foo3 = babelHelpers.interopRequireDefault(_foo2); -exports.foo = _foo3["default"]; \ No newline at end of file +exports.foo = _foo3["default"]; diff --git a/test/core/fixtures/transformation/misc/regression-lodash-tostring-import/expected.js b/test/core/fixtures/transformation/misc/regression-lodash-tostring-import/expected.js index 86d5e19c3d..b7470e7ab4 100644 --- a/test/core/fixtures/transformation/misc/regression-lodash-tostring-import/expected.js +++ b/test/core/fixtures/transformation/misc/regression-lodash-tostring-import/expected.js @@ -2,6 +2,6 @@ var _toString = require("foo"); -var _toString2 = babelHelpers.interopRequireWildcard(_toString); +var _toString2 = babelHelpers.interopRequireDefault(_toString); _toString2["default"]; diff --git a/test/core/fixtures/transformation/runtime/full/expected.js b/test/core/fixtures/transformation/runtime/full/expected.js index 309d9659c8..e6f5afb696 100644 --- a/test/core/fixtures/transformation/runtime/full/expected.js +++ b/test/core/fixtures/transformation/runtime/full/expected.js @@ -4,6 +4,8 @@ var _Symbol = require("babel-runtime/core-js/symbol")["default"]; var _regeneratorRuntime = require("babel-runtime/regenerator")["default"]; +var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"]; + var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"]; Object.defineProperty(exports, "__esModule", { @@ -14,7 +16,7 @@ var marked0$0 = [giveWord].map(_regeneratorRuntime.mark); var _foo = require("someModule"); -var _foo2 = _interopRequireWildcard(_foo); +var _foo2 = _interopRequireDefault(_foo); var bar = _interopRequireWildcard(_foo); diff --git a/test/core/fixtures/transformation/runtime/modules-common/expected.js b/test/core/fixtures/transformation/runtime/modules-common/expected.js index 83da9d72d2..97bff324fb 100644 --- a/test/core/fixtures/transformation/runtime/modules-common/expected.js +++ b/test/core/fixtures/transformation/runtime/modules-common/expected.js @@ -1,9 +1,9 @@ "use strict"; -var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"]; +var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"]; var _foo = require("foo"); -var _foo2 = _interopRequireWildcard(_foo); +var _foo2 = _interopRequireDefault(_foo); -_foo2["default"]; \ No newline at end of file +_foo2["default"]; diff --git a/test/core/fixtures/transformation/spec.function-name/modules-2/expected.js b/test/core/fixtures/transformation/spec.function-name/modules-2/expected.js index a30628860c..5c833ee601 100644 --- a/test/core/fixtures/transformation/spec.function-name/modules-2/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/modules-2/expected.js @@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { var _last2 = require("lodash/array/last"); -var _last3 = babelHelpers.interopRequireWildcard(_last2); +var _last3 = babelHelpers.interopRequireDefault(_last2); var Container = (function () { function Container() { diff --git a/test/core/fixtures/transformation/spec.function-name/modules/expected.js b/test/core/fixtures/transformation/spec.function-name/modules/expected.js index e300cd5a3f..0bb896b81e 100644 --- a/test/core/fixtures/transformation/spec.function-name/modules/expected.js +++ b/test/core/fixtures/transformation/spec.function-name/modules/expected.js @@ -2,7 +2,7 @@ var _events2 = require("events"); -var _events3 = babelHelpers.interopRequireWildcard(_events2); +var _events3 = babelHelpers.interopRequireDefault(_events2); var Template = (function () { function Template() {