Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Align named imports behavior in .mjs and .js files #14366

Merged
merged 2 commits into from Mar 22, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 6 additions & 5 deletions packages/babel-plugin-transform-modules-commonjs/src/index.ts
Expand Up @@ -19,13 +19,14 @@ export default declare((api, options) => {
const transformImportCall = createDynamicImportTransform(api);

const {
// 'true' for non-mjs files to strictly have .default, instead of having
// destructuring-like behavior for their properties.
// 'true' for imports to strictly have .default, instead of having
// destructuring-like behavior for their properties. This matches the behavior
// of the initial Node.js (v12) behavior when importing a CommonJS without
// the __esMoule property.
// .strictNamespace is for non-mjs files, mjsStrictNamespace if for mjs files.
strictNamespace = false,
mjsStrictNamespace = strictNamespace,

// 'true' for mjs files to strictly have .default, instead of having
// destructuring-like behavior for their properties.
mjsStrictNamespace = true,
allowTopLevelThis,
strict,
strictMode,
Expand Down
Expand Up @@ -31,7 +31,7 @@ _foo2 = babelHelpers.interopRequireDefault(require("foo2"))

var
/*before*/
foo2 = babelHelpers.interopRequireDefault(require("foo3"))
foo2 = babelHelpers.interopRequireWildcard(require("foo3"))
/*after*/
;

Expand Down
@@ -1,7 +1,7 @@
"use strict";

function foo() {
const data = babelHelpers.interopRequireDefault(require("foo"));
const data = babelHelpers.interopRequireWildcard(require("foo"));

foo = function () {
return data;
Expand Down
Expand Up @@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
exports.namespace = void 0;

function namespace() {
const data = babelHelpers.interopRequireDefault(require("foo"));
const data = babelHelpers.interopRequireWildcard(require("foo"));

namespace = function () {
return data;
Expand Down
@@ -1,4 +1,4 @@
"use strict";

var foo = babelHelpers.interopRequireDefault(require("./foo"));
var foo = babelHelpers.interopRequireWildcard(require("./foo"));
console.log(foo);
Expand Up @@ -4,5 +4,5 @@ Object.defineProperty(exports, "__esModule", {
value: true
});
exports.namespace = void 0;
var namespace = babelHelpers.interopRequireDefault(require("./foo"));
var namespace = babelHelpers.interopRequireWildcard(require("./foo"));
exports.namespace = namespace;
@@ -1,7 +1,7 @@
"use strict";

function foo1() {
const data = babelHelpers.interopRequireDefault(require("white"));
const data = babelHelpers.interopRequireWildcard(require("white"));

foo1 = function () {
return data;
Expand All @@ -10,6 +10,6 @@ function foo1() {
return data;
}

var foo2 = babelHelpers.interopRequireDefault(require("black"));
var foo2 = babelHelpers.interopRequireWildcard(require("black"));
console.log(foo1());
console.log(foo2);
Expand Up @@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
exports.namespace2 = exports.namespace1 = void 0;

function namespace1() {
const data = babelHelpers.interopRequireDefault(require("white"));
const data = babelHelpers.interopRequireWildcard(require("white"));

namespace1 = function () {
return data;
Expand All @@ -21,5 +21,5 @@ Object.defineProperty(exports, "namespace1", {
return namespace1();
}
});
var namespace2 = babelHelpers.interopRequireDefault(require("black"));
var namespace2 = babelHelpers.interopRequireWildcard(require("black"));
exports.namespace2 = namespace2;
@@ -1,5 +1,5 @@
// No exception should be thrown
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

File renamed because our runner doesn't actually run exec.mjs files.

import * as foo from "./moduleWithGetter";

expect(foo.baz).toBe(123);
expect(() => foo.boo).toThrow();

// No exception should be thrown
@@ -1,3 +1,3 @@
{
"plugins": [["transform-modules-commonjs", { "mjsStrictNamespace": false }]]
"plugins": ["transform-modules-commonjs"]
}
@@ -1,3 +1,4 @@
// No exception should be thrown
import Foo, { baz } from "./moduleWithGetter";

// No exception should be thrown
expect(baz).toBe(123);
Expand Up @@ -16,6 +16,8 @@ Object.defineProperty(exports, "baz", {
}
});

var _moduleWithGetter = _interopRequireDefault(require("./moduleWithGetter"));
var _moduleWithGetter = _interopRequireWildcard(require("./moduleWithGetter"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
Expand Up @@ -2,10 +2,14 @@

var _foo = _interopRequireDefault(require("foo"));

var Bar = _interopRequireDefault(require("bar"));
var Bar = _interopRequireWildcard(require("bar"));

var _baz = require("baz");

function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }

function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

_foo.default = (42, function () {
Expand Down
Expand Up @@ -6,7 +6,7 @@ var _two = require("two");

var _three = require("three");

var aNamespace = babelHelpers.interopRequireDefault(require("four"));
var aNamespace = babelHelpers.interopRequireWildcard(require("four"));
console.log(_one.default);
console.log(_two.aNamed);
console.log(_three.orig);
Expand Down
@@ -1,7 +1,7 @@
"use strict";

function mod() {
const data = babelHelpers.interopRequireDefault(require("mod"));
const data = babelHelpers.interopRequireWildcard(require("mod"));

mod = function () {
return data;
Expand Down
@@ -1,8 +1,3 @@
{
"plugins": [
[
"transform-modules-commonjs",
{ "strict": true, "mjsStrictNamespace": false }
]
]
"plugins": [["transform-modules-commonjs", { "strict": true }]]
}